diff --git a/awx/main/migrations/0030_v330_modify_application.py b/awx/main/migrations/0030_v330_modify_application.py index 7725ffeaff..32b4fdd5a3 100644 --- a/awx/main/migrations/0030_v330_modify_application.py +++ b/awx/main/migrations/0030_v330_modify_application.py @@ -20,4 +20,8 @@ class Migration(migrations.Migration): name='organization', field=models.ForeignKey(help_text='Organization containing this application.', null=True, on_delete=django.db.models.deletion.CASCADE, related_name='applications', to='main.Organization'), ), + migrations.AlterUniqueTogether( + name='oauth2application', + unique_together=set([('name', 'organization')]), + ), ] diff --git a/awx/main/models/oauth.py b/awx/main/models/oauth.py index 0e479587aa..4e575871fe 100644 --- a/awx/main/models/oauth.py +++ b/awx/main/models/oauth.py @@ -27,6 +27,7 @@ class OAuth2Application(AbstractApplication): class Meta: app_label = 'main' verbose_name = _('application') + unique_together = (("name", "organization"),) CLIENT_CONFIDENTIAL = "confidential" CLIENT_PUBLIC = "public" diff --git a/awx/main/tests/functional/test_rbac_oauth.py b/awx/main/tests/functional/test_rbac_oauth.py index f076db3689..5a53cf9108 100644 --- a/awx/main/tests/functional/test_rbac_oauth.py +++ b/awx/main/tests/functional/test_rbac_oauth.py @@ -79,7 +79,7 @@ class TestOAuth2Application: can_access_list = [True, True, False, False] for user, can_access in zip(user_list, can_access_list): app = Application.objects.create( - name='test app for {}'.format(org_admin.username), user=org_admin, + name='test app for {}'.format(user.username), user=org_admin, client_type='confidential', authorization_grant_type='password', organization=organization ) access = OAuth2ApplicationAccess(user) @@ -94,7 +94,7 @@ class TestOAuth2Application: can_access_list = [True, True, False, False] for user, can_access in zip(user_list, can_access_list): app = Application.objects.create( - name='test app for {}'.format(admin.username), user=admin, + name='test app for {}'.format(user.username), user=admin, client_type='confidential', authorization_grant_type='password', organization=organization ) access = OAuth2ApplicationAccess(user)