Skip to content

Commit 014ffab

Browse files
authored
API versions tests (#1512)
This changes we will be able to tests different versions of API. issue: https://issues.redhat.com/browse/AAP-39022 Signed-off-by: Djebran Lezzoum <[email protected]>
1 parent 73d2a07 commit 014ffab

38 files changed

+840
-264
lines changed

ansible_ai_connect/ai/api/telemetry/tests/test_api_telemetry_settings_views.py

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -27,24 +27,24 @@
2727
IsOrganisationLightspeedSubscriber,
2828
)
2929
from ansible_ai_connect.ai.api.tests.test_views import WisdomServiceAPITestCaseBase
30-
from ansible_ai_connect.ai.api.utils.version import api_version_reverse as reverse
3130
from ansible_ai_connect.organizations.models import Organization
31+
from ansible_ai_connect.test_utils import APIVersionTestCaseBase
3232

3333

3434
@patch.object(IsOrganisationAdministrator, "has_permission", return_value=True)
3535
@patch.object(IsOrganisationLightspeedSubscriber, "has_permission", return_value=True)
36-
class TestTelemetrySettingsView(WisdomServiceAPITestCaseBase):
36+
class TestTelemetrySettingsView(APIVersionTestCaseBase, WisdomServiceAPITestCaseBase):
3737
def setUp(self):
3838
super().setUp()
3939
feature_flags.FeatureFlags.instance = None
4040

4141
def test_get_settings_authentication_error(self, *args):
4242
# self.client.force_authenticate(user=self.user)
43-
r = self.client.get(reverse("telemetry_settings"))
43+
r = self.client.get(self.api_version_reverse("telemetry_settings"))
4444
self.assertEqual(r.status_code, HTTPStatus.UNAUTHORIZED)
4545

4646
def test_permission_classes(self, *args):
47-
url = reverse("telemetry_settings")
47+
url = self.api_version_reverse("telemetry_settings")
4848
view = resolve(url).func.view_class
4949

5050
required_permissions = [
@@ -62,7 +62,7 @@ def test_get_settings_without_org_id(self, *args):
6262
self.client.force_authenticate(user=self.user)
6363

6464
with self.assertLogs(logger="root", level="DEBUG") as log:
65-
r = self.client.get(reverse("telemetry_settings"))
65+
r = self.client.get(self.api_version_reverse("telemetry_settings"))
6666
self.assertEqual(r.status_code, HTTPStatus.BAD_REQUEST)
6767
self.assert_segment_log(log, "telemetrySettingsGet", None)
6868

@@ -75,7 +75,7 @@ def test_get_settings_when_undefined(self, LDClient, *args):
7575
self.client.force_authenticate(user=self.user)
7676

7777
with self.assertLogs(logger="root", level="DEBUG") as log:
78-
r = self.client.get(reverse("telemetry_settings"))
78+
r = self.client.get(self.api_version_reverse("telemetry_settings"))
7979
self.assertEqual(r.status_code, HTTPStatus.OK)
8080
self.assertFalse(r.data["optOut"])
8181
self.assert_segment_log(log, "telemetrySettingsGet", None, opt_out=False)
@@ -91,22 +91,22 @@ def test_get_settings_when_defined(self, LDClient, *args):
9191
self.client.force_authenticate(user=self.user)
9292

9393
with self.assertLogs(logger="root", level="DEBUG") as log:
94-
r = self.client.get(reverse("telemetry_settings"))
94+
r = self.client.get(self.api_version_reverse("telemetry_settings"))
9595
self.assertEqual(r.status_code, HTTPStatus.OK)
9696
self.assertTrue(r.data["optOut"])
9797
self.assert_segment_log(log, "telemetrySettingsGet", None, opt_out=True)
9898

9999
def test_set_settings_authentication_error(self, *args):
100100
# self.client.force_authenticate(user=self.user)
101-
r = self.client.post(reverse("telemetry_settings"))
101+
r = self.client.post(self.api_version_reverse("telemetry_settings"))
102102
self.assertEqual(r.status_code, HTTPStatus.UNAUTHORIZED)
103103

104104
@override_settings(SEGMENT_WRITE_KEY="DUMMY_KEY_VALUE")
105105
def test_set_settings_without_org_id(self, *args):
106106
self.client.force_authenticate(user=self.user)
107107

108108
with self.assertLogs(logger="root", level="DEBUG") as log:
109-
r = self.client.post(reverse("telemetry_settings"))
109+
r = self.client.post(self.api_version_reverse("telemetry_settings"))
110110
self.assertEqual(r.status_code, HTTPStatus.BAD_REQUEST)
111111
self.assert_segment_log(log, "telemetrySettingsSet", None)
112112

@@ -118,15 +118,15 @@ def test_set_settings_with_valid_value(self, LDClient, *args):
118118
self.user.organization = Organization.objects.get_or_create(id=123)[0]
119119
self.client.force_authenticate(user=self.user)
120120
# Settings should initially be False
121-
r = self.client.get(reverse("telemetry_settings"))
121+
r = self.client.get(self.api_version_reverse("telemetry_settings"))
122122
self.assertEqual(r.status_code, HTTPStatus.OK)
123123
self.assertFalse(r.data["optOut"])
124124

125125
# Set settings
126126
with self.assertLogs(logger="ansible_ai_connect.users.signals", level="DEBUG") as signals:
127127
with self.assertLogs(logger="root", level="DEBUG") as log:
128128
r = self.client.post(
129-
reverse("telemetry_settings"),
129+
self.api_version_reverse("telemetry_settings"),
130130
data='{ "optOut": "True" }',
131131
content_type="application/json",
132132
)
@@ -141,7 +141,7 @@ def test_set_settings_with_valid_value(self, LDClient, *args):
141141
)
142142

