def test_should_get_response_after_retry(self, mock_requests, mock_gevent): """ Should successfully receive a response from a POST call in the second call. """ mock_requests.post = MagicMock() mock_requests.post.return_value.raise_for_status = MagicMock( side_effect=[Exception(), None] ) mock_requests.post.return_value.json = PropertyMock(return_value={"return": "testReturn"}) args = { "url": "testURL", "data": "\"testJson\": \"testData\"", "headers": "testHeader" } res = DojotAPI.call_api(mock_requests.post, args) self.assertEqual(mock_requests.post.call_count, 2) mock_requests.post.assert_has_calls([ mock.call(**args), mock.call(**args), ], any_order=True) mock_gevent.sleep.assert_called_once_with(5.0) self.assertEqual(res, {"return": "testReturn"})
def test_should_not_get_response_limit_calls(self, mock_requests, mock_gevent): """ Should not receive a response from a POST call - limit of calls to the API. """ mock_requests.post = MagicMock() mock_requests.post.return_value.status_code = 429 mock_requests.post.return_value.raise_for_status = \ MagicMock(side_effect=requests.exceptions.HTTPError()) args = { "url": "testURL", "data": "\"testJson\": \"testData\"", "headers": "testHeader" } res = None with self.assertRaises(SystemExit) as context: res = DojotAPI.call_api(mock_requests.post, args) self.assertIsNotNone(context.exception) self.assertIsInstance(context.exception, SystemExit) mock_requests.post.assert_called_once_with(**args) mock_gevent.sleep.assert_not_called() self.assertIsNone(res)
def test_should_not_get_response(self, mock_requests, mock_gevent): """ Should not receive a response from a POST call - exceptions rose. """ mock_requests.post = MagicMock() mock_requests.post.return_value.raise_for_status = MagicMock(side_effect=Exception()) args = { "url": "testURL", "data": "\"testJson\": \"testData\"", "headers": "testHeader" } res = None with self.assertRaises(APICallError) as context: res = DojotAPI.call_api(mock_requests.post, args) self.assertIsNotNone(context.exception) self.assertIsInstance(context.exception, APICallError) self.assertEqual(mock_requests.post.call_count, 2) mock_requests.post.assert_has_calls([ mock.call(**args), mock.call(**args), ], any_order=True) self.assertEqual(mock_gevent.sleep.call_count, 2) mock_gevent.sleep.assert_has_calls([mock.call(5.0), mock.call(5.0)]) self.assertIsNone(res)
def test_should_not_return_json(self, mock_requests, mock_gevent): """ Should successfully make a POST call but do not return a JSON. """ mock_requests.post = MagicMock() mock_requests.post.return_value.json = PropertyMock(return_value={"return": "testReturn"}) args = { "url": "testURL", "data": "\"testJson\": \"testData\"", "headers": "testHeader" } res = DojotAPI.call_api(mock_requests.post, args, False) mock_requests.post.assert_called_once_with(**args) mock_gevent.sleep.assert_not_called() mock_requests.post.return_value.json.assert_not_called() self.assertIsNone(res)
def test_should_get_response(self, mock_requests, mock_gevent): """ Should successfully receive a response from a POST call. """ mock_requests.post = MagicMock() mock_requests.post.return_value.json = PropertyMock(return_value={"return": "testReturn"}) args = { "url": "testURL", "data": "\"testJson\": \"testData\"", "headers": "testHeader" } res = DojotAPI.call_api(mock_requests.post, args) mock_requests.post.assert_called_once_with(**args) mock_gevent.sleep.assert_not_called() mock_requests.post.return_value.json.assert_called_once() self.assertEqual(res, {"return": "testReturn"})