def setup_method(self): self.app = App() self.app.bind('Environ', generate_wsgi()) self.app.bind('WebRoutes', []) self.app.bind('Route', Route(self.app.make('Environ'))) self.app.bind('Request', Request(self.app.make('Environ')).load_app(self.app)) self.app.bind('Headers', []) self.app.bind('HttpMiddleware', []) view = View(self.app) self.app.bind('View', view.render) self.provider = RouteProvider() self.provider.app = self.app
def setup_method(self): self.app = App() self.app.bind('Container', self.app) self.app.bind('Environ', generate_wsgi()) self.app.bind('Application', application) self.app.bind('WebRoutes', []) self.app.bind('Route', Route(self.app.make('Environ'))) self.app.bind('Request', Request( self.app.make('Environ')).load_app(self.app)) self.app.simple(Response(self.app)) self.app.bind('StatusCode', '404 Not Found') self.app.bind('HttpMiddleware', middleware.HTTP_MIDDLEWARE) view = View(self.app) self.app.bind('ViewClass', view) self.app.bind('View', view.render) self.provider = RouteProvider() self.provider.app = self.app
def setUp(self): self.app = App() self.app.bind('Container', self.app) self.app.bind('Environ', generate_wsgi()) self.app.bind('Application', application) self.app.bind('WebRoutes', []) self.app.bind('Route', Route(self.app.make('Environ'))) self.app.bind('Request', Request(self.app.make('Environ')).load_app(self.app)) self.app.simple(Response(self.app)) self.app.bind('StatusCode', None) self.app.bind('HttpMiddleware', middleware.HTTP_MIDDLEWARE) view = View(self.app) self.app.bind('ViewClass', view) self.app.bind('View', view.render) self.app.bind('Auth', Auth) self.app.bind('Csrf', Csrf(self.app.make('Request'))) self.app.bind('AuthCookieDriver', AuthCookieDriver) self.app.bind('AuthManager', AuthManager(self.app).driver('cookie')) self.provider = RouteProvider() self.provider.app = self.app
class TestRouteProvider: def setup_method(self): self.app = App() self.app.bind('Environ', generate_wsgi()) self.app.bind('WebRoutes', []) self.app.bind('Route', Route(self.app.make('Environ'))) self.app.bind('Request', Request(self.app.make('Environ')).load_app(self.app)) self.app.bind('Headers', []) self.app.bind('HttpMiddleware', []) view = View(self.app) self.app.bind('View', view.render) self.provider = RouteProvider() self.provider.app = self.app def test_controller_that_returns_a_view(self): self.app.make('Route').url = '/view' self.app.bind('WebRoutes', [get('/view', Controller.returns_a_view)]) self.provider.boot( self.app.make('WebRoutes'), self.app.make('Route'), self.app.make('Request'), self.app.make('Environ'), self.app.make('Headers'), ) assert self.app.make('Response') == 'hey' def test_controller_does_not_return_with_non_matching_end_slash(self): self.app.make('Route').url = '/view' self.app.bind('WebRoutes', [get('/view/', Controller.returns_a_view)]) self.provider.boot( self.app.make('WebRoutes'), self.app.make('Route'), self.app.make('Request'), self.app.make('Environ'), self.app.make('Headers'), ) assert self.app.make('Response') == 'Route not found. Error 404' def test_provider_runs_through_routes(self): self.app.make('Route').url = '/test' self.app.bind('WebRoutes', [get('/test', Controller.show)]) self.provider.boot( self.app.make('WebRoutes'), self.app.make('Route'), self.app.make('Request'), self.app.make('Environ'), self.app.make('Headers'), ) assert self.app.make('Request').header( 'Content-Type') == 'text/html; charset=utf-8' def test_sets_request_params(self): self.app.make('Route').url = '/test/1' self.app.bind('WebRoutes', [get('/test/@id', Controller.show)]) self.provider.boot( self.app.make('WebRoutes'), self.app.make('Route'), self.app.make('Request'), self.app.make('Environ'), self.app.make('Headers'), ) assert self.app.make('Request').param('id') == '1' def test_route_subdomain_ignores_routes(self): self.app.make('Route').url = '/test' self.app.make('Environ')['HTTP_HOST'] = 'subb.domain.com' self.app.bind('WebRoutes', [get('/test', Controller.show)]) request = self.app.make('Request') request.activate_subdomains() self.provider.boot( self.app.make('WebRoutes'), self.app.make('Route'), request, self.app.make('Environ'), self.app.make('Headers'), ) assert self.app.make('Response') == 'Route not found. Error 404' def test_controller_returns_json_response_for_dict(self): self.app.make('Route').url = '/view' self.app.bind('WebRoutes', [get('/view', Controller.returns_a_dict)]) self.provider.boot( self.app.make('WebRoutes'), self.app.make('Route'), self.app.make('Request'), self.app.make('Environ'), self.app.make('Headers'), ) assert self.app.make('Response') == '{"id": 1}' assert self.app.make('Request').header( 'Content-Type') == 'application/json; charset=utf-8'
class TestRouteProvider: def setup_method(self): self.app = App() self.app.bind('Container', self.app) self.app.bind('Environ', generate_wsgi()) self.app.bind('Application', application) self.app.bind('WebRoutes', []) self.app.bind('Route', Route(self.app.make('Environ'))) self.app.bind('Request', Request( self.app.make('Environ')).load_app(self.app)) self.app.simple(Response(self.app)) self.app.bind('StatusCode', '404 Not Found') self.app.bind('HttpMiddleware', middleware.HTTP_MIDDLEWARE) view = View(self.app) self.app.bind('ViewClass', view) self.app.bind('View', view.render) self.provider = RouteProvider() self.provider.app = self.app def test_controller_that_returns_a_view(self): self.app.make('Route').url = '/view' self.app.bind('WebRoutes', [get('/view', ControllerTest.test)]) self.provider.boot( self.app.make('Route'), self.app.make('Request'), self.app.make(Response) ) assert self.app.make('Response') == 'test' self.app.make('Route').url = '/view/' self.app.bind('WebRoutes', [get('/view', ControllerTest.test)]) self.provider.boot( self.app.make('Route'), self.app.make('Request'), self.app.make(Response) ) # assert self.app.make('Response') == 'test' def test_controller_that_return_a_view_with_trailing_slash(self): self.app.make('Route').url = '/view/' self.app.bind('WebRoutes', [get('/view/', ControllerTest.test)]) self.provider.boot( self.app.make('Route'), self.app.make('Request'), self.app.make(Response) ) assert self.app.make('Response') == 'test' self.app.make('Route').url = '/view' self.app.bind('WebRoutes', [get('/view/', ControllerTest.test)]) print(self.app.providers) self.provider.boot( self.app.make('Route'), self.app.make('Request'), self.app.make(Response) ) assert self.app.make('Response') == 'test' def test_match_route_returns_controller(self): self.app.make('Route').url = '/view' self.app.bind( 'WebRoutes', [Match(['GET', 'POST']).route('/view', ControllerTest.returns_a_view)]) self.provider.boot( self.app.make('Route'), self.app.make('Request'), self.app.make(Response) ) assert self.app.make('Response') == 'hey' def test_provider_runs_through_routes(self): self.app.make('Route').url = '/test' self.app.bind('WebRoutes', [get('/test', ControllerTest.test)]) self.provider.boot( self.app.make('Route'), self.app.make('Request'), self.app.make(Response) ) assert self.app.make('Request').header( 'Content-Type') == 'text/html; charset=utf-8' def test_sets_request_params(self): self.app.make('Route').url = '/test/1' self.app.bind('WebRoutes', [get('/test/@id', ControllerTest.test)]) self.provider.boot( self.app.make('Route'), self.app.make('Request'), self.app.make(Response) ) assert self.app.make('Request').param('id') == '1' def test_url_with_dots_finds_route(self): self.app.make('Route').url = '/test/user.endpoint' self.app.bind( 'WebRoutes', [get('/test/@endpoint', ControllerTest.test)]) self.provider.boot( self.app.make('Route'), self.app.make('Request'), self.app.make(Response) ) assert self.app.make('Request').param('endpoint') == 'user.endpoint' def test_view_returns_with_route_view(self): self.app.make('Route').url = '/test/route' self.app.bind('WebRoutes', [ Get().view('/test/route', 'test', {'test': 'testing'}) ]) self.provider.boot( self.app.make('Route'), self.app.make('Request'), self.app.make(Response) ) assert self.app.make('Response') == 'testing' def test_url_with_dashes_finds_route(self): self.app.make('Route').url = '/test/user-endpoint' self.app.bind( 'WebRoutes', [get('/test/@endpoint', ControllerTest.test)]) self.provider.boot( self.app.make('Route'), self.app.make('Request'), self.app.make(Response) ) assert self.app.make('Request').param('endpoint') == 'user-endpoint' def test_param_returns_param(self): self.app.make('Route').url = '/test/1' self.app.bind('WebRoutes', [get('/test/@id', ControllerTest.param)]) self.provider.boot( self.app.make('Route'), self.app.make('Request'), self.app.make(Response) ) assert self.app.make('Response') == '1' def test_custom_route_compiler_returns_param(self): self.app.make('Route').url = '/test/1' self.app.make('Route').compile('signed', r'([\w.-]+)') self.app.bind('WebRoutes', [get('/test/@id:signed', ControllerTest.param)]) self.provider.boot( self.app.make('Route'), self.app.make('Request'), self.app.make(Response) ) assert self.app.make('Response') == '1' def test_route_subdomain_ignores_routes(self): self.app.make('Route').url = '/test' self.app.make('Environ')['HTTP_HOST'] = 'subb.domain.com' self.app.bind('WebRoutes', [get('/test', ControllerTest.test)]) request = self.app.make('Request') request.activate_subdomains() self.provider.boot( self.app.make('Route'), self.app.make('Request'), self.app.make(Response) ) assert self.app.make('Response') == 'Route not found. Error 404' def test_controller_returns_json_response_for_dict(self): self.app.make('Route').url = '/view' self.app.bind( 'WebRoutes', [get('/view', ControllerTest.returns_a_dict)]) self.provider.boot( self.app.make('Route'), self.app.make('Request'), self.app.make(Response) ) assert self.app.make('Request').header( 'Content-Type') == 'application/json; charset=utf-8' def test_route_runs_str_middleware(self): self.app.make('Route').url = '/view' self.app.bind('RouteMiddleware', middleware.ROUTE_MIDDLEWARE) self.app.bind('WebRoutes', [ get('/view', ControllerTest.returns_a_dict).middleware('test') ] ) self.provider.boot( self.app.make('Route'), self.app.make('Request'), self.app.make(Response) ) assert self.app.make('Request').path == 'test/middleware/before/ran' def test_route_runs_middleware_with_list(self): self.app.make('Route').url = '/view' self.app.bind('RouteMiddleware', middleware.ROUTE_MIDDLEWARE) self.app.bind('WebRoutes', [ get('/view', ControllerTest.returns_a_dict).middleware('middleware.test') ] ) self.provider.boot( self.app.make('Route'), self.app.make('Request'), self.app.make(Response) ) assert self.app.make('Request').path == 'test/middleware/before/ran' assert self.app.make('Request').attribute == True
class TestRouteProvider(unittest.TestCase): def setUp(self): self.app = App() self.app.bind('Container', self.app) self.app.bind('Environ', generate_wsgi()) self.app.bind('Application', application) self.app.bind('WebRoutes', []) self.app.bind('Route', Route(self.app.make('Environ'))) self.app.bind('Request', Request(self.app.make('Environ')).load_app(self.app)) self.app.simple(Response(self.app)) self.app.bind('StatusCode', None) self.app.bind('HttpMiddleware', middleware.HTTP_MIDDLEWARE) view = View(self.app) self.app.bind('ViewClass', view) self.app.bind('View', view.render) self.app.bind('Auth', Auth) self.app.bind('Csrf', Csrf(self.app.make('Request'))) self.app.bind('AuthCookieDriver', AuthCookieDriver) self.app.bind('AuthManager', AuthManager(self.app).driver('cookie')) self.provider = RouteProvider() self.provider.app = self.app def test_controller_that_returns_a_view(self): self.app.make('Route').url = '/view' self.app.bind('WebRoutes', [Get('/view', ControllerTest.test)]) self.provider.boot(self.app.make('Route'), self.app.make('Request'), self.app.make(Response)) self.assertEqual(self.app.make('Response'), 'test') self.app.make('Route').url = '/view/' self.app.bind('WebRoutes', [Get('/view', ControllerTest.test)]) self.provider.boot(self.app.make('Route'), self.app.make('Request'), self.app.make(Response)) # self.assertEqual(self.app.make('Response'), 'test') def test_home_route(self): self.app.make('Route').url = '/' self.app.bind('WebRoutes', [Get('/', ControllerTest.test)]) self.provider.boot(self.app.make('Route'), self.app.make('Request'), self.app.make(Response)) self.assertEqual(self.app.make('Response'), 'test') def test_base_route_hits_controller(self): self.app.make('Route').url = '/test' self.app.bind('WebRoutes', [Get('/@id', ControllerTest.test)]) self.provider.boot(self.app.make('Route'), self.app.make('Request'), self.app.make(Response)) assert self.app.make('Request').param('id') == 'test' assert self.app.make('Response') == 'test' def test_no_base_route_returns_404(self): self.app.make('Route').url = '/' self.app.bind('WebRoutes', [Get('/test', ControllerTest.test)]) self.provider.boot(self.app.make('Route'), self.app.make('Request'), self.app.make(Response)) print(self.app.make('Request').get_status_code()) assert self.app.make('Request').is_status(404) def test_controller_that_return_a_view_with_trailing_slash(self): self.app.make('Route').url = '/view' self.app.bind('WebRoutes', [Get('/view', ControllerTest.test)]) self.provider.boot(self.app.make('Route'), self.app.make('Request'), self.app.make(Response)) self.assertEqual(self.app.make('Response'), 'test') self.app.make('Route').url = '/view' self.app.bind('WebRoutes', [Get('/view', ControllerTest.test)]) self.provider.boot(self.app.make('Route'), self.app.make('Request'), self.app.make(Response)) self.assertEqual(self.app.make('Response'), 'test') def test_match_route_returns_controller(self): self.app.make('Route').url = '/view' self.app.bind('WebRoutes', [ Match(['GET', 'POST']).route('/view', ControllerTest.returns_a_view) ]) self.provider.boot(self.app.make('Route'), self.app.make('Request'), self.app.make(Response)) self.assertEqual(self.app.make('Response'), 'hey') def test_provider_runs_through_routes(self): self.app.make('Route').url = '/test' self.app.bind('WebRoutes', [Get('/test', ControllerTest.test)]) self.provider.boot(self.app.make('Route'), self.app.make('Request'), self.app.make(Response)) self.assertEqual( self.app.make('Request').header('Content-Type'), 'text/html; charset=utf-8') def test_sets_request_params(self): self.app.make('Route').url = '/test/1' self.app.bind('WebRoutes', [Get('/test/@id', ControllerTest.test)]) self.provider.boot(self.app.make('Route'), self.app.make('Request'), self.app.make(Response)) self.assertEqual(self.app.make('Request').param('id'), '1') def test_can_use_resolving_params(self): self.app.make('Route').url = '/test/1' self.app.bind('WebRoutes', [Get('/test/@id', ControllerTest.get_param)]) self.provider.boot(self.app.make('Route'), self.app.make('Request'), self.app.make(Response)) self.assertEqual(self.app.make('Request').first, '1') def test_can_use_resolving_params_and_object(self): self.app.make('Route').url = '/test/1' self.app.bind('WebRoutes', [Get('/test/@id', ControllerTest.get_param_and_object)]) self.provider.boot(self.app.make('Route'), self.app.make('Request'), self.app.make(Response)) self.assertEqual(self.app.make('Request').first, '1') # self.assertEqual(isinstance(self.app.make('Request').view, View) def test_url_with_dots_finds_route(self): self.app.make('Route').url = '/test/user.endpoint' self.app.bind('WebRoutes', [Get('/test/@endpoint', ControllerTest.test)]) self.provider.boot(self.app.make('Route'), self.app.make('Request'), self.app.make(Response)) self.assertEqual( self.app.make('Request').param('endpoint'), 'user.endpoint') def test_view_returns_with_route_view(self): self.app.make('Route').url = '/test/route' self.app.bind('WebRoutes', [Get().view('/test/route', 'test', {'test': 'testing'})]) self.provider.boot(self.app.make('Route'), self.app.make('Request'), self.app.make(Response)) self.assertEqual(self.app.make('Response'), 'testing') def test_url_with_dashes_finds_route(self): self.app.make('Route').url = '/test/user-endpoint' self.app.bind('WebRoutes', [Get('/test/@endpoint', ControllerTest.test)]) self.provider.boot(self.app.make('Route'), self.app.make('Request'), self.app.make(Response)) self.assertEqual( self.app.make('Request').param('endpoint'), 'user-endpoint') def test_param_returns_param(self): self.app.make('Route').url = '/test/1' self.app.bind('WebRoutes', [Get('/test/@id', ControllerTest.param)]) self.provider.boot(self.app.make('Route'), self.app.make('Request'), self.app.make(Response)) self.assertEqual(self.app.make('Response'), '1') def test_custom_route_compiler_returns_param(self): self.app.make('Route').url = '/test/1' self.app.make('Route').compile('signed', r'([\w.-]+)') self.app.bind('WebRoutes', [Get('/test/@id:signed', ControllerTest.param)]) self.provider.boot(self.app.make('Route'), self.app.make('Request'), self.app.make(Response)) self.assertEqual(self.app.make('Response'), '1') def test_route_subdomain_ignores_routes(self): self.app.make('Route').url = '/test' self.app.make('Environ')['HTTP_HOST'] = 'subb.domain.com' self.app.bind('WebRoutes', [Get('/test', ControllerTest.test)]) request = self.app.make('Request') request.activate_subdomains() self.provider.boot(self.app.make('Route'), self.app.make('Request'), self.app.make(Response)) self.assertEqual(self.app.make('Response'), 'Route not found. Error 404') def test_controller_returns_json_response_for_dict(self): self.app.make('Route').url = '/view' self.app.bind('WebRoutes', [Get('/view', ControllerTest.returns_a_dict)]) self.provider.boot(self.app.make('Route'), self.app.make('Request'), self.app.make(Response)) self.assertEqual( self.app.make('Request').header('Content-Type'), 'application/json; charset=utf-8') def test_route_runs_str_middleware(self): self.app.make('Route').url = '/view' self.app.bind('RouteMiddleware', middleware.ROUTE_MIDDLEWARE) self.app.bind( 'WebRoutes', [Get('/view', ControllerTest.returns_a_dict).middleware('test')]) self.provider.boot(self.app.make('Route'), self.app.make('Request'), self.app.make(Response)) self.assertEqual( self.app.make('Request').path, 'test/middleware/before/ran') def test_route_runs_middleware_with_list(self): self.app.make('Route').url = '/view' self.app.bind('RouteMiddleware', middleware.ROUTE_MIDDLEWARE) self.app.bind('WebRoutes', [ Get('/view', ControllerTest.returns_a_dict).middleware('middleware.test') ]) self.provider.boot(self.app.make('Route'), self.app.make('Request'), self.app.make(Response)) self.assertEqual( self.app.make('Request').path, 'test/middleware/before/ran') self.assertEqual(self.app.make('Request').attribute, True)