示例#1
0
    def test_if_unmodified_since_precondition_fail(self):
        r = Request.build("/resource", method='PUT')
        r.if_unmodified_since = datetime.datetime(year=2012, month=7, day=1)
        r.body = b'put this here'
        resp = r.get_response(self.app)

        self.assertEqual(resp.status_int, 412)
示例#2
0
    def test_if_unmodified_since_precondition_fail(self):
        r = Request.build("/resource", method='PUT')
        r.if_unmodified_since = datetime.datetime(year=2012, month=7, day=1)
        r.body = b'put this here'
        resp = r.get_response(self.app)

        self.assertEqual(resp.status_int, 412)
示例#3
0
    def test_redirect_back_success(self):
        r = Request.build("/redirect_back",
                          headers={'Referer': b'http://www.google.com'})
        resp = r.get_response(self.app)

        assert 300 <= resp.status_int <= 399
        self.assertEqual(resp.headers['Location'], b'http://www.google.com')
    def test_redirect_with_non_get(self):
        req = Request.build("/upload", method='POST')
        req.http_version = "HTTP/1.1"
        resp = req.get_response(self.app)

        self.assertEqual(resp.status_int, 303)
        self.assertTrue(resp.headers['Location'].endswith(b'/uploaded'))
    def test_redirect_with_non_get(self):
        req = Request.build("/upload", method='POST')
        req.http_version = "HTTP/1.1"
        resp = req.get_response(self.app)

        self.assertEqual(resp.status_int, 303)
        self.assertTrue(resp.headers['Location'].endswith(b'/uploaded'))
 def assert_halts_with(self, code, body, path):
     """Helper function to set the halt value and assert"""
     self.halt_code = code
     self.halt_body = body
     req = Request.build(path)
     resp = req.get_response(self.app)
     self.assertEqual(resp.status_int, 200)
     self.assertEqual(resp.body, body)
示例#7
0
    def test_HEAD_fallback(self):
        r = Request.build('/')
        r.method = "HEAD"
        resp = r.get_response(self.app)

        self.assertEqual(resp.status_int, 200)
        self.assertEqual(len(resp.body), 0)
        self.assertEqual(resp.headers['X-Custom-Header'], b'foobar')
 def assert_halts_with(self, code, body, path):
     """Helper function to set the halt value and assert"""
     self.halt_code = code
     self.halt_body = body
     req = Request.build(path)
     resp = req.get_response(self.app)
     self.assertEqual(resp.status_int, 200)
     self.assertEqual(resp.body, body)
    def test_g(self):
        app = HobokenApplication('')

        @app.get("/one")
        def one():
            app.g.foo = 'bar'

        @app.get("/two")
        def two():
            self.assertNotIn('foo', app.g)

        r = Request.build("/one")
        resp = r.get_response(app)

        self.assertNotIn('foo', app.g.__dict__)

        r = Request.build("/two")
        resp = r.get_response(app)
示例#10
0
    def test_redirect_code(self):
        for code in [301, 302, 303]:
            self.redirect_code = code

            req = Request.build("/redirect")
            resp = req.get_response(self.app)

            self.assertEqual(resp.status_int, code)
            self.assertTrue(resp.headers['Location'].endswith(b'/foo'))
示例#11
0
    def test_g(self):
        app = HobokenApplication('')

        @app.get("/one")
        def one():
            app.g.foo = 'bar'

        @app.get("/two")
        def two():
            self.assertNotIn('foo', app.g)

        r = Request.build("/one")
        resp = r.get_response(app)

        self.assertNotIn('foo', app.g.__dict__)

        r = Request.build("/two")
        resp = r.get_response(app)
示例#12
0
    def test_with_request_lock(self):
        self.app.config['SERIALIZE_REQUESTS'] = True

        @self.app.get('/')
        def idx():
            return b'foo'

        @self.app.get('/errors')
        def err():
            raise RuntimeError('foobar')

        r = Request.build('/')
        e = r.get_response(self.app)
        self.assertEqual(e.status_int, 200)

        r = Request.build('/errors')
        e = r.get_response(self.app)
        self.assertEqual(e.status_int, 500)
示例#13
0
    def test_with_request_lock(self):
        self.app.config['SERIALIZE_REQUESTS'] = True

        @self.app.get('/')
        def idx():
            return b'foo'

        @self.app.get('/errors')
        def err():
            raise RuntimeError('foobar')

        r = Request.build('/')
        e = r.get_response(self.app)
        self.assertEqual(e.status_int, 200)

        r = Request.build('/errors')
        e = r.get_response(self.app)
        self.assertEqual(e.status_int, 500)
