|
1 | 1 | from django.urls import reverse
|
2 | 2 |
|
| 3 | +import requests_mock |
3 | 4 | from django_webtest import WebTest
|
4 | 5 | from maykin_2fa.test import disable_admin_mfa
|
5 | 6 |
|
6 | 7 | from objects.accounts.tests.factories import UserFactory
|
| 8 | +from objects.token.tests.factories import ObjectTypeFactory |
| 9 | + |
| 10 | +from ..utils import mock_objecttype, mock_objecttype_version, mock_service_oas_get |
7 | 11 |
|
8 | 12 |
|
9 | 13 | @disable_admin_mfa()
|
| 14 | +@requests_mock.Mocker() |
10 | 15 | class ObjectTypeAdminVersionsTests(WebTest):
|
11 | 16 |
|
12 |
| - def test_authentication_view(self): |
| 17 | + def test_valid_response_view(self, m): |
| 18 | + objecttypes_api = "https://example.com/objecttypes/v1/" |
| 19 | + object_type = ObjectTypeFactory.create(service__api_root=objecttypes_api) |
| 20 | + mock_service_oas_get(m, objecttypes_api, "objecttypes") |
| 21 | + m.get(f"{objecttypes_api}objecttypes", json=[]) |
| 22 | + m.get(object_type.url, json=mock_objecttype(object_type.url)) |
| 23 | + version = mock_objecttype_version(object_type.url, attrs={"jsonSchema": {}}) |
| 24 | + m.get( |
| 25 | + f"{object_type.url}/versions", |
| 26 | + json={ |
| 27 | + "count": 1, |
| 28 | + "next": None, |
| 29 | + "previous": None, |
| 30 | + "results": [version], |
| 31 | + }, |
| 32 | + ) |
| 33 | + |
| 34 | + user = UserFactory.create(is_staff=True, is_superuser=True) |
| 35 | + |
| 36 | + # object_type exist |
| 37 | + url = reverse("admin:objecttype_versions", args=[object_type.pk]) |
| 38 | + response = self.app.get(url, user=user) |
| 39 | + self.assertEqual(response.status_code, 200) |
| 40 | + self.assertEqual(len(response.json), 1) |
| 41 | + |
| 42 | + # object_type does not exist |
| 43 | + url = reverse("admin:objecttype_versions", args=[100]) |
| 44 | + response = self.app.get(url, user=user) |
| 45 | + self.assertEqual(response.status_code, 200) |
| 46 | + self.assertEqual(len(response.json), 0) |
| 47 | + |
| 48 | + def test_endpoint_unreachable(self, m): |
| 49 | + user = UserFactory.create(is_staff=True, is_superuser=True) |
| 50 | + object_type = ObjectTypeFactory.create() |
| 51 | + url = reverse("admin:objecttype_versions", args=[object_type.pk]) |
| 52 | + |
| 53 | + with self.assertRaises(requests_mock.exceptions.NoMockAddress): |
| 54 | + self.app.get(url, user=user) |
| 55 | + |
| 56 | + def test_invalid_authentication_view(self, m): |
13 | 57 | url = reverse("admin:objecttype_versions", args=[1])
|
14 | 58 | response = self.client.get(url)
|
15 | 59 | redirect_url = f"{reverse('admin:login')}?next={url}"
|
16 | 60 | self.assertRedirects(response, redirect_url, status_code=302)
|
17 | 61 |
|
18 |
| - def test_permission_view(self): |
| 62 | + def test_invalid_permission_view(self, m): |
19 | 63 | user = UserFactory.create(is_staff=False, is_superuser=False)
|
20 | 64 | url = reverse("admin:objecttype_versions", args=[1])
|
21 | 65 | response = self.app.get(url, user=user, auto_follow=True)
|
22 | 66 | self.assertContains(
|
23 | 67 | response,
|
24 | 68 | f"You are authenticated as {user.username}, but are not authorized to access this page",
|
25 | 69 | )
|
26 |
| - |
27 |
| - user.is_staff = True |
28 |
| - user.save() |
29 |
| - |
30 |
| - url = reverse("admin:objecttype_versions", args=[1]) |
31 |
| - response = self.app.get(url, user=user) |
32 |
| - self.assertEqual(response.json, []) |
|
0 commit comments