Beispiel #1
0
 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
Beispiel #2
0
    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"])
Beispiel #3
0
    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'
                    ]
                )
Beispiel #4
0
    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()