Skip to content

Commit 5c8109b

Browse files
committed
my new shiny tests
1 parent 20dc761 commit 5c8109b

File tree

2 files changed

+36
-5
lines changed

2 files changed

+36
-5
lines changed

test_app/tests/rbac/remote/test_public_api_compat.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
from ansible_base.lib.utils.response import get_relative_url
66
from ansible_base.rbac import permission_registry
77
from ansible_base.rbac.remote import RemoteObject
8+
from ansible_base.rbac.models import RoleUserAssignment
89
from test_app.models import Organization
910

1011
# Role Definitions
@@ -111,5 +112,28 @@ def test_give_permission_to_remote_object_uuid(admin_api_client, rando, foo_type
111112
data = {"role_definition": foo_rd_uuid.id, "user": rando.pk, "object_id": pk_value}
112113
response = admin_api_client.post(path=url, data=data)
113114
assert response.status_code == 201, response.data
115+
assignment = RoleUserAssignment.objects.get(pk=response.data['id'])
116+
117+
# Test that we can serialize the assignment in a GET
118+
response = admin_api_client.get(url)
119+
assert response.status_code == 200, response.data
120+
valid_items = [item for item in response.data['results'] if item['id'] == assignment.id]
121+
assert len(valid_items) == 1
122+
assignment_data = valid_items[0]
123+
import pdb; pdb.set_trace()
124+
assert 'content_object' in assignment_data
125+
assert assignment_data['content_object']['object_id'] == str(a_foo.object_id)
114126

115127
assert rando.has_obj_perm(a_foo, 'foo')
128+
129+
service_url = get_relative_url('serviceuserassignment-list')
130+
response = admin_api_client.get(service_url + f'?user={rando.id}', format="json")
131+
assert response.status_code == 200, response.data
132+
assert response.data['count'] == 1
133+
assignment_data = response.data['results'][0]
134+
assert assignment_data['object_id'] == str(assignment.object_id)
135+
136+
from ansible_base.rbac.service_api.serializers import ServiceRoleTeamAssignmentSerializer, ServiceRoleUserAssignmentSerializer
137+
serializer = ServiceRoleUserAssignmentSerializer(assignment)
138+
assignment_data = serializer.data
139+
assert assignment_data['object_id'] == str(assignment.object_id)

test_app/tests/rbac/remote/test_remote_assignment.py

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import uuid
2+
13
import pytest
24

35
from ansible_base.rbac.models import DABContentType, DABPermission, RoleDefinition, RoleUserAssignment
@@ -34,18 +36,23 @@ def test_give_remote_permission(rando, foo_type, foo_permission, foo_rd):
3436

3537

3638
@pytest.mark.django_db
37-
def test_prefetch_related_objects(foo_type, foo_rd, inv_rd, inventory):
39+
def test_prefetch_related_objects(django_assert_num_queries, foo_type, foo_type_uuid, foo_rd, foo_rd_uuid, inv_rd, inventory):
3840
users = [User.objects.create(username=f'user{i}') for i in range(10)]
3941

4042
a_foo = RemoteObject(content_type=foo_type, object_id=42)
43+
a_foo_uuid = RemoteObject(content_type=foo_type_uuid, object_id=str(uuid.uuid4()))
4144
for u in users:
4245
foo_rd.give_permission(u, a_foo)
46+
foo_rd_uuid.give_permission(u, a_foo_uuid)
4347
inv_rd.give_permission(u, inventory)
4448

45-
assert RoleUserAssignment.objects.count() == 20
46-
assert {assignment.content_object for assignment in RoleUserAssignment.objects.all()} == {a_foo, inventory}
47-
assert {assignment.content_object for assignment in RoleUserAssignment.objects.all()} == {a_foo, inventory}
48-
assert {assignment.content_object for assignment in RoleUserAssignment.objects.prefetch_related('content_object')} == {a_foo, inventory}
49+
assert RoleUserAssignment.objects.count() == 10*3
50+
with django_assert_num_queries(2):
51+
assert {assignment.content_object for assignment in RoleUserAssignment.objects.all()} == {a_foo, inventory, a_foo_uuid}
52+
with django_assert_num_queries(2):
53+
assert {assignment.content_object for assignment in RoleUserAssignment.objects.all()} == {a_foo, inventory, a_foo_uuid}
54+
with django_assert_num_queries(2):
55+
assert {assignment.content_object for assignment in RoleUserAssignment.objects.prefetch_related('content_object')} == {a_foo, inventory, a_foo_uuid}
4956

5057

5158
@pytest.mark.django_db

0 commit comments

Comments
 (0)