Beispiel #1
0
    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"})
Beispiel #2
0
    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)
Beispiel #3
0
    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)
Beispiel #4
0
    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)
Beispiel #5
0
    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"})