コード例 #1
0
    def test_request_gets_input_from_container(self):
        container = App()
        container.bind('WSGI', object)
        container.bind('Environ', wsgi_request)

        for provider in config('providers.providers'):
            provider().load_app(container).register()

        container.bind('Response', 'test')
        container.bind('WebRoutes', [
            Get().route('url', 'TestController@show'),
            Get().route('url/', 'TestController@show'),
            Get().route('url/@firstname', 'TestController@show'),
        ])

        container.bind('Response', 'Route not found. Error 404')

        for provider in config('providers.providers'):
            located_provider = provider().load_app(container)

            container.resolve(located_provider.boot)

        self.assertEqual(container.make('Request').input('application'), 'Masonite')
        self.assertEqual(container.make('Request').all(), {'application': 'Masonite'})
        container.make('Request').environ['REQUEST_METHOD'] = 'POST'
        self.assertEqual(container.make('Request').environ['REQUEST_METHOD'], 'POST')
        self.assertEqual(container.make('Request').input('application'), 'Masonite')
コード例 #2
0
    def test_request_loads_app(self):
        app = App()
        app.bind('Request', self.request)
        app.make('Request').load_app(app)

        self.assertEqual(self.request.app(), app)
        self.assertEqual(app.make('Request').app(), app)
コード例 #3
0
    def test_request_gets_all_headers(self):
        app = App()
        app.bind('Request', Request(wsgi_request))
        request = app.make('Request').load_app(app)

        request.header('TEST1', 'set_this_item')
        self.assertEqual(request.get_headers(), [('TEST1', 'set_this_item')])
コード例 #4
0
    def test_request_sets_int_status_code(self):
        app = App()
        app.bind('Request', self.request)
        request = app.make('Request').load_app(app)

        request.status(500)
        self.assertEqual(request.get_status_code(), '500 Internal Server Error')
コード例 #5
0
    def test_request_gets_int_status(self):
        app = App()
        app.bind('Request', self.request)
        request = app.make('Request').load_app(app)

        request.status(500)
        self.assertEqual(request.get_status(), 500)
コード例 #6
0
    def test_can_get_code_by_value(self):
        app = App()
        app.bind('Request', self.request)
        request = app.make('Request').load_app(app)

        request.status(500)
        self.assertEqual(request._get_status_code_by_value('500 Internal Server Error'), 500)
コード例 #7
0
    def test_gets_input_and_query_with_get_request(self):
        app = App()
        wsgi_environ = generate_wsgi()
        wsgi_environ['QUERY_STRING'] = 'param=1&param=2&param=3&foo=bar&q=yes'
        wsgi_environ['wsgi.input'] = {
            'param': 'hey',
            'foo': [9, 8, 7, 6],
            'bar': 'baz'
        }
        wsgi_environ['REQUEST_METHOD'] = 'GET'

        route_class = Route(wsgi_environ)
        request_class = Request(wsgi_environ)
        app.bind('Request', request_class)
        app.bind('Route', route_class)
        request = app.make('Request').load_app(app)

        self.assertEqual(request.query('param'), '1')
        self.assertEqual(request.all_query()['param'], ['1', '2', '3'])
        self.assertEqual(request.query('foo'), 'bar')
        self.assertEqual(request.query('param', multi=True), ['1', '2', '3'])
        self.assertEqual(request.query('not-exist', default=2), 2)
        self.assertEqual(request.query('not-exist', default=2, multi=True), 2)
        self.assertEqual(request.query('q', default='no'), 'yes')

        self.assertEqual(request.input('foo'), 'bar')
        self.assertEqual(request.input('param'), '1')
        self.assertEqual(request.input('q', default='no'), 'yes')
        self.assertEqual(request.input('bar', default='default'), 'default')
コード例 #8
0
    def test_is_status_code(self):
        app = App()
        app.bind('Request', self.request)
        request = app.make('Request').load_app(app)

        request.status(500)
        self.assertEqual(request.is_status(500), True)