示例#14
0
    def test_redirect_code(self):
        for code in [301, 302, 303]:
            self.redirect_code = code

            req = Request.build("/redirect")
            resp = req.get_response(self.app)

            self.assertEqual(resp.status_int, code)
            self.assertTrue(resp.headers['Location'].endswith(b'/foo'))
示例#15
0
    def test_invalid_method(self):
        @self.app.get("/")
        def index():
            return b'foo'

        r = Request.build("/")
        r.method = 'OTHER'
        resp = r.get_response(self.app)

        self.assertEqual(resp.status_int, 405)
示例#16
0
    def test_invalid_method(self):
        @self.app.get("/")
        def index():
            return b'foo'

        r = Request.build("/")
        r.method = 'OTHER'
        resp = r.get_response(self.app)

        self.assertEqual(resp.status_int, 405)
示例#17
0
    def test_will_handle_regex_named_captures_4(self):
        r = re.compile(b"/(?P<first>.*?)foo(.*?)bar")

        @self.app.get(r)
        def regex_get_params(arg, first=None):
            self.assertEqual(first, b'ONE')
            self.assertEqual(arg, b'TWO')
            return b'param'

        r = Request.build("/ONEfooTWObar")
        resp = r.get_response(self.app)
        self.assertEqual(resp.status_int, 200)
        self.assertEqual(resp.body, b'param')
示例#18
0
    def test_will_handle_regex_named_captures_4(self):
        r = re.compile(b"/(?P<first>.*?)foo(.*?)bar")

        @self.app.get(r)
        def regex_get_params(arg, first=None):
            self.assertEqual(first, b'ONE')
            self.assertEqual(arg, b'TWO')
            return b'param'

        r = Request.build("/ONEfooTWObar")
        resp = r.get_response(self.app)
        self.assertEqual(resp.status_int, 200)
        self.assertEqual(resp.body, b'param')
示例#19
0
    def test_will_handle_custom_matcher(self):
        m = mock.MagicMock()
        m.match.return_value = (True, ['arg'], {'val': 'kwarg'})

        @self.app.get(m)
        def custom_get(arg, val=None):
            self.assertEqual(arg, 'arg')
            self.assertEqual(val, 'kwarg')
            return b'body'

        r = Request.build("/")
        resp = r.get_response(self.app)
        self.assertEqual(resp.status_int, 200)
        self.assertEqual(m.match.call_count, 1)
示例#20
0
    def test_will_handle_custom_matcher(self):
        m = mock.MagicMock()
        m.match.return_value = (True, ['arg'], {'val': 'kwarg'})

        @self.app.get(m)
        def custom_get(arg, val=None):
            self.assertEqual(arg, 'arg')
            self.assertEqual(val, 'kwarg')
            return b'body'

        r = Request.build("/")
        resp = r.get_response(self.app)
        self.assertEqual(resp.status_int, 200)
        self.assertEqual(m.match.call_count, 1)
示例#21
0
    def call_app(self, path='/', method='GET', user_agent=None, host=None, accepts=None):
        """
        This function calls our application, and returns a tuple of (status, body)
        """
        req = Request.build(path)
        req.method = method
        if user_agent is not None:
            req.headers['User-Agent'] = user_agent

        if host is not None:
            req.headers['Host'] = host

        if accepts is not None:
            req.headers['Accept'] = accepts

        resp = req.get_response(self.app)
        return resp.status_int, resp.text
示例#22
0
 def test_bytes(self):
     req = Request.build('/bytes')
     resp = req.get_response(self.app)
     self.assertEqual(resp.body, b'byte string')
示例#23
0
 def test_bytes(self):
     req = Request.build('/string')
     resp = req.get_response(self.app)
     self.assertEqual(resp.text, b'f\xc3\xb8\xc3\xb8'.decode('utf-8'))
示例#24
0
    def test_redirect_back_failure(self):
        r = Request.build("/redirect_fail", headers={'Referer': b''})
        resp = r.get_response(self.app)

        self.assertEqual(resp.status_int, 200)
        self.assertEqual(resp.body, b'no redirect')
