def test_json_or_error_raises_404(self): """ JsonApiRequest.json_or_error should raise an error on HTTP status 404 """ response_mock = Mock() response_mock.url = 'http://nowhere.example.com' response_mock.status_code = 404 with self.assertRaisesMessage( JsonApiError, 'API request to http://nowhere.example.com failed with HTTP status 404'): JsonApiRequest.json_or_error(response_mock)
def test_json_or_error_raises_500(self): """ JsonApiRequest.json_or_error should raise an error on HTTP status 500 """ response_mock = Mock() response_mock.url = 'http://broken.example.com' response_mock.status_code = 500 response_mock.text = 'Oops!' with self.assertRaisesMessage( JsonApiError, 'API request to http://broken.example.com failed with HTTP status 500: Oops!'): JsonApiRequest.json_or_error(response_mock)
def test_json_or_error_raises_500(self): """ JsonApiRequest.json_or_error should raise an error on HTTP status 500 """ response_mock = Mock() response_mock.url = 'http://broken.example.com' response_mock.status_code = 500 response_mock.text = 'Oops!' with self.assertRaisesMessage( JsonApiError, 'API request to http://broken.example.com failed with HTTP status 500: Oops!' ): JsonApiRequest.json_or_error(response_mock)
def test_json_or_error_raises_404(self): """ JsonApiRequest.json_or_error should raise an error on HTTP status 404 """ response_mock = Mock() response_mock.url = 'http://nowhere.example.com' response_mock.status_code = 404 response_mock.text = 'Where?' with self.assertRaisesMessage( JsonApiError, 'API request to http://nowhere.example.com failed with HTTP status 404: Where?' ): JsonApiRequest.json_or_error(response_mock)
def test_get_calls_requests(self): """ JsonApiRequest.get should call requests.get and return the JSON result """ with patch('requests.get') as requests_mock, \ response_context() as response_mock: requests_mock.return_value = response_mock request = JsonApiRequest('http://www.example.com', 'admin', 's3cr3t') data = request.get('ham/eggs') requests_mock.assert_called_with( 'http://www.example.com/api/ham/eggs', headers={'Accept': 'application/json'}, auth=('admin', 's3cr3t')) self.assertEqual(data, {'spam': True})
def test_json_or_error_returns(self): """ JsonApiRequest.json_or_error should return a status code and JSON on success """ with response_context() as response_mock: data = JsonApiRequest.json_or_error(response_mock) self.assertEqual(data, {'spam': True})