コード例 #9
0
    def test_gets_input_and_query_with_non_get_request(self):
        app = App()

        for method in ['POST', 'PUT', 'DELETE']:
            wsgi_environ = generate_wsgi()
            wsgi_environ['REQUEST_METHOD'] = method
            wsgi_environ[
                'QUERY_STRING'] = 'param=1&param=2&param=3&foo=bar&q=yes'
            wsgi_environ['wsgi.input'] = MockWsgiInput(
                '{"param": "hey", "foo": [9, 8, 7, 6], "bar": "baz"}')
            wsgi_environ['CONTENT_TYPE'] = 'application/json'
            route_class = Route(wsgi_environ)
            request_class = Request(wsgi_environ)
            app.bind('Request', request_class)
            app.bind('Route', route_class)
            request = app.make('Request').load_app(app)

            self.assertEqual(request.input('foo'), [9, 8, 7, 6])
            self.assertEqual(request.input('param'), 'hey')
            self.assertEqual(request.input('not-exist', default=2), 2)
            self.assertEqual(request.input('q', default='default'), 'default')
            self.assertEqual(request.input('bar', default='default'), 'baz')
            self.assertEqual(request.query('foo'), 'bar')
            self.assertEqual(request.query('param'), '1')
            self.assertEqual(request.query('param', multi=True),
                             ['1', '2', '3'])
            self.assertEqual(request.query('not-exist', default=2), 2)
            self.assertEqual(request.query('not-exist', default=2, multi=True),
                             2)
            self.assertEqual(request.query('q', default='default'), 'yes')
コード例 #10
0
ファイル: test_requests.py プロジェクト: mbhybird/masonite
    def test_request_redirection(self):
        app = App()
        app.bind('Request', self.request)
        app.bind('WebRoutes', [
            Get('/test/url', 'TestController@show').name('test.url'),
            Get('/test/url/@id', 'TestController@testing').name('test.id'),
            Get('/test/url/object', TestController.show).name('test.object')
        ])
        request = app.make('Request').load_app(app)

        self.assertEqual(
            request.redirect('/test/url/@id', {
                'id': 1
            }).redirect_url, '/test/url/1')
        request.redirect_url = None
        self.assertEqual(
            request.redirect(name='test.url').redirect_url, '/test/url')
        request.redirect_url = None
        self.assertEqual(
            request.redirect(name='test.id', params={
                'id': 1
            }).redirect_url, '/test/url/1')
        request.redirect_url = None
        self.assertEqual(
            request.redirect(controller='TestController@show').redirect_url,
            '/test/url')
        request.redirect_url = None
        self.assertEqual(
            request.redirect(controller=TestController.show).redirect_url,
            '/test/url/object')
        request.redirect_url = None
        self.assertEqual(
            request.redirect('some/url').redirect_url, '/some/url')
コード例 #11
0
 def test_maintenance_mode_middleware_is_not_down(self):
     app = App()
     app.bind('Request', self.request)
     app.bind('StatusCode', '200 OK')
     request = app.make('Request').load_app(app)
     self.middleware.before()
     self.assertEqual(request.get_status_code(), '200 OK')
コード例 #12
0
    def test_request_sets_invalid_int_status_code(self):
        with self.assertRaises(InvalidHTTPStatusCode):
            app = App()
            app.bind('Request', self.request)
            request = app.make('Request').load_app(app)

            request.status(600)
コード例 #13
0
    def test_redirect_compiles_url_with_http(self):
        app = App()
        app.bind('Request', self.request)
        request = app.make('Request').load_app(app)

        route = "http://google.com"

        self.assertEqual(request.compile_route_to_url(route), 'http://google.com')
コード例 #14
0
    def test_redirect_compiles_url_with_trailing_slash(self):
        app = App()
        app.bind('Request', self.request)
        request = app.make('Request').load_app(app)

        route = 'test/url/here/'

        self.assertEqual(request.compile_route_to_url(route), '/test/url/here/')
