def setUp(self):
     super(Function_fetch_Tests, self).setUp()
     self.http_client = WrappedClient()
Beispiel #2
0
 def setUp(self):
     super(Function_fetch_Tests, self).setUp()
     self.http_client = WrappedClient()
class Function_fetch_Tests(AsyncHTTPTestCase):
    def setUp(self):
        super(Function_fetch_Tests, self).setUp()
        self.http_client = WrappedClient()

    def get_app(self):
        return Application([(r"/.*", Handler)])

    @gen_test
    def test_no_preflight_needed(self):
        request = HTTPRequest(url=self.get_url(
            "/"
            "?header=Access-Control-Allow-Origin:*"),
                              headers={
                                  "Host": "localhost",
                                  "Origin": self.get_url("/")
                              })

        response = yield self.http_client.fetch(request)

        self.assertIsInstance(response.headers, utils.ProtectedHTTPHeaders)

    @gen_test
    def test_preflight_request_failed(self):
        request = HTTPRequest(url=self.get_url(
            "/"
            "?header=Access-Control-Allow-Origin:*"
            "&error=true"),
                              headers={
                                  "Content-Type": "application/json",
                                  "Host": "foo",
                                  "Origin": "foo",
                                  "foobar": "baz"
                              },
                              method="POST",
                              body="")

        with self.assertRaises(errors.AccessControlError) as context:
            yield self.http_client.fetch(request)

        self.assertEqual(str(context.exception), "Pre-flight check failed")

    @gen_test
    def test_preflight_checks_fail(self):
        request = HTTPRequest(url=self.get_url(
            "/"
            "?header=Access-Control-Allow-Headers:Bar"
            "&header=Access-Control-Allow-Origin:*"),
                              headers={
                                  "foo": "bar",
                                  "Bar": "baz",
                                  "Host": "foo",
                                  "Origin": "foo"
                              })

        with self.assertRaises(errors.AccessControlError) as context:
            yield self.http_client.fetch(request)

        self.assertRegexpMatches(str(context.exception),
                                 "Headers .*'foo'.* not allowed")

    @gen_test
    def test_successful_request(self):
        request = HTTPRequest(self.get_url(
            "/"
            "?header=Access-Control-Allow-Origin:*"
            "&header=Access-Control-Allow-Method:POST"),
                              method="POST",
                              body="foo",
                              headers={
                                  "Origin": "foo",
                                  "Host": "foobar"
                              })

        response = yield self.http_client.fetch(request)

        self.assertEqual(response.code, 200)

    @gen_test
    def test_send_with_expected_server_error(self):
        self.http_client.skip_checks_on_server_error = True
        request = HTTPRequest(
            self.get_url("/?header=Access-Control-Allow-Origin:*&error=true"),
            method="HEAD",
            headers={
                "Host": "localhost",
                "Origin": self.get_url("")
            })

        response = yield self.http_client.fetch(request, raise_error=False)

        self.assertEqual(response.code, 502)
Beispiel #4
0
class Function_fetch_Tests(AsyncHTTPTestCase):
    def setUp(self):
        super(Function_fetch_Tests, self).setUp()
        self.http_client = WrappedClient()

    def get_app(self):
        return Application([
            (r"/.*", Handler)
        ])

    @gen_test
    def test_no_preflight_needed(self):
        request = HTTPRequest(
            url=self.get_url(
                "/"
                "?header=Access-Control-Allow-Origin:*"
            ),
            headers={
                "Host": "localhost",
                "Origin": self.get_url("/")
            })

        response = yield self.http_client.fetch(request)

        self.assertIsInstance(response.headers, utils.ProtectedHTTPHeaders)

    @gen_test
    def test_preflight_request_failed(self):
        request = HTTPRequest(
            url=self.get_url(
                "/"
                "?header=Access-Control-Allow-Origin:*"
                "&error=true"
            ),
            headers={
                "Content-Type": "application/json",
                "Host": "foo",
                "Origin": "foo",
                "foobar": "baz"
            },
            method="POST",
            body="")

        with self.assertRaises(errors.AccessControlError) as context:
            yield self.http_client.fetch(request)

        self.assertEqual(context.exception.message, "Pre-flight check failed")

    @gen_test
    def test_preflight_checks_fail(self):
        request = HTTPRequest(
            url=self.get_url(
                "/"
                "?header=Access-Control-Allow-Headers:Bar"
                "&header=Access-Control-Allow-Origin:*"
            ),
            headers={
                "foo": "bar",
                "Bar": "baz",
                "Host": "foo",
                "Origin": "foo"
            })

        with self.assertRaises(errors.AccessControlError) as context:
            yield self.http_client.fetch(request)

        self.assertRegexpMatches(
            context.exception.message,
            "Headers set(.*'foo'.*) not allowed")

    @gen_test
    def test_successful_request(self):
        request = HTTPRequest(
            self.get_url(
                "/"
                "?header=Access-Control-Allow-Origin:*"
                "&header=Access-Control-Allow-Method:POST"
            ),
            method="POST",
            body="foo",
            headers={
                "Origin": "foo",
                "Host": "foobar"
            }
        )

        response = yield self.http_client.fetch(request)

        self.assertEqual(response.code, 200)

    @gen_test
    def test_send_with_expected_server_error(self):
        self.http_client.skip_checks_on_server_error = True
        request = HTTPRequest(
            self.get_url("/?header=Access-Control-Allow-Origin:*&error=true"),
            method="HEAD",
            headers={
                "Host": "localhost",
                "Origin": self.get_url("")
            })

        response = yield self.http_client.fetch(request, raise_error=False)

        self.assertEqual(response.code, 502)