def test_content_type(): r = Response() # default ctype and charset eq_(r.content_type, 'text/html') eq_(r.charset, 'UTF-8') # setting to none, removes the header r.content_type = None eq_(r.content_type, None) eq_(r.charset, None) # can set missing ctype r.content_type = None eq_(r.content_type, None)
def test_content_type(): r = Response() # default ctype and charset assert r.content_type == 'text/html' assert r.charset == 'UTF-8' # setting to none, removes the header r.content_type = None assert r.content_type is None assert r.charset is None # can set missing ctype r.content_type = None assert r.content_type is None
def display_test(self, request): '''This method handles **/dummy/route/loader/test route**. It is expected to receive a response with status code 400. We do this for being able to test rendering and also avoid false positive security scans messages.''' response = Response(status_code=400) if "text/html" in request.content_type: response.content_type = "application/html; charset=UTF-8" else: response.content_type = request.content_type or "application/html; charset=UTF-8" response.text = "Hello world." return response
def test_exec_controller_ok(self): '''This test case ensures that requested route is executed - success scenario.''' global_headers = {"X-Custom-Header1": "header1", "X-Custom-Header2": "header2"} def get(key): if key == "installed_middleware": return ["fantastico.middleware.tests.test_fantastico_app.MockedMiddleware"] if key == "global_response_headers": return global_headers self._settings_facade.get = get app_middleware = FantasticoApp(self._settings_facade_cls) response = Response() response.content_type = "text/html" response.text = "Hello world" self._controller.exec_logic = lambda request: response self.assertEqual([b"Hello world"], app_middleware(self._environ, Mock())) self.assertTrue(self._environ["test_wrapped_ok"]) self.assertEqual(global_headers["X-Custom-Header1"], response.headers["X-Custom-Header1"]) self.assertEqual(global_headers["X-Custom-Header2"], response.headers["X-Custom-Header2"])
def generate_response(self, environ, start_response): if self.content_length is not None: del self.content_length headerlist = list(self.headerlist) accept_value = environ.get('HTTP_ACCEPT', '') accept = MIMEAccept(accept_value) match = accept.best_match(['text/html', 'application/json']) if match == 'text/html': content_type = 'text/html' body = self.html_body(environ) elif match == 'application/json': content_type = 'application/json' body = self.json_body(environ) else: content_type = 'text/plain' body = self.plain_body(environ) extra_kw = {} if isinstance(body, text_type): extra_kw.update(charset='utf-8') resp = Response(body, status=self.status, headerlist=headerlist, content_type=content_type, **extra_kw ) resp.content_type = content_type return resp(environ, start_response)
def say_hello(self, request): tpl = self.load_template("/say_hello.html") response = Response(tpl) response.content_type = "text/html" return response
def generate_response(self, environ, start_response): if self.content_length is not None: del self.content_length headerlist = list(self.headerlist) accept_value = environ.get('HTTP_ACCEPT', '') accept = Accept(accept_value) match = accept.best_match( ['application/json', 'text/html', 'text/plain'], default_match='text/plain') if match == 'text/html': content_type = 'text/html' body = self.html_body(environ) elif match == 'application/json': content_type = 'application/json' body = self.json_body(environ) else: content_type = 'text/plain' body = self.plain_body(environ) extra_kw = {} if isinstance(body, text_type): extra_kw.update(charset='utf-8') resp = Response(body, status=self.status, headerlist=headerlist, content_type=content_type, **extra_kw) resp.content_type = content_type return resp(environ, start_response)
def generate_response(self, environ, start_response): if self.content_length is not None: del self.content_length headerlist = list(self.headerlist) accept_value = environ.get("HTTP_ACCEPT", "") accept_header = create_accept_header(header_value=accept_value) acceptable_offers = accept_header.acceptable_offers( offers=["text/html", "application/json"] ) match = acceptable_offers[0][0] if acceptable_offers else None if match == "text/html": content_type = "text/html" body = self.html_body(environ) elif match == "application/json": content_type = "application/json" body = self.json_body(environ) else: content_type = "text/plain" body = self.plain_body(environ) resp = Response( body, status=self.status, headerlist=headerlist, content_type=content_type ) resp.content_type = content_type return resp(environ, start_response)
def generate_response(self, environ, start_response): if self.content_length is not None: del self.content_length headerlist = list(self.headerlist) accept_value = environ.get('HTTP_ACCEPT', '') accept_header = create_accept_header(header_value=accept_value) acceptable_offers = accept_header.acceptable_offers( offers=['text/html', 'application/json'], ) match = acceptable_offers[0][0] if acceptable_offers else None if match == 'text/html': content_type = 'text/html' body = self.html_body(environ) elif match == 'application/json': content_type = 'application/json' body = self.json_body(environ) else: content_type = 'text/plain' body = self.plain_body(environ) resp = Response(body, status=self.status, headerlist=headerlist, content_type=content_type, ) resp.content_type = content_type return resp(environ, start_response)
def generate_response(self, environ, start_response): if self.content_length is not None: del self.content_length headerlist = list(self.headerlist) accept_value = environ.get('HTTP_ACCEPT', '') accept = MIMEAccept(accept_value) match = accept.best_match(['text/html', 'application/json']) if match == 'text/html': content_type = 'text/html' body = self.html_body(environ) elif match == 'application/json': content_type = 'application/json' body = self.json_body(environ) else: content_type = 'text/plain' body = self.plain_body(environ) resp = Response( body, status=self.status, headerlist=headerlist, content_type=content_type, ) resp.content_type = content_type return resp(environ, start_response)
def generate_response(self, environ, start_response): if self.content_length is not None: del self.content_length headerlist = list(self.headerlist) content_type = 'application/json' body = '{"message": "this resource does not allow non-local requests"}' resp = Response( body, status=self.status, headerlist=headerlist, content_type=content_type ) resp.content_type = content_type return resp(environ, start_response)
def generate_response(self, environ, start_response): if self.content_length is not None: del self.content_length headerlist = list(self.headerlist) content_type = 'application/json' body = '{"error": "%s"}' % self.detail resp = Response( body, status=self.status, headerlist=headerlist, content_type=content_type ) resp.content_type = content_type return resp(environ, start_response)
def test_mistmatch_content_headers(self): '''This test case makes sure an exception is raised whenever client browser does not accept response content type.''' self._settings_facade.get = Mock(return_value=["fantastico.middleware.tests.test_fantastico_app.MockedMiddleware"]) response = Response() response.content_type = "not supported" response.text = "Hello world" self._controller.exec_logic = lambda request: response app_middleware = FantasticoApp(self._settings_facade_cls) self.assertRaises(FantasticoContentTypeError, app_middleware, *[self._environ, Mock()]) self.assertTrue(self._environ["test_wrapped_ok"])
def generate_response(self, environ, start_response): if self.content_length is not None: del self.content_length headerlist = list(self.headerlist) accept = environ.get("HTTP_ACCEPT", "") if accept and "html" in accept or "*/*" in accept: content_type = "text/html" body = self.html_body(environ) else: content_type = "text/plain" body = self.plain_body(environ) extra_kw = {} if isinstance(body, text_type): extra_kw.update(charset="utf-8") resp = Response(body, status=self.status, headerlist=headerlist, content_type=content_type, **extra_kw) resp.content_type = content_type return resp(environ, start_response)
def generate_response(self, environ, start_response): if self.content_length is not None: del self.content_length headerlist = list(self.headerlist) accept = environ.get('HTTP_ACCEPT', '') if accept and 'json' in accept or '*/*' in accept: content_type = 'application/json' body = self.html_body(environ) else: content_type = 'text/plain' body = self.plain_body(environ) extra_kw = {} resp = Response(body, status=self.status, headerlist=headerlist, content_type=content_type, **extra_kw) resp.content_type = content_type return resp(environ, start_response)
def generate_response(self, environ, start_response): if self.content_length is not None: del self.content_length headerlist = list(self.headerlist) accept = environ.get('HTTP_ACCEPT', '') if accept and 'html' in accept or '*/*' in accept: content_type = 'text/html' body = self.html_body(environ) else: content_type = 'text/plain' body = self.plain_body(environ) extra_kw = {} if isinstance(body, text_type): extra_kw.update(charset='utf-8') resp = Response(body, status=self.status, headerlist=headerlist, content_type=content_type, **extra_kw) resp.content_type = content_type return resp(environ, start_response)
def generate_response(self, environ, start_response): if self.content_length is not None: del self.content_length headerlist = list(self.headerlist) accept = environ.get('HTTP_ACCEPT', '') if accept and 'html' in accept or '*/*' in accept: content_type = 'text/html' body = self.html_body(environ) else: content_type = 'text/plain' body = self.plain_body(environ) extra_kw = {} if isinstance(body, text_type): extra_kw.update(charset='utf-8') resp = Response(body, status=self.status, headerlist=headerlist, content_type=content_type, **extra_kw ) resp.content_type = content_type return resp(environ, start_response)
def test_response_ok(self): '''Test case that ensures response object behaves as expected. If this pass it guarantees webob version does not break fantastico functionality.''' response = Response() self.assertEqual(200, response.status_code) self.assertEqual("text/html", response.content_type) response.charset = "utf8" self.assertEqual("utf8", response.charset) response.text = "test content" self.assertEqual(b"test content", response.body) response.body = b"test content" self.assertEqual(b"test content", response.body) response.status = 404 self.assertEqual(404, response.status_code) response.content_type = "application/json" self.assertEqual("application/json", response.content_type)
def test_content_type_not_binary(): content_type = b"text/html" resp = Response() with pytest.raises(TypeError): resp.content_type = content_type
def test_set_content_type(): res = Response(content_type='application/json') res.content_type = 'application/foo' assert res.content_type == 'application/foo'
def test_content_type_supports_unicode(): content_type = u"text/html" resp = Response() resp.content_type = content_type assert isinstance(resp.headers["Content-Type"], str)
def test_set_content_type(): res = Response(content_type="application/json") res.content_type = "application/foo" assert res.content_type == "application/foo"