143143
# Check Settings were stored
144-
r = self.client.get(reverse("telemetry_settings"))
144+
r = self.client.get(self.api_version_reverse("telemetry_settings"))
145145
self.assertEqual(r.status_code, HTTPStatus.OK)
146146
self.assertTrue(r.data["optOut"])
147147

@@ -156,7 +156,7 @@ def test_set_settings_throws_exception(self, LDClient, *args):
156156
with patch("django.db.models.base.Model.save", side_effect=DatabaseError()):
157157
with self.assertLogs(logger="root", level="DEBUG") as log:
158158
r = self.client.post(
159-
reverse("telemetry_settings"),
159+
self.api_version_reverse("telemetry_settings"),
160160
data='{ "optOut": "False" }',
161161
content_type="application/json",
162162
)
@@ -173,7 +173,7 @@ def test_set_settings_throws_validation_exception(self, LDClient, *args):
173173

174174
with self.assertLogs(logger="root", level="DEBUG") as log:
175175
r = self.client.post(
176-
reverse("telemetry_settings"),
176+
self.api_version_reverse("telemetry_settings"),
177177
data='{ "unknown_json_field": "a-new-key" }',
178178
content_type="application/json",
179179
)
@@ -183,9 +183,11 @@ def test_set_settings_throws_validation_exception(self, LDClient, *args):
183183

184184
@patch.object(IsOrganisationAdministrator, "has_permission", return_value=True)
185185
@patch.object(IsOrganisationLightspeedSubscriber, "has_permission", return_value=False)
186-
class TestTelemetrySettingsViewAsNonSubscriber(WisdomServiceAPITestCaseBase):
186+
class TestTelemetrySettingsViewAsNonSubscriber(
187+
APIVersionTestCaseBase, WisdomServiceAPITestCaseBase
188+
):
187189
def test_get_settings_as_non_subscriber(self, *args):
188190
self.user.organization = Organization.objects.get_or_create(id=123)[0]
189191
self.client.force_authenticate(user=self.user)
190-
r = self.client.get(reverse("telemetry_settings"))
192+
r = self.client.get(self.api_version_reverse("telemetry_settings"))
191193
self.assertEqual(r.status_code, HTTPStatus.FORBIDDEN)

