diff --git a/tests/test_simple_api.py b/tests/test_simple_api.py index 11da63ee7a1b2a601cd0d2757c4c5e7a73737a2f..12aa24c45c4c7816fafd0d682a416803e94a036c 100644 --- a/tests/test_simple_api.py +++ b/tests/test_simple_api.py @@ -17,6 +17,7 @@ # along with this program. If not, see <http://www.gnu.org/licenses/>. +import json import unittest from unittest import mock @@ -49,6 +50,8 @@ class TestApi(unittest.TestCase): return self.json_data print(f"Calling mocked 'requests.get' with '{args[0]}'") + if args[0] == "http://aura.test.available": + return MockResponse({"foo": "bar"}, 200) if args[0] == "http://aura.test.available/bad-request": return MockResponse({}, 400) if args[0] == "http://aura.test.available/connection-error": @@ -57,6 +60,28 @@ class TestApi(unittest.TestCase): raise requests.exceptions.Timeout if args[0] == "http://aura.test.available/exception": raise Exception + if args[0] == "http://aura.test.available/not-found": + return MockResponse({}, 404) + if args[0] == "https://some.website.no.api": + return MockResponse({}, 405) + + return MockResponse(None, 404) + + # Mock `requests.put` in `SimpleRestApi` + def mocked_requests_put(*args, **kwargs): + class MockResponse: + def __init__(self, json_data, status_code): + self.json_data = json_data + self.status_code = status_code + + def json(self): + return self.json_data + + print(f"Calling mocked 'requests.put' with '{args[0]}'") + if args[0] == "http://aura.test.available/bad-request": + return MockResponse({}, 400) + if args[0] == "http://aura.test.available/not-found": + return MockResponse({}, 404) return MockResponse(None, 404) @@ -108,12 +133,14 @@ class TestApi(unittest.TestCase): except ValueError: self.assertTrue("Value not found in dict") - def test_get(self): + @mock.patch("aura_engine.base.api.requests.get", side_effect=mocked_requests_get) + def test_get(self, mock_get): print(self._testMethodName) - result = self.api.get("https://o94.at/") + result = self.api.get("http://aura.test.available") # Success self.assertEqual(200, result.response.status_code) + self.assertEqual("bar", result.json["foo"]) @mock.patch("aura_engine.base.api.requests.get", side_effect=mocked_requests_get) def test_get_bad_request(self, mock_get): @@ -131,43 +158,57 @@ class TestApi(unittest.TestCase): # Bad Request self.assertEqual(400, result.response.status_code) - @mock.patch("aura_engine.base.api.requests.get", side_effect=mocked_requests_get) - def test_get_exception(self, mock_get): + @mock.patch("aura_engine.base.api.requests.post") + def test_post_success(self, mock_post): + mock_post.return_value.status_code = 201 + mock_post.return_value.json.return_value = "mock response" + print(self._testMethodName) - result = self.api.get("http://aura.test.available/exception") + data = {"foo": "bar"} - # Bad Request - self.assertEqual(400, result.response.status_code) + result = self.api.post("http://aura.test.available/api", data=data) - @mock.patch("aura_engine.base.api.requests.get", side_effect=mocked_requests_get) - def test_get_timeout(self, mock_get): - print(self._testMethodName) - result = self.api.get("http://aura.test.available/timeout") + mock_post.assert_called_once_with( + "http://aura.test.available/api", + data=json.dumps({"foo": "bar"}, indent=4, sort_keys=True, default=str), + headers={"content-type": "application/json"}, + ) - # Bad Request - self.assertEqual(400, result.response.status_code) + # print(result) + self.assertEqual(201, result.response.status_code) + + @mock.patch("aura_engine.base.api.requests.put") + def test_put_success(self, mock_post): + mock_post.return_value.status_code = 200 + mock_post.return_value.json.return_value = "mock response" - def test_post(self): print(self._testMethodName) data = {"foo": "bar"} - # Not allowed - result = self.api.post("https://o94.at/", data=data) - print(result) - self.assertEqual(405, result.response.status_code) + result = self.api.put("http://aura.test.available/api", data=data) + + mock_post.assert_called_once_with( + "http://aura.test.available/api", + data=json.dumps({"foo": "bar"}, indent=4, sort_keys=True, default=str), + headers={"content-type": "application/json"}, + ) + + # print(result) + self.assertEqual(200, result.response.status_code) - def test_put(self): + @mock.patch("aura_engine.base.api.requests.put", side_effect=mocked_requests_put) + def test_put(self, mock_put): print(self._testMethodName) data = {"foo": "bar"} # Bad request: Invalid URL - result = self.api.put("http:/0.0.0.0/invalid-service", data=data) - print(result) + result = self.api.put("http://aura.test.available/bad-request", data=data) + # print(result) self.assertEqual(400, result.response.status_code) # Not found - result = self.api.put("https://o94.at/invalid-service", data=data) - print(result) + result = self.api.put("http://aura.test.available/not-found", data=data) + # print(result) self.assertEqual(404, result.response.status_code)