class TestRequest(unittest.TestCase): def setUp(self): self.zopereq = ZopeRequest(default_adj) self.zopereq.received("GET / HTTP/1.1\n\n") self.request = Request(self.zopereq) def testZopeRequestAPI(self): expected = ZOPEREQ_API actual = dir(self.zopereq) self.assertEqual(expected, actual) def testRequestAPI(self): expected = REQUEST_API actual = dir(self.request) self.assertEqual(expected, actual) def testNoBodyStillHasEmailMessageMessage(self): expected = True actual = isinstance(self.request.message, Message) self.assertEqual(expected, actual) def testBadRequestObject(self): self.assertRaises(DoesNotImplement, Request, object())
def make_request(uri, headers=None, Zope=False): if headers is None: headers = {} request = ZopeRequest() request.received("GET %s HTTP/1.1\r\n" % uri) for header in headers.items(): request.received("%s: %s\r\n" % header) request.received('\r\n') if Zope: return request else: return Request(request)
class TestRequest(unittest.TestCase): """These tests cover overall instantiation of a Request. """ def setUp(self): self.request = ZopeRequest(default_adj) def testPostWithBody(self): req = ("POST / HTTP/1.1\r\ncontent-length: 7\r\n\r\nfoo=bar\r\n") self.request.received(req) self.assert_(self.request.completed) def testGetWithNoBody(self): req = "GET / HTTP/1.1\r\nHost: josemaria:5370\r\n\r\n" self.request.received(req) self.assert_(self.request.completed) def testGetWithNoHeadersEither(self): req = "GET / HTTP/1.1\r\n\r\n" self.request.received(req) self.assert_(self.request.completed)
self.config = Config(['-rroot']) self.debug_mode = False self.deploy_mode = True self.devel_mode = False class StubChannel(StringIO): def __init__(self): self.server = StubServer() StringIO.__init__(self) def close_when_done(self): pass request = ZopeRequest(default_adj) request.received("GET / HTTP/1.1\r\n\r\n") def DUMMY_TASK(): return Task(StubChannel(), request) DUMMY_APP = """\ from httpy.Response import Response class Application: def respond(self, request): response = Response(200) response.headers['content-type'] = 'text/plain' response.body = 'Greetings, program!' raise response