From 7d54af79285cca2cbfbacdd10ea3762ec6843f51 Mon Sep 17 00:00:00 2001 From: Jean-Paul Calderone Date: Wed, 21 Oct 2020 09:46:14 -0400 Subject: [PATCH] re-use our other renderer --- src/allmydata/test/test_checker.py | 49 +++++++++++++----------------- 1 file changed, 21 insertions(+), 28 deletions(-) diff --git a/src/allmydata/test/test_checker.py b/src/allmydata/test/test_checker.py index 3813ac199..3e16830e4 100644 --- a/src/allmydata/test/test_checker.py +++ b/src/allmydata/test/test_checker.py @@ -20,18 +20,16 @@ from bs4 import BeautifulSoup from twisted.trial import unittest from twisted.internet import defer -# We need to use `nevow.inevow.IRequest` for now for compatibility -# with the code in web/common.py. Once nevow bits are gone from -# web/common.py, we can use `twisted.web.iweb.IRequest` here. -if PY2: - from nevow.inevow import IRequest -else: - from twisted.web.iweb import IRequest - from zope.interface import implementer from twisted.web.server import Request from twisted.web.test.requesthelper import DummyChannel from twisted.web.template import flattenString +from twisted.web.resource import ( + Resource, +) +from twisted.web.template import ( + renderElement, +) from allmydata import check_results, uri from allmydata import uri as tahoe_uri @@ -41,6 +39,9 @@ from allmydata.interfaces import ( ICheckAndRepairResults, ) from allmydata.util import base32 +from allmydata.webish import ( + TahoeLAFSRequest, +) from allmydata.web import check_results as web_check_results from allmydata.storage_client import StorageFarmBroker, NativeStorageServer from allmydata.storage.server import storage_index_to_dir @@ -65,24 +66,6 @@ class FakeClient(object): def get_storage_broker(self): return self.storage_broker -@implementer(IRequest) -class TestRequest(Request, object): - """ - A minimal Request class to use in tests. - - XXX: We have to have this class because `common.get_arg()` expects - a `nevow.inevow.IRequest`, which `twisted.web.server.Request` - isn't. The request needs to have `args`, `fields`, `prepath`, and - `postpath` properties so that `allmydata.web.common.get_arg()` - won't complain. - """ - def __init__(self, args=None, fields=None): - super(TestRequest, self).__init__(DummyChannel()) - self.args = args or {} - self.fields = fields or {} - self.prepath = [b""] - self.postpath = [b""] - @implementer(IServer) class FakeServer(object): @@ -154,6 +137,15 @@ class FakeCheckAndRepairResults(object): return self._repair_success +class ElementResource(Resource, object): + def __init__(self, element): + Resource.__init__(self) + self.element = element + + def render(self, request): + return renderElement(request, self.element) + + class WebResultsRendering(unittest.TestCase): @staticmethod @@ -190,8 +182,9 @@ class WebResultsRendering(unittest.TestCase): return self.successResultOf(render(resource, {"output": ["json"]})) def render_element(self, element, args=None): - d = flattenString(TestRequest(args), element) - return self.successResultOf(d) + if args is None: + args = {} + return self.successResultOf(render(ElementResource(element), args)) def test_literal(self): lcr = web_check_results.LiteralCheckResultsRendererElement()