ansible_ai_connect/ai/api/tests/test_api_timeout.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
from ansible_ai_connect.ai.api.model_pipelines.wca.pipelines_saas import (
3434
WCASaaSCompletionsPipeline,
3535
)
36-
from ansible_ai_connect.ai.api.utils.version import api_version_reverse as reverse
36+
from ansible_ai_connect.test_utils import APIVersionTestCaseBase
3737

3838
from ..model_pipelines.tests import mock_pipeline_config
3939
from .test_views import WisdomServiceAPITestCaseBase
@@ -45,7 +45,7 @@ def mock_timeout_error():
4545
return e
4646

4747

48-
class TestApiTimeout(WisdomServiceAPITestCaseBase):
48+
class TestApiTimeout(APIVersionTestCaseBase, WisdomServiceAPITestCaseBase):
4949

5050
def test_timeout_settings_is_none(self):
5151
model_client = HttpMetaData(mock_pipeline_config("http", timeout=None))
@@ -96,7 +96,7 @@ def test_timeout_http_timeout(self, _):
9696
"get_model_pipeline",
9797
Mock(return_value=HttpCompletionsPipeline(mock_pipeline_config("http"))),
9898
):
99-
r = self.client.post(reverse("completions"), payload)
99+
r = self.client.post(self.api_version_reverse("completions"), payload)
100100
self.assertEqual(HTTPStatus.NO_CONTENT, r.status_code)
101101
self.assert_error_detail(
102102
r, ModelTimeoutException.default_code, ModelTimeoutException.default_detail
@@ -115,7 +115,7 @@ def test_timeout_grpc_timeout(self, _):
115115
"get_model_pipeline",
116116
Mock(return_value=GrpcCompletionsPipeline(mock_pipeline_config("grpc"))),
117117
):
118-
r = self.client.post(reverse("completions"), payload)
118+
r = self.client.post(self.api_version_reverse("completions"), payload)
119119
self.assertEqual(HTTPStatus.NO_CONTENT, r.status_code)
120120
self.assert_error_detail(
121121
r, ModelTimeoutException.default_code, ModelTimeoutException.default_detail

ansible_ai_connect/ai/api/tests/test_chat_view.py

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -36,14 +36,16 @@
3636
)
3737
from ansible_ai_connect.ai.api.model_pipelines.http.pipelines import HttpChatBotPipeline
3838
from ansible_ai_connect.ai.api.model_pipelines.tests import mock_pipeline_config
39-
from ansible_ai_connect.ai.api.utils.version import api_version_reverse as reverse
4039
from ansible_ai_connect.organizations.models import Organization
41-
from ansible_ai_connect.test_utils import WisdomServiceAPITestCaseBase
40+
from ansible_ai_connect.test_utils import (
41+
APIVersionTestCaseBase,
42+
WisdomServiceAPITestCaseBase,
43+
)
4244

4345
logger = logging.getLogger(__name__)
4446

4547

46-
class TestChatView(WisdomServiceAPITestCaseBase):
48+
class TestChatView(APIVersionTestCaseBase, WisdomServiceAPITestCaseBase):
4749

4850
VALID_PAYLOAD = {
4951
"query": "Hello",
@@ -174,14 +176,14 @@ def json(self):
174176
side_effect=mocked_requests_post,
175177
)
176178
def query_with_no_error(self, payload, mock_post):
177-
return self.client.post(reverse("chat"), payload, format="json")
179+
return self.client.post(self.api_version_reverse("chat"), payload, format="json")
178180

179181
@mock.patch(
180182
"requests.post",
181183
side_effect=mocked_requests_post,
182184
)
183185
def query_without_chat_config(self, payload, mock_post):
184-
return self.client.post(reverse("chat"), payload, format="json")
186+
return self.client.post(self.api_version_reverse("chat"), payload, format="json")
185187

186188
def assert_test(
187189
self,

0 commit comments

Comments
 (0)