Skip to content

Commit 13afb85

Browse files
committed
false on http expection + tests
1 parent 0b07d89 commit 13afb85

2 files changed

Lines changed: 57 additions & 0 deletions

File tree

aws/logs_monitoring/settings.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -274,6 +274,7 @@ def is_api_key_valid():
274274
f"Could not validate Datadog API key due to a network error: {e}. "
275275
"Proceeding without validation."
276276
)
277+
return False
277278

278279
return True
279280

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
import unittest
2+
from unittest.mock import MagicMock, patch
3+
4+
import settings as _settings_module
5+
from settings import is_api_key_valid
6+
7+
VALID_API_KEY = "11111111111111111111111111111111"
8+
9+
class TestIsApiKeyValid(unittest.TestCase):
10+
@patch("settings.DD_API_KEY", VALID_API_KEY)
11+
@patch("settings.requests.Session")
12+
def test_valid_api_key(self, mock_session_cls):
13+
mock_response = MagicMock()
14+
mock_response.ok = True
15+
mock_session_cls.return_value.__enter__.return_value.get.return_value = (
16+
mock_response
17+
)
18+
self.assertTrue(is_api_key_valid())
19+
20+
@patch("settings.DD_API_KEY", "")
21+
def test_empty_api_key(self):
22+
with self.assertRaises(Exception):
23+
is_api_key_valid()
24+
25+
@patch("settings.DD_API_KEY", "shortapikey")
26+
def test_invalid_api_key_format(self):
27+
with self.assertRaises(Exception):
28+
is_api_key_valid()
29+
30+
@patch("settings.DD_API_KEY", VALID_API_KEY)
31+
@patch("settings.logger")
32+
@patch("settings.requests.Session")
33+
def test_on_connection_exception(self, mock_session_cls, mock_logger):
34+
mock_session_cls.return_value.__enter__.return_value.get.side_effect = (
35+
_settings_module.requests.exceptions.ConnectionError
36+
)
37+
result = is_api_key_valid()
38+
self.assertFalse(result)
39+
mock_logger.warning.assert_called_once()
40+
self.assertIn("network error", mock_logger.warning.call_args[0][0].lower())
41+
42+
@patch("settings.DD_API_KEY", VALID_API_KEY)
43+
@patch("settings.logger")
44+
@patch("settings.requests.Session")
45+
def test_on_timeout_exception(self, mock_session_cls, mock_logger):
46+
mock_session_cls.return_value.__enter__.return_value.get.side_effect = (
47+
_settings_module.requests.exceptions.Timeout
48+
)
49+
result = is_api_key_valid()
50+
self.assertFalse(result)
51+
mock_logger.warning.assert_called_once()
52+
self.assertIn("network error", mock_logger.warning.call_args[0][0].lower())
53+
54+
55+
if __name__ == "__main__":
56+
unittest.main()

0 commit comments

Comments
 (0)