mirror of
https://github.com/ansible/awx.git
synced 2026-03-07 19:51:08 -03:30
Merge pull request #1299 from wwitzel3/rbac
deprecate Credential.team/user
This commit is contained in:
@@ -11,7 +11,7 @@ from django.contrib.auth.models import User
|
||||
@pytest.mark.django_db
|
||||
def test_credential_migration_user(credential, user, permissions):
|
||||
u = user('user', False)
|
||||
credential.user = u
|
||||
credential.deprecated_user = u
|
||||
credential.save()
|
||||
|
||||
migrated = rbac.migrate_credential(apps, None)
|
||||
@@ -29,7 +29,7 @@ def test_credential_usage_role(credential, user, permissions):
|
||||
def test_credential_migration_team_member(credential, team, user, permissions):
|
||||
u = user('user', False)
|
||||
team.admin_role.members.add(u)
|
||||
credential.team = team
|
||||
credential.deprecated_team = team
|
||||
credential.save()
|
||||
|
||||
|
||||
@@ -48,7 +48,7 @@ def test_credential_migration_team_member(credential, team, user, permissions):
|
||||
def test_credential_migration_team_admin(credential, team, user, permissions):
|
||||
u = user('user', False)
|
||||
team.member_role.members.add(u)
|
||||
credential.team = team
|
||||
credential.deprecated_team = team
|
||||
credential.save()
|
||||
|
||||
assert not credential.accessible_by(u, permissions['usage'])
|
||||
@@ -88,7 +88,7 @@ def test_credential_access_admin(user, team, credential):
|
||||
credential.owner_role.rebuild_role_ancestor_list()
|
||||
|
||||
cred = Credential.objects.create(kind='aws', name='test-cred')
|
||||
cred.team = team
|
||||
cred.deprecated_team = team
|
||||
cred.save()
|
||||
|
||||
# should have can_change access as org-admin
|
||||
@@ -101,7 +101,7 @@ def test_cred_job_template(user, deploy_jobtemplate):
|
||||
org.admin_role.members.add(a)
|
||||
|
||||
cred = deploy_jobtemplate.credential
|
||||
cred.user = user('john', False)
|
||||
cred.deprecated_user = user('john', False)
|
||||
cred.save()
|
||||
|
||||
access = CredentialAccess(a)
|
||||
@@ -118,7 +118,7 @@ def test_cred_multi_job_template_single_org(user, deploy_jobtemplate):
|
||||
org.admin_role.members.add(a)
|
||||
|
||||
cred = deploy_jobtemplate.credential
|
||||
cred.user = user('john', False)
|
||||
cred.deprecated_user = user('john', False)
|
||||
cred.save()
|
||||
|
||||
access = CredentialAccess(a)
|
||||
@@ -197,7 +197,7 @@ def test_cred_no_org(user, credential):
|
||||
def test_cred_team(user, team, credential):
|
||||
u = user('a', False)
|
||||
team.member_role.members.add(u)
|
||||
credential.team = team
|
||||
credential.deprecated_team = team
|
||||
credential.save()
|
||||
|
||||
assert not credential.accessible_by(u, {'use':True})
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import pytest
|
||||
|
||||
from awx.main.access import TeamAccess
|
||||
from awx.main.models import Project
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_team_access_superuser(team, user):
|
||||
@@ -48,3 +49,25 @@ def test_team_access_member(organization, team, user):
|
||||
assert len(t.member_role.members.all()) == 1
|
||||
assert len(t.organization.admin_role.members.all()) == 0
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_team_accessible_by(team, user, project):
|
||||
u = user('team_member', False)
|
||||
|
||||
team.member_role.children.add(project.member_role)
|
||||
assert project.accessible_by(team, {'read':True})
|
||||
assert not project.accessible_by(u, {'read':True})
|
||||
|
||||
team.member_role.members.add(u)
|
||||
assert project.accessible_by(u, {'read':True})
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_team_accessible_objects(team, user, project):
|
||||
u = user('team_member', False)
|
||||
|
||||
team.member_role.children.add(project.member_role)
|
||||
assert len(Project.accessible_objects(team, {'read':True})) == 1
|
||||
assert not Project.accessible_objects(u, {'read':True})
|
||||
|
||||
team.member_role.members.add(u)
|
||||
assert len(Project.accessible_objects(u, {'read':True})) == 1
|
||||
|
||||
|
||||
@@ -264,17 +264,21 @@ class BaseJobTestMixin(BaseTestMixin):
|
||||
from awx.main.tests.data.ssh import (TEST_SSH_KEY_DATA,
|
||||
TEST_SSH_KEY_DATA_LOCKED,
|
||||
TEST_SSH_KEY_DATA_UNLOCK)
|
||||
self.cred_sue = self.user_sue.credentials.create(
|
||||
self.cred_sue = Credential.objects.create(
|
||||
username='sue',
|
||||
password=TEST_SSH_KEY_DATA,
|
||||
created_by=self.user_sue,
|
||||
)
|
||||
self.cred_sue_ask = self.user_sue.credentials.create(
|
||||
self.cred_sue.owner_role.members.add(self.user_sue)
|
||||
|
||||
self.cred_sue_ask = Credential.objects.create(
|
||||
username='sue',
|
||||
password='ASK',
|
||||
created_by=self.user_sue,
|
||||
)
|
||||
self.cred_sue_ask_many = self.user_sue.credentials.create(
|
||||
self.cred_sue_ask.owner_role.members.add(self.user_sue)
|
||||
|
||||
self.cred_sue_ask_many = Credential.objects.create(
|
||||
username='sue',
|
||||
password='ASK',
|
||||
become_method='sudo',
|
||||
@@ -284,23 +288,31 @@ class BaseJobTestMixin(BaseTestMixin):
|
||||
ssh_key_unlock='ASK',
|
||||
created_by=self.user_sue,
|
||||
)
|
||||
self.cred_bob = self.user_bob.credentials.create(
|
||||
self.cred_sue_ask_many.owner_role.members.add(self.user_sue)
|
||||
|
||||
self.cred_bob = Credential.objects.create(
|
||||
username='bob',
|
||||
password='ASK',
|
||||
created_by=self.user_sue,
|
||||
)
|
||||
self.cred_chuck = self.user_chuck.credentials.create(
|
||||
self.cred_bob.usage_role.members.add(self.user_bob)
|
||||
|
||||
self.cred_chuck = Credential.objects.create(
|
||||
username='chuck',
|
||||
ssh_key_data=TEST_SSH_KEY_DATA,
|
||||
created_by=self.user_sue,
|
||||
)
|
||||
self.cred_doug = self.user_doug.credentials.create(
|
||||
self.cred_chuck.usage_role.members.add(self.user_chuck)
|
||||
|
||||
self.cred_doug = Credential.objects.create(
|
||||
username='doug',
|
||||
password='doug doesn\'t mind his password being saved. this '
|
||||
'is why we dont\'t let doug actually run jobs.',
|
||||
created_by=self.user_sue,
|
||||
)
|
||||
self.cred_eve = self.user_eve.credentials.create(
|
||||
self.cred_doug.usage_role.members.add(self.user_doug)
|
||||
|
||||
self.cred_eve = Credential.objects.create(
|
||||
username='eve',
|
||||
password='ASK',
|
||||
become_method='sudo',
|
||||
@@ -308,40 +320,52 @@ class BaseJobTestMixin(BaseTestMixin):
|
||||
become_password='ASK',
|
||||
created_by=self.user_sue,
|
||||
)
|
||||
self.cred_frank = self.user_frank.credentials.create(
|
||||
self.cred_eve.usage_role.members.add(self.user_eve)
|
||||
|
||||
self.cred_frank = Credential.objects.create(
|
||||
username='frank',
|
||||
password='fr@nk the t@nk',
|
||||
created_by=self.user_sue,
|
||||
)
|
||||
self.cred_greg = self.user_greg.credentials.create(
|
||||
self.cred_frank.usage_role.members.add(self.user_frank)
|
||||
|
||||
self.cred_greg = Credential.objects.create(
|
||||
username='greg',
|
||||
ssh_key_data=TEST_SSH_KEY_DATA_LOCKED,
|
||||
ssh_key_unlock='ASK',
|
||||
created_by=self.user_sue,
|
||||
)
|
||||
self.cred_holly = self.user_holly.credentials.create(
|
||||
self.cred_greg.usage_role.members.add(self.user_greg)
|
||||
|
||||
self.cred_holly = Credential.objects.create(
|
||||
username='holly',
|
||||
password='holly rocks',
|
||||
created_by=self.user_sue,
|
||||
)
|
||||
self.cred_iris = self.user_iris.credentials.create(
|
||||
self.cred_holly.usage_role.memebers.add(self.user_holly)
|
||||
|
||||
self.cred_iris = Credential.objects.create(
|
||||
username='iris',
|
||||
password='ASK',
|
||||
created_by=self.user_sue,
|
||||
)
|
||||
self.cred_iris.usage_role.members.add(self.user_iris)
|
||||
|
||||
# Each operations team also has shared credentials they can use.
|
||||
self.cred_ops_east = self.team_ops_east.credentials.create(
|
||||
self.cred_ops_east = Credential.objects.create(
|
||||
username='east',
|
||||
ssh_key_data=TEST_SSH_KEY_DATA_LOCKED,
|
||||
ssh_key_unlock=TEST_SSH_KEY_DATA_UNLOCK,
|
||||
created_by = self.user_sue,
|
||||
)
|
||||
self.cred_ops_west = self.team_ops_west.credentials.create(
|
||||
self.team_ops_east.member_role.children.add(self.cred_ops_east.usage_role)
|
||||
|
||||
self.cred_ops_west = Credential.objects.create(
|
||||
username='west',
|
||||
password='Heading270',
|
||||
created_by = self.user_sue,
|
||||
)
|
||||
self.team_ops_west.member_role.children.add(self.cred_ops_west.usage_role)
|
||||
|
||||
|
||||
# FIXME: This code can be removed (probably)
|
||||
@@ -355,17 +379,19 @@ class BaseJobTestMixin(BaseTestMixin):
|
||||
# created_by = self.user_sue,
|
||||
#)
|
||||
|
||||
self.cred_ops_north = self.team_ops_north.credentials.create(
|
||||
self.cred_ops_north = Credential.objects.create(
|
||||
username='north',
|
||||
password='Heading0',
|
||||
created_by = self.user_sue,
|
||||
)
|
||||
self.team_ops_north.member_role.children.add(self.cred_ops_north.usage_role)
|
||||
|
||||
self.cred_ops_test = self.team_ops_testers.credentials.create(
|
||||
self.cred_ops_test = Credential.objects.create(
|
||||
username='testers',
|
||||
password='HeadingNone',
|
||||
created_by = self.user_sue,
|
||||
)
|
||||
self.team_ops_testers.member_role.children(self.cred_ops_test.usage_role)
|
||||
|
||||
self.ops_east_permission = Permission.objects.create(
|
||||
inventory = self.inv_ops_east,
|
||||
|
||||
Reference in New Issue
Block a user