Пример #1
0
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)
Пример #2
0
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
Пример #3
0
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)
Пример #4
0
    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
Пример #5
0
    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
Пример #6
0
    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"])
Пример #7
0
    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)
Пример #8
0
 def say_hello(self, request):
     tpl = self.load_template("/say_hello.html")
     
     response = Response(tpl)
     response.content_type = "text/html"
     
     return response
Пример #9
0
 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)
Пример #10
0
    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)
Пример #11
0
    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)
Пример #12
0
            def say_hello(self, request):
                tpl = self.load_template("/say_hello.html")

                response = Response(tpl)
                response.content_type = "text/html"

                return response
Пример #13
0
    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)
Пример #14
0
 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)
Пример #15
0
 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)
Пример #16
0
    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"])
Пример #17
0
 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)
Пример #18
0
 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)
Пример #19
0
 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)
Пример #20
0
 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)
Пример #21
0
    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)
Пример #22
0
    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)
Пример #23
0
def test_content_type_not_binary():
    content_type = b"text/html"
    resp = Response()

    with pytest.raises(TypeError):
        resp.content_type = content_type
Пример #24
0
def test_set_content_type():
    res = Response(content_type='application/json')
    res.content_type = 'application/foo'
    assert res.content_type == 'application/foo'
Пример #25
0
def test_content_type_not_binary():
    content_type = b"text/html"
    resp = Response()

    with pytest.raises(TypeError):
        resp.content_type = content_type
Пример #26
0
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)
Пример #27
0
def test_set_content_type():
    res = Response(content_type="application/json")
    res.content_type = "application/foo"
    assert res.content_type == "application/foo"
Пример #28
0
def test_set_content_type():
    res = Response(content_type="application/json")
    res.content_type = "application/foo"
    assert res.content_type == "application/foo"
Пример #29
0
def test_set_content_type():
    res = Response(content_type='application/json')
    res.content_type = 'application/foo'
    assert res.content_type == 'application/foo'
Пример #30
0
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)