def test_preflight_request_failed(self, prepare, _): response = _response() response.ok = False response.status_code = 404 response.reason = "Not Found" response.headers = { 'Content-Type': 'text/plain; charset=utf-8', 'Content-Length': '19', 'X-Content-Type-Options': 'nosniff', 'Date': 'Mon, 04 Feb 2019 15:26:29 GMT' } prepare.return_value = (_request(), []) session = mock.MagicMock() session.send.return_value = response request = _request(url="http://example.com/", headers={"Content-Type": "application/json"}, method="POST") with self.assertRaises(errors.AccessControlError) as context: requests.send(request, session) expected_message = "Pre-flight check failed. Response status: %s: %s, Headers: %s" % ( response.status_code, response.reason, response.headers) self.assertEqual(str(context.exception), expected_message)
def test_preflight_checks_fail(self, prepare, _): check_a = mock.MagicMock() check_b = mock.MagicMock(side_effect=errors.AccessControlError("foo")) prepare.return_value = (_request(), [check_a, check_b]) request = _request() with self.assertRaises(errors.AccessControlError) as context: requests.send(request, _session()) self.assertTrue(check_b.call_count > 0) self.assertEqual(str(context.exception), "foo") self.assertEqual(check_a.call_count, 1)
def test_preflight_checks_fail(self, prepare, _): check_a = mock.MagicMock() check_b = mock.MagicMock(side_effect=errors.AccessControlError("foo")) prepare.return_value = (_request(), [check_a, check_b]) request = _request() with self.assertRaises(errors.AccessControlError) as context: requests.send(request, _session()) self.assertTrue(check_b.call_count > 0) self.assertEqual(context.exception.message, "foo") self.assertEqual(check_a.call_count, 1)
def test_preflight_request_failed(self, prepare, _): response = _response() response.ok = False prepare.return_value = (_request(), []) session = mock.MagicMock() session.send.return_value = response request = _request(url="http://example.com/", headers={"Content-Type": "application/json"}, method="POST") with self.assertRaises(errors.AccessControlError) as context: requests.send(request, session) self.assertEqual(context.exception.message, "Pre-flight check failed")
def test_preflight_request_failed(self, prepare, _): response = _response() response.ok = False prepare.return_value = (_request(), []) session = mock.MagicMock() session.send.return_value = response request = _request( url="http://example.com/", headers={"Content-Type": "application/json"}, method="POST") with self.assertRaises(errors.AccessControlError) as context: requests.send(request, session) self.assertEqual(context.exception.message, "Pre-flight check failed")
def test_no_preflight_needed(self, prepare): prepare.return_value = (None, []) request = _request() response = requests.send(request, _session()) self.assertIsInstance(response.headers, utils.ProtectedHTTPHeaders)
def test_successful_request(self, prepare, _): check = mock.MagicMock() preflight_request = _request() prepare.return_value = (preflight_request, [check]) request = _request() session = _session() response = requests.send(request, session) self.assertEqual(session.send.call_count, 2) self.assertEqual(response, request._response)
def test_send_with_expected_server_error(self, prepare, _): check = preflight.check_headers prepare.return_value = (None, [check]) request = _request() request._response = _response() request._response.status_code = 500 request._response.headers["Access-Control-Allow-Headers"] = "foo" session = _session() response = requests.send(request, session, skip_checks_on_server_error=True) self.assertEqual(response.status_code, 500) self.assertNotIn("Content-Type", response.headers["Access-Control-Allow-Headers"])
def test_send_with_expected_server_error(self, prepare, _): check = preflight.check_headers prepare.return_value = (None, [check]) request = _request() request._response = _response() request._response.status_code = 500 request._response.headers["Access-Control-Allow-Headers"] = "foo" session = _session() response = requests.send( request, session, skip_checks_on_server_error=True) self.assertEqual(response.status_code, 500) self.assertNotIn( "Content-Type", response.headers["Access-Control-Allow-Headers"])