Skip to content

Commit de7e9e9

Browse files
committed
Fill out more test cases for access list
1 parent 42e2321 commit de7e9e9

File tree

2 files changed

+50
-2
lines changed

2 files changed

+50
-2
lines changed

test_app/tests/rbac/api/test_access_lists.py

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
import pytest
22

33
from ansible_base.lib.utils.response import get_relative_url
4-
5-
from test_app.models import User, Team
4+
from test_app.models import Team, User
65

76

87
@pytest.mark.django_db
@@ -38,3 +37,29 @@ def test_user_access_list(admin_api_client, inv_rd, org_inv_rd, inventory, membe
3837
assert u3.username in user_data
3938
assert len(user_data[u3.username]) == 1
4039
assert user_data[u3.username][0]['type'] == 'team'
40+
41+
42+
@pytest.mark.django_db
43+
def test_team_access_list(admin_api_client, inv_rd, org_inv_rd, inventory, member_rd):
44+
url = get_relative_url('role-team-access', kwargs={'pk': inventory.pk, 'model_name': 'aap.inventory'})
45+
46+
t1 = Team.objects.create(name='org-access', organization=inventory.organization)
47+
org_inv_rd.give_permission(t1, inventory.organization)
48+
49+
t2 = Team.objects.create(name='direct-access', organization=inventory.organization)
50+
inv_rd.give_permission(t2, inventory)
51+
52+
response = admin_api_client.get(url)
53+
assert response.status_code == 200
54+
55+
team_data = {}
56+
for team_detail in response.data['results']:
57+
team_data[team_detail['name']] = team_detail['role_assignments']
58+
59+
assert t1.name in team_data
60+
assert len(team_data[t1.name]) == 1
61+
assert team_data[t1.name][0]['type'] == 'indirect'
62+
63+
assert t2.name in team_data
64+
assert len(team_data[t2.name]) == 1
65+
assert team_data[t2.name][0]['type'] == 'direct'
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import pytest
2+
3+
from ansible_base.lib.utils.response import get_relative_url
4+
from ansible_base.rbac.remote import RemoteObject
5+
6+
7+
@pytest.mark.django_db
8+
def test_user_access_list_remote_obj(admin_api_client, rando, foo_type, foo_rd):
9+
url = get_relative_url('role-user-access', kwargs={'pk': 42, 'model_name': foo_type.api_slug})
10+
11+
a_foo = RemoteObject(content_type=foo_type, object_id=42)
12+
foo_rd.give_permission(rando, a_foo)
13+
14+
response = admin_api_client.get(url)
15+
assert response.status_code == 200
16+
user_data = {}
17+
for user_detail in response.data['results']:
18+
user_data[user_detail['username']] = user_detail['role_assignments']
19+
20+
# User is shown as having direct access to the remote object
21+
assert rando.username in user_data
22+
assert len(user_data[rando.username]) == 1
23+
assert user_data[rando.username][0]['type'] == 'direct'

0 commit comments

Comments
 (0)