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')
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)
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')])
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)
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¶m=2¶m=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')
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')
def test_gets_input_and_query_with_get_request(self): app = App() wsgi_environ = generate_wsgi() wsgi_environ['QUERY_STRING'] = 'param=1¶m=2¶m=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')
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_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)
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_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)
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)
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')
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/')
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')
def test_can_pass_variables(self): app = App() req = Request() app.bind('Request', req) obj = app.resolve(self._test_resolves_variables, 'test1', 'test2') self.assertEqual(obj[0], 'test1') self.assertEqual(obj[1], req) self.assertEqual(obj[2], 'test2')
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')
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'))
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')
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')
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'))
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')
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')
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_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')
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)
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')
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 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')