def __init__(self, index): Request.__init__( self, name="MyRequest{0}".format(index), urls=[("GET", "/my-request-{0}".format(index))], doc=["My request number {0}.".format(index)], ) self.index = index
def test_reqeust(self): def my_request(environ, start_response): assert isinstance(environ, dict) assert hasattr(start_response, "__call__") return ["ok"] req = Request(my_request) self.assertEqual(req.wsgi_callback, my_request) self.assertEqual(req.name, "my_request") self.assertEqual(req.urls, ((None, "/my_request"),)) self.assertEqual(req.doc, None) req.onload(None) # called by application self.assertEqual(req({}, lambda status, headers: None), ["ok"])
def test_import_requests(self): test_files = ( ( ('__init__.py',), '' ), ( ('test_package', '__init__.py',), '' ), ( ('test_package', 'module.py',), '''\ from chisel import request @request def request1(environ, start_response): return [b'request1'] @request def request2(environ, start_response): return [b'request2'] ''' ), ( ('test_package', 'module2.py',), '' ), ( ('test_package', 'sub', '__init__.py'), '' ), ( ('test_package', 'sub', 'subsub', '__init__.py'), '' ), ( ('test_package', 'sub', 'subsub', 'submodule.py'), '''\ from chisel import request @request def request3(environ, start_response): return [b'request3'] ''' ) ) with self.create_test_files(test_files) as requests_dir: with unittest.mock.patch('sys.path', [requests_dir] + sys.path): self.assertListEqual( sorted(request.name for request in Request.import_requests('test_package')), [ 'request1', 'request2', 'request3' ] )
def test_request_none(self): try: Request() except AssertionError as exc: self.assertEqual(str(exc), "must specify either wsgi_callback and/or name") else: self.fail() req = Request(name="my_request") self.assertEqual(req.wsgi_callback, None) self.assertEqual(req.name, "my_request") self.assertEqual(req.urls, ((None, "/my_request"),)) self.assertEqual(req.doc, None) req.onload(None) # called by application try: req({}, lambda status, headers: None) except AssertionError as exc: self.assertEqual(str(exc), "must specify wsgi_callback when using Request directly") else: self.fail()