示例#25
0
 def requestor_func():
     for i in range(0, num_requests // num_threads):
         resp = Request.build(path).get_response(app)
         responses.append(resp.body)
示例#26
0
 def test_no_last_modified_if_etag(self):
     r = Request.build("/resource")
     r.headers['If-None-Match'] = 'foobar'
     resp = r.get_response(self.app)
     self.assertIsNotNone(resp.last_modified)
示例#27
0
 def test_has_last_modified(self):
     r = Request.build("/resource")
     resp = r.get_response(self.app)
     self.assertIsNotNone(resp.last_modified)
示例#28
0
 def test_no_last_modified(self):
     r = Request.build("/bad")
     resp = r.get_response(self.app)
     self.assertIsNone(resp.last_modified)
示例#29
0
 def test_will_return_200_for_newer(self):
     r = Request.build("/resource")
     r.if_modified_since = datetime.datetime(year=2012, month=7, day=1)
     resp = r.get_response(self.app)
     self.assertEqual(resp.status_int, 200)
     self.assertEqual(resp.body, b'resource value')
示例#30
0
    def test_redirect_to(self):
        r = Request.build("/redirect_to")
        resp = r.get_response(self.app)

        assert 300 <= resp.status_int <= 399
        self.assertTrue(resp.headers['Location'].endswith(b'/to_me'))
示例#31
0
 def test_has_last_modified(self):
     r = Request.build("/resource")
     resp = r.get_response(self.app)
     self.assertIsNotNone(resp.last_modified)
示例#32
0
    def test_redirect_back_failure(self):
        r = Request.build("/redirect_fail", headers={'Referer': b''})
        resp = r.get_response(self.app)

        self.assertEqual(resp.status_int, 200)
        self.assertEqual(resp.body, b'no redirect')
示例#33
0
    def test_redirect_back_success(self):
        r = Request.build("/redirect_back", headers={'Referer': b'http://www.google.com'})
        resp = r.get_response(self.app)

        assert 300 <= resp.status_int <= 399
        self.assertEqual(resp.headers['Location'], b'http://www.google.com')
示例#34
0
 def test_bytes(self):
     req = Request.build('/string')
     resp = req.get_response(self.app)
     self.assertEqual(resp.text, b'f\xc3\xb8\xc3\xb8'.decode('utf-8'))
示例#35
0
 def call_app(self, path, *args, **kwargs):
     req = Request.build(path, *args, **kwargs)
     resp = req.get_response(self.app)
     return resp
示例#36
0
 def test_no_last_modified_if_etag(self):
     r = Request.build("/resource")
     r.headers['If-None-Match'] = 'foobar'
     resp = r.get_response(self.app)
     self.assertIsNotNone(resp.last_modified)
示例#37
0
    def test_redirect(self):
        req = Request.build("/upload", method='POST')
        resp = req.get_response(self.app)

        self.assertEqual(resp.status_int, 302)
        self.assertTrue(resp.headers['Location'].endswith(b'/uploaded'))
示例#38
0
 def test_will_return_304_for_get(self):
     r = Request.build("/resource")
     r.if_modified_since = datetime.datetime(year=2012, month=7, day=20)
     resp = r.get_response(self.app)
     self.assertEqual(resp.status_int, 304)
     self.assertEqual(resp.body, b'')
示例#39
0
 def test_will_return_304_for_get(self):
     r = Request.build("/resource")
     r.if_modified_since = datetime.datetime(year=2012, month=7, day=20)
     resp = r.get_response(self.app)
     self.assertEqual(resp.status_int, 304)
     self.assertEqual(resp.body, b'')
示例#40
0
 def test_will_return_200_for_newer(self):
     r = Request.build("/resource")
     r.if_modified_since = datetime.datetime(year=2012, month=7, day=1)
     resp = r.get_response(self.app)
     self.assertEqual(resp.status_int, 200)
     self.assertEqual(resp.body, b'resource value')
示例#41
0
 def test_no_last_modified(self):
     r = Request.build("/bad")
     resp = r.get_response(self.app)
     self.assertIsNone(resp.last_modified)
示例#42
0
 def test_bytes(self):
     req = Request.build('/bytes')
     resp = req.get_response(self.app)
     self.assertEqual(resp.body, b'byte string')
示例#43
0
    def test_redirect_to(self):
        r = Request.build("/redirect_to")
        resp = r.get_response(self.app)

        assert 300 <= resp.status_int <= 399
        self.assertTrue(resp.headers['Location'].endswith(b'/to_me'))
示例#44
0
 def call_app(self, path, *args, **kwargs):
     req = Request.build(path, *args, **kwargs)
     resp = req.get_response(self.app)
     return resp
示例#45
0
 def requestor_func():
     for i in range(0, num_requests // num_threads):
         resp = Request.build(path).get_response(app)
         responses.append(resp.body)
示例#46
0
    def test_redirect(self):
        req = Request.build("/upload", method='POST')
        resp = req.get_response(self.app)

        self.assertEqual(resp.status_int, 302)
        self.assertTrue(resp.headers['Location'].endswith(b'/uploaded'))