|
| 1 | +import pytest |
| 2 | + |
| 3 | +from ansible_base.lib.utils.response import get_relative_url |
| 4 | + |
| 5 | +from test_app.models import User, Team |
| 6 | + |
| 7 | + |
| 8 | +@pytest.mark.django_db |
| 9 | +def test_user_access_list(admin_api_client, inv_rd, org_inv_rd, inventory, member_rd): |
| 10 | + url = get_relative_url('role-user-access', kwargs={'pk': inventory.pk, 'model_name': 'aap.inventory'}) |
| 11 | + |
| 12 | + u1 = User.objects.create(username='direct-inv-access') |
| 13 | + inv_rd.give_permission(u1, inventory) |
| 14 | + |
| 15 | + u2 = User.objects.create(username='org-level-access') |
| 16 | + org_inv_rd.give_permission(u2, inventory.organization) |
| 17 | + |
| 18 | + u3 = User.objects.create(username='team-via-access') |
| 19 | + team = Team.objects.create(name='proxy-team', organization=inventory.organization) |
| 20 | + inv_rd.give_permission(team, inventory) |
| 21 | + member_rd.give_permission(u3, team) |
| 22 | + |
| 23 | + response = admin_api_client.get(url) |
| 24 | + assert response.status_code == 200 |
| 25 | + |
| 26 | + user_data = {} |
| 27 | + for user_detail in response.data['results']: |
| 28 | + user_data[user_detail['username']] = user_detail['role_assignments'] |
| 29 | + |
| 30 | + assert u1.username in user_data |
| 31 | + assert len(user_data[u1.username]) == 1 |
| 32 | + assert user_data[u1.username][0]['type'] == 'direct' |
| 33 | + |
| 34 | + assert u2.username in user_data |
| 35 | + assert len(user_data[u2.username]) == 1 |
| 36 | + assert user_data[u2.username][0]['type'] == 'indirect' |
| 37 | + |
| 38 | + assert u3.username in user_data |
| 39 | + assert len(user_data[u3.username]) == 1 |
| 40 | + assert user_data[u3.username][0]['type'] == 'team' |
0 commit comments