コード例 #15
0
    def test_redirect_compiles_url(self):
        app = App()
        app.bind('Request', self.request)
        request = app.make('Request').load_app(app)

        route = '/test/url'

        self.assertEqual(request.compile_route_to_url(route), '/test/url')
コード例 #16
0
class TestFrameworkHooks(unittest.TestCase):
    def setUp(self):
        self.app = App()
        self.app.bind('SentryExceptionHook', SentryExceptionHookMock())
        self.app.bind('HookHandler', Hook(self.app))

    def test_exception_handler(self):
        self.assertIsNone(self.app.make('HookHandler').fire('*ExceptionHook'))
コード例 #17
0
    def test_request_sets_str_status_code(self):
        app = App()
        app.bind('Request', self.request)
        app.bind('StatusCode', 'TestController@show')
        request = app.make('Request').load_app(app)

        request.status('200 OK')
        self.assertEqual(request.get_status_code(), '200 OK')
コード例 #18
0
    def test_hidden_form_request_method_changes_request_method(self):
        app = App()
        wsgi_request['POST_DATA'] = '__method=PUT'
        request_class = Request(wsgi_request)

        app.bind('Request', request_class)
        request = app.make('Request').load_app(app)

        self.assertEqual(request.environ['REQUEST_METHOD'], 'PUT')
コード例 #19
0
    def test_can_get_list_as_root_payload_getting_all(self):
        app = App()
        app.bind('Request', self.request)
        request = app.make('Request').load_app(app)

        request._set_standardized_request_variables([{"key": "val"}, {"item2": "val2"}])

        self.assertIsInstance(request.all(), list)
        self.assertEqual(request.all()[0]['key'], 'val')
コード例 #20
0
    def test_request_gets_correct_header(self):
        app = App()
        app.bind('Request', self.request)
        request = app.make('Request').load_app(app)

        self.assertEqual(request.header('HTTP_UPGRADE_INSECURE_REQUESTS'), '1')
        self.assertEqual(request.header('RAW_URI'), '/')
        self.assertEqual(request.header('NOT_IN'), '')
        self.assertFalse('text/html' in request.header('NOT_IN'))
コード例 #21
0
    def test_request_cant_set_multiple_headers(self):
        app = App()
        app.bind('Request', self.request)
        request = app.make('Request').load_app(app)

        request.header('TEST', 'test_this')
        request.header('TEST', 'test_that')

        self.assertEqual(request.header('TEST'), 'test_that')
コード例 #22
0
    def test_can_get_list_as_root_payload(self):
        app = App()
        app.bind('Request', self.request)
        request = app.make('Request').load_app(app)

        request._set_standardized_request_variables([{"key": "val"}, {"item2": "val2"}])

        self.assertEqual(request.input(0)['key'], 'val')
        self.assertEqual(request.input('0')['key'], 'val')
        self.assertEqual(request.input(2), False)
コード例 #23
0
    def test_request_route_returns_full_url(self):
        app = App()
        app.bind('Request', self.request)
        app.bind('WebRoutes', [
            Get('/test/url', 'TestController@show').name('test.url'),
            Get('/test/url/@id', 'TestController@show').name('test.id')
        ])
        request = app.make('Request').load_app(app)

        self.assertEqual(request.route('test.url', full=True), 'http://localhost:8000/test/url')
コード例 #24
0
    def test_request_compiles_custom_route_compiler(self):
        app = App()
        app.bind('Request', self.request)
        request = app.make('Request').load_app(app)

        route = 'test/@id:signed'
        params = {
            'id': '1',
        }
        self.assertEqual(request.compile_route_to_url(route, params), '/test/1')
コード例 #25
0
    def test_request_sets_correct_header(self):
        app = App()
        app.bind('Request', self.request)
        request = app.make('Request').load_app(app)

        request.header('TEST', 'set_this')
        self.assertEqual(request.header('TEST'), 'set_this')

        request.header('TEST', 'set_this', http_prefix=True)
        self.assertEqual(request.header('HTTP_TEST'), 'set_this')
