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')
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')
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'])
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')
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')
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'])
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)
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')
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'
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') ])
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)
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})
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')
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]))
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])
def test_group_route_sets_prefix_no_route(self): routes = RouteGroup([ Get('', 'TestController@show'), ], prefix='/dashboard') self.assertEqual(routes[0].route_url, '/dashboard')
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)
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)
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')
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'))
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)
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')
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})
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)
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)
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)
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)
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')