Exemple #1
0
    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')
Exemple #2
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')
Exemple #3
0
    def test_group_route_sets_domain(self):
        routes = RouteGroup([
            Get().route('/test/1', 'TestController@show'),
            Get().route('/test/2', 'TestController@show')
        ],
                            domain=['www'])

        self.assertEqual(routes[0].required_domain, ['www'])
Exemple #4
0
    def test_group_route(self):
        routes = group('/example', [
            Get().route('/test/1', 'TestController@show'),
            Get().route('/test/2', 'TestController@show')
        ])

        self.assertEqual(routes[0].route_url, '/example/test/1')
        self.assertEqual(routes[1].route_url, '/example/test/2')
Exemple #5
0
    def test_group_route_sets_prefix(self):
        routes = RouteGroup([
            Get().route('/test/1', 'TestController@show'),
            Get().route('/test/2', 'TestController@show')
        ],
                            prefix='/dashboard')

        self.assertEqual(routes[0].route_url, '/dashboard/test/1')
Exemple #6
0
    def test_group_adds_methods(self):
        routes = RouteGroup([
            Get().route('/test/1', 'TestController@show'),
            Get().route('/test/2', 'TestController@show')
        ],
                            add_methods=['OPTIONS'])

        self.assertEqual(routes[0].method_type, ['GET', 'OPTIONS'])
Exemple #7
0
    def test_group_route_sets_name_for_none_route(self):
        routes = RouteGroup([
            Get().route('/test/1', 'TestController@show').name('create'),
            Get().route('/test/2', 'TestController@show')
        ],
                            name='post.')

        self.assertEqual(routes[0].named_route, 'post.create')
        self.assertEqual(routes[1].named_route, None)
Exemple #8
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')
Exemple #9
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'
Exemple #10
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)
    def setUp(self):
        super().setUp()
        self.container.make(Auth).register_guard('api', MockApiGuard)

        self.withRouteMiddleware({
            'guard': GuardMiddleware,
        })

        self.routes([
            Get('/guard/web', MockController.user).middleware('guard:web'),
            Get('/guard/api', MockController.user).middleware('guard:api')
        ]) 
Exemple #12
0
    def test_route_can_add_compilers_inside_route_group(self):
        self.route.compile('year', r'[0-9]{4}')
        group = RouteGroup(
            [Get().route('/@route:year', 'TestController@show')],
            prefix="/test")

        self.assertEqual(group[0].compile_route_to_regex(),
                         r'^\/test\/[0-9]{4}\/$')

        with self.assertRaises(InvalidRouteCompileException):
            get_route = Get().route('test/@route:none', None)
            get_route.request = self.request
            create_matchurl('/test/1', get_route)
Exemple #13
0
    def test_is_named_route(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.path = '/test/url'
        assert request.is_named_route('test.url')

        request.path = '/test/url/1'
        assert request.is_named_route('test.id', {'id': 1})
Exemple #14
0
    def test_request_url_from_controller(self):
        app = App()
        app.bind('Request', self.request)
        app.bind('WebRoutes', [
            Get('/test/url', 'TestController@show').name('test.url'),
            Get('/test/url/@id', 'ControllerTest@show').name('test.id'),
            Get('/test/url/controller/@id', TestController.show).name('test.controller'),
        ])

        request = app.make('Request').load_app(app)

        self.assertEqual(request.url_from_controller('TestController@show'), '/test/url')
        self.assertEqual(request.url_from_controller('ControllerTest@show', {'id': 1}), '/test/url/1')
        self.assertEqual(request.url_from_controller(TestController.show, {'id': 1}), '/test/url/controller/1')
Exemple #15
0
    def test_request_route_returns_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'), '/test/url')
        self.assertEqual(request.route('test.id', {'id': 1}), '/test/url/1')
        self.assertEqual(request.route('test.id', [1]), '/test/url/1')

        with self.assertRaises(RouteException):
            self.assertTrue(request.route('not.exists', [1]))
Exemple #16
0
    def setUp(self):
        super().setUp()
        self.routes(only=[
            Get().route('/', 'TestController@show').middleware('test'),
            Get().route('/test', 'TestController@show').middleware(
                'throttle:1,2'),
            Get().route('/test/@param', 'TestController@show').middleware(
                'params:@param'),
        ])

        self.withRouteMiddleware({
            'test': MiddlewareTest,
            'throttle': MiddlewareValueTest,
            'params': ParameterMiddleware,
        }).withHttpMiddleware([MiddlewareHttpTest])
Exemple #17
0
    def test_group_route_sets_prefix_no_route(self):
        routes = RouteGroup([
            Get('', 'TestController@show'),
        ],
                            prefix='/dashboard')

        self.assertEqual(routes[0].route_url, '/dashboard')
Exemple #18
0
    def test_route_subdomain_ignores_routes(self):
        self.routes(only=[Get('/view', ControllerTest.test)])

        with self.assertRaises(RouteNotFoundException):
            self.withSubdomains().get('/view', wsgi={
                'HTTP_HOST': 'subb.domain.com'
            }).assertIsStatus(404)
Exemple #19
0
    def test_route_runs_middleware_with_list(self):
        self.routes(only=[Get('/view', ControllerTest.returns_a_dict).middleware('middleware.test')])

        request = self.get('/view').container.make('Request')

        self.assertEqual(request.path, 'test/middleware/before/ran')
        self.assertTrue(request.attribute)
Exemple #20
0
    def test_confirm_controller_failure(self):
        for driver in ('cookie', 'jwt'):
            self.auth.driver(driver)
            timestamp_plus_11 = datetime.datetime.now() - datetime.timedelta(
                minutes=11)

            params = {
                'id':
                Sign().sign('{0}::{1}'.format(1,
                                              timestamp_plus_11.timestamp()))
            }
            self.request.set_params(params)
            user = self.auth.once().login_by_id(1)
            self.request.set_user(user)

            self.app.bind('Request', self.request)
            self.app.make('Request').load_app(self.app)

            # Create the route
            route = Get('/email/verify/@id', ConfirmController.confirm_email)

            ConfirmController.get_user = User

            # Resolve the controller constructor
            controller = self.app.resolve(route.controller)

            # Resolve the method
            response = self.app.resolve(
                getattr(controller, route.controller_method))

            self.assertEqual(response.rendered_template, 'error')
Exemple #21
0
    def test_confirm_controller_success(self):
        for driver in ('jwt', 'cookie'):
            self.auth.driver(driver)
            params = {'id': Sign().sign('{0}::{1}'.format(1, time.time()))}
            self.request.set_params(params)
            user = self.auth.once().login_by_id(1)
            self.request.set_user(user)

            self.app.bind('Request', self.request)
            self.app.make('Request').load_app(self.app)

            # Create the route
            route = Get('/email/verify/@id', ConfirmController.confirm_email)

            ConfirmController.get_user = User

            # Resolve the controller constructor
            controller = self.app.resolve(route.controller)

            # Resolve the method
            response = self.app.resolve(
                getattr(controller, route.controller_method))

            self.assertEqual(response.rendered_template, 'confirm')
            self.refreshDatabase()
    def test_can_call_container_with_annotations_from_variable(self):
        request = Request(generate_wsgi())

        self.container.bind('Request', request)
        self.container.bind('Get', Get().route('url', None))

        self.assertEqual(self.container.resolve(ContainerTest().testboot),
                         self.container.make('Request'))
Exemple #23
0
    def test_group_route_namespace(self):
        routes = RouteGroup([
            Get().route('/test/1', 'SubController@show'),
        ],
                            namespace='subdirectory.')

        self.assertIsInstance(routes, list)
        self.assertEqual(SubController, routes[0].controller)
Exemple #24
0
    def test_flatten_flattens_multiple_lists(self):
        routes = [
            Get().route('/test/1', 'TestController@show').name('create'),
            RouteGroup([
                Get().route('/test/1', 'TestController@show').name('create'),
                Get().route('/test/2', 'TestController@show').name('edit'),
                RouteGroup([
                    Get().route('/test/1',
                                'TestController@show').name('update'),
                    Get().route('/test/2',
                                'TestController@show').name('delete'),
                    RouteGroup([
                        Get().route('/test/3',
                                    'TestController@show').name('update'),
                        Get().route('/test/4',
                                    'TestController@show').name('delete'),
                    ],
                               middleware=('auth')),
                ],
                           name='post.')
            ],
                       prefix='/dashboard')
        ]

        routes = flatten_routes(routes)

        self.assertEqual(routes[3].route_url, '/dashboard/test/1')
        self.assertEqual(routes[3].named_route, 'post.update')
Exemple #25
0
 def setUp(self):
     super().setUp()
     self.routes(only=[
         Get('/', 'ControllerTest@show').middleware('csrf'),
         Post('/test-route', 'ControllerTest@show').middleware('csrf')
     ])
     csrf = CsrfMiddleware
     csrf.exempt = ['/*']
     self.withRouteMiddleware({'csrf': csrf})
Exemple #26
0
    def test_group_route_sets_middleware(self):
        routes = RouteGroup([
            Get().route('/test/1',
                        'TestController@show').middleware('another'),
            Get().route('/test/2', 'TestController@show'),
            RouteGroup([
                Get().route('/test/3', 'TestController@show'),
                Get().route('/test/4', 'TestController@show')
            ],
                       middleware=('test', 'test2'))
        ],
                            middleware=('auth', 'user'))

        self.assertIsInstance(routes, list)
        self.assertEqual(['another', 'auth', 'user'],
                         routes[0].list_middleware)
        self.assertEqual(['auth', 'user'], routes[1].list_middleware)
        self.assertEqual(['test', 'test2', 'auth', 'user'],
                         routes[2].list_middleware)
Exemple #27
0
    def test_route_can_add_compilers(self):
        get_route = Get().route('test/@route:int', None)
        self.assertEqual(get_route.compile_route_to_regex(),
                         r'^\/test\/(\d+)\/$')

        self.route.compile('year', r'[0-9]{4}')

        get_route = Get().route('test/@route:year', None)

        self.assertEqual(get_route.compile_route_to_regex(),
                         r'^\/test\/[0-9]{4}\/$')

        with self.assertRaises(InvalidRouteCompileException):
            get_route = Get().route('test/@route:none', None)
            get_route.request = self.request
            create_matchurl('/test/1', get_route)
Exemple #28
0
    def test_group_route_namespace_deep_no_dots(self):
        routes = RouteGroup([
            RouteGroup([
                Get().route('/test/1', 'DeepController@show'),
            ],
                       namespace='deep')
        ],
                            namespace='subdirectory')

        self.assertIsInstance(routes, list)
        self.assertEqual(DeepController, routes[0].controller)
Exemple #29
0
    def test_group_route_namespace_deep_using_route_values_in_constructor(
            self):
        routes = RouteGroup([
            RouteGroup([
                Get('/test/1', 'DeepController@show'),
            ],
                       namespace='deep.')
        ],
                            namespace='subdirectory.')

        self.assertIsInstance(routes, list)
        self.assertEqual(DeepController, routes[0].controller)
Exemple #30
0
    def test_request_sets_subdomain_on_get(self):

        self.request.environ['HTTP_HOST'] = 'test.localhost:8000'

        self.request.activate_subdomains()

        get = Get().domain('*')
        post = Get().domain('*')

        get.request = self.request
        post.request = self.request

        get.has_required_domain()
        self.assertEqual(self.request.param('subdomain'), 'test')