コード例 #26
0
 def test_maintenance_mode_middleware(self):
     app = App()
     app.bind('Request', self.request)
     app.bind('StatusCode', '200 OK')
     request = app.make('Request').load_app(app)
     down_path = os.path.join(application.BASE_DIRECTORY, 'bootstrap/down')
     down = open(down_path, 'w+')
     down.close()
     self.middleware.before()
     self.assertEqual(request.get_status_code(), '503 Service Unavailable')
コード例 #27
0
    def test_request_route_returns_url_without_passing_args_with_current_param(self):
        app = App()
        app.bind('Request', self.request)
        app.bind('WebRoutes', [
            Get('/test/url', 'TestController@show').name('test.url'),
            Get('/test/url/@id', 'TestController@show').name('test.id')
        ])
        request = app.make('Request').load_app(app)
        request.url_params = {'id': 1}

        assert request.route('test.id') == '/test/url/1'
コード例 #28
0
    def test_route_exists(self):
        app = App()
        app.bind('Request', self.request)
        app.bind('WebRoutes', [
            Get('/test/url', 'TestController@show').name('test.url'),
            Get('/test/url/@id', 'TestController@show').name('test.id')
        ])
        request = app.make('Request').load_app(app)

        self.assertEqual(request.route_exists('/test/url'), True)
        self.assertEqual(request.route_exists('/test/Not'), False)
コード例 #29
0
    def test_redirect_compiles_url_with_multiple_parameters(self):
        app = App()
        app.bind('Request', self.request)
        request = app.make('Request').load_app(app)

        route = 'test/@id/@test'
        params = {
            'id': '1',
            'test': 'user',
        }
        self.assertEqual(request.compile_route_to_url(route, params), '/test/1/user')
コード例 #30
0
ファイル: test_autoload.py プロジェクト: zedreamer/masonite
class TestAutoload(unittest.TestCase):
    def setUp(self):
        self.app = App()

    def test_autoload_loads_from_directories(self):
        Autoload(self.app).load(['app/http/controllers'])
        self.assertTrue(self.app.make('TestController'))

    def test_autoload_instantiates_classes(self):
        classes = Autoload().collect(['app/http/test_controllers'],
                                     instantiate=True)
        self.assertTrue(classes['TestController'].test)

    def test_autoload_loads_from_directories_with_trailing_slash_raises_exception(
            self):
        with self.assertRaises(InvalidAutoloadPath):
            Autoload(self.app).load(['app/http/controllers/'])

    def test_autoload_raises_exception_with_no_container(self):
        with self.assertRaises(ContainerError):
            Autoload().load(['app/http/controllers/'])

    def test_autoload_collects_classes(self):
        classes = Autoload().collect(['app/http/controllers'])
        self.assertIn('TestController', classes)
        self.assertNotIn('Command', classes)

    def test_autoload_loads_from_directories_and_instances(self):
        classes = Autoload().instances(['app/http/controllers'], object)
        self.assertIn('TestController', classes)
        self.assertNotIn('Command', classes)

    def test_autoload_loads_not_only_from_app_from_directories_and_instances(
            self):
        classes = Autoload().instances(['app/http/controllers'],
                                       object,
                                       only_app=False)
        self.assertIn('TestController', classes)

    def test_autoload_does_not_instantiate_classes(self):
        classes = Autoload().instances(['app/http/controllers'], object)
        with self.assertRaises(AttributeError):
            self.assertTrue(classes['TestController'].test, True)

    def test_collects_classes_only_in_app(self):
        classes = Autoload().collect(['app/http/controllers'], only_app=False)
        self.assertIn('TestController', classes)

    def test_autoload_throws_exception_when_binding_key_that_already_exists(
            self):
        self.app.bind('Request', Request(None))
        with self.assertRaises(AutoloadContainerOverwrite):
            Autoload(self.app).load(['app/http/test_controllers'])