|
| 1 | +from copy import deepcopy |
| 2 | + |
1 | 3 | import pytest |
2 | 4 |
|
3 | 5 | from ansible_base.lib.utils.response import get_relative_url |
| 6 | +from ansible_base.rbac.models import DABContentType, DABPermission |
4 | 7 |
|
5 | 8 |
|
6 | 9 | @pytest.mark.django_db |
@@ -51,3 +54,48 @@ def test_role_definition_listed_as_resource(admin_api_client, org_admin_rd): |
51 | 54 | assert resource_data['content_type'] == 'shared.organization' |
52 | 55 | assert 'permissions' in detail.data['additional_data'] |
53 | 56 | assert 'aap.add_inventory' in detail.data['additional_data']['permissions'] |
| 57 | + |
| 58 | + |
| 59 | +@pytest.mark.django_db |
| 60 | +def test_reload_types(admin_api_client): |
| 61 | + url = get_relative_url('dabcontenttype-list') |
| 62 | + response = admin_api_client.get(url + '?page_size=200', format="json") |
| 63 | + assert response.status_code == 200, response.data |
| 64 | + |
| 65 | + type_list = response.data['results'] |
| 66 | + original = deepcopy(type_list) |
| 67 | + |
| 68 | + DABContentType.objects.all().delete() # Delete all types, see if we get them back |
| 69 | + |
| 70 | + DABContentType.objects.load_remote_types(type_list) |
| 71 | + |
| 72 | + response = admin_api_client.get(url + '?page_size=200', format="json") |
| 73 | + assert response.status_code == 200, response.data |
| 74 | + |
| 75 | + assert response.data['results'] == original |
| 76 | + |
| 77 | + |
| 78 | +@pytest.mark.django_db |
| 79 | +def test_load_child_of_org(): |
| 80 | + DABContentType.objects.load_remote_types([{'service': 'fooland', 'app_label': 'foop', 'model': 'fooser', 'parent_content_type': 'shared.organization'}]) |
| 81 | + ct = DABContentType.objects.get(api_slug='fooland.fooser') |
| 82 | + assert ct.parent_content_type.app_label == 'test_app' # proves connection to existing |
| 83 | + |
| 84 | + |
| 85 | +@pytest.mark.django_db |
| 86 | +def test_reload_permissions(admin_api_client): |
| 87 | + url = get_relative_url('dabpermission-list') |
| 88 | + response = admin_api_client.get(url + '?page_size=200', format="json") |
| 89 | + assert response.status_code == 200, response.data |
| 90 | + |
| 91 | + perm_list = response.data['results'] |
| 92 | + original = deepcopy(perm_list) |
| 93 | + |
| 94 | + DABPermission.objects.all().delete() # Delete all permissions, see if we get them back |
| 95 | + |
| 96 | + DABPermission.objects.load_remote_types(perm_list) |
| 97 | + |
| 98 | + response = admin_api_client.get(url + '?page_size=200', format="json") |
| 99 | + assert response.status_code == 200, response.data |
| 100 | + |
| 101 | + assert response.data['results'] == original |
0 commit comments