Example #1
0
 def test_error_with_response(self):
     resp = HTTPResponse(HTTPRequest('http://example.com/'), 403)
     with self.assertRaises(HTTPError) as cm:
         resp.rethrow()
     e = cm.exception
     self.assertEqual(str(e), "HTTP 403: Forbidden")
     self.assertEqual(repr(e), "HTTP 403: Forbidden")
Example #2
0
 def test_websocket_headers(self):
     # Ensure that arbitrary headers can be passed through websocket_connect.
     ws = yield websocket_connect(
         HTTPRequest('ws://127.0.0.1:%d/header' % self.get_http_port(),
                     headers={'X-Test': 'hello'}))
     response = yield ws.read_message()
     self.assertEqual(response, 'hello')
     yield self.close(ws)
Example #3
0
 def test_str(self):
     response = HTTPResponse(HTTPRequest('http://example.com'),
                             200,
                             headers={},
                             buffer=BytesIO())
     s = str(response)
     self.assertTrue(s.startswith('HTTPResponse('))
     self.assertIn('code=200', s)
Example #4
0
    def test_check_origin_invalid_partial_url(self):
        port = self.get_http_port()

        url = 'ws://127.0.0.1:%d/echo' % port
        headers = {'Origin': '127.0.0.1:%d' % port}

        with self.assertRaises(HTTPError) as cm:
            yield websocket_connect(HTTPRequest(url, headers=headers),
                                    io_loop=self.io_loop)
        self.assertEqual(cm.exception.code, 403)
Example #5
0
    def test_check_origin_valid_with_path(self):
        port = self.get_http_port()

        url = 'ws://127.0.0.1:%d/echo' % port
        headers = {'Origin': 'http://127.0.0.1:%d/something' % port}

        ws = yield websocket_connect(HTTPRequest(url, headers=headers),
                                     io_loop=self.io_loop)
        ws.write_message('hello')
        response = yield ws.read_message()
        self.assertEqual(response, 'hello')
        yield self.close(ws)
Example #6
0
    def test_check_origin_invalid(self):
        port = self.get_http_port()

        url = 'ws://127.0.0.1:%d/echo' % port
        # Host is 127.0.0.1, which should not be accessible from some other
        # domain
        headers = {'Origin': 'http://somewhereelse.com'}

        with self.assertRaises(HTTPError) as cm:
            yield websocket_connect(HTTPRequest(url, headers=headers),
                                    io_loop=self.io_loop)

        self.assertEqual(cm.exception.code, 403)
Example #7
0
    def test_check_origin_invalid_subdomains(self):
        port = self.get_http_port()

        url = 'ws://localhost:%d/echo' % port
        # Subdomains should be disallowed by default.  If we could pass a
        # resolver to websocket_connect we could test sibling domains as well.
        headers = {'Origin': 'http://subtenant.localhost'}

        with self.assertRaises(HTTPError) as cm:
            yield websocket_connect(HTTPRequest(url, headers=headers),
                                    io_loop=self.io_loop)

        self.assertEqual(cm.exception.code, 403)
Example #8
0
    def test_prepare_curl_callback_stack_context(self):
        exc_info = []

        def error_handler(typ, value, tb):
            exc_info.append((typ, value, tb))
            self.stop()
            return True

        with ExceptionStackContext(error_handler):
            request = HTTPRequest(self.get_url('/'),
                                  prepare_curl_callback=lambda curl: 1 / 0)
        self.http_client.fetch(request, callback=self.stop)
        self.wait()
        self.assertEqual(1, len(exc_info))
        self.assertIs(exc_info[0][0], ZeroDivisionError)
Example #9
0
 def test_body_setter(self):
     request = HTTPRequest('http://example.com')
     request.body = 'foo'
     self.assertEqual(request.body, utf8('foo'))
Example #10
0
 def test_null_headers_setter(self):
     request = HTTPRequest('http://example.com')
     request.headers = None
     self.assertEqual(request.headers, {})
Example #11
0
 def test_headers_setter(self):
     request = HTTPRequest('http://example.com')
     request.headers = {'bar': 'baz'}
     self.assertEqual(request.headers, {'bar': 'baz'})
Example #12
0
 def test_headers(self):
     request = HTTPRequest('http://example.com', headers={'foo': 'bar'})
     self.assertEqual(request.headers, {'foo': 'bar'})
Example #13
0
 def test_defaults_none(self):
     proxy = _RequestProxy(HTTPRequest('http://example.com/'), None)
     self.assertIs(proxy.auth_username, None)
Example #14
0
 def test_both_set(self):
     proxy = _RequestProxy(
         HTTPRequest('http://example.com/', proxy_host='foo'),
         dict(proxy_host='bar'))
     self.assertEqual(proxy.proxy_host, 'foo')
Example #15
0
 def test_default_set(self):
     proxy = _RequestProxy(HTTPRequest('http://example.com/'),
                           dict(network_interface='foo'))
     self.assertEqual(proxy.network_interface, 'foo')
Example #16
0
 def test_request_set(self):
     proxy = _RequestProxy(
         HTTPRequest('http://example.com/', user_agent='foo'), dict())
     self.assertEqual(proxy.user_agent, 'foo')
Example #17
0
 def test_if_modified_since(self):
     http_date = datetime.datetime.utcnow()
     request = HTTPRequest('http://example.com',
                           if_modified_since=http_date)
     self.assertEqual(request.headers,
                      {'If-Modified-Since': format_timestamp(http_date)})
Example #18
0
 def test_neither_set(self):
     proxy = _RequestProxy(HTTPRequest('http://example.com/'), dict())
     self.assertIs(proxy.auth_username, None)
Example #19
0
 def test_bad_attribute(self):
     proxy = _RequestProxy(HTTPRequest('http://example.com/'), dict())
     with self.assertRaises(AttributeError):
         proxy.foo