diff --git a/awx/main/signals.py b/awx/main/signals.py index 5315738ec7..891c60b75b 100644 --- a/awx/main/signals.py +++ b/awx/main/signals.py @@ -123,10 +123,14 @@ def sync_superuser_status_to_rbac(instance, **kwargs): def create_user_role(instance, **kwargs): try: - instance.admin_role + Role.objects.get( + content_type=ContentType.objects.get_for_model(instance), + object_id=instance.id, + name = 'Owner' + ) except Role.DoesNotExist: role = Role.objects.create( - singleton_name = '%s-admin_role' % instance.username, + name = 'Owner', content_object = instance, ) role.members.add(instance) diff --git a/awx/main/tests/functional/api/test_user.py b/awx/main/tests/functional/api/test_user.py new file mode 100644 index 0000000000..d739d417c0 --- /dev/null +++ b/awx/main/tests/functional/api/test_user.py @@ -0,0 +1,68 @@ +import pytest + +from django.core.urlresolvers import reverse + + +# +# user creation +# + +@pytest.mark.django_db +def test_user_create(post, admin): + response = post(reverse('api:user_list'), { + "username": "affable", + "first_name": "a", + "last_name": "a", + "email": "a@a.com", + "is_superuser": False, + "password": "fo0m4nchU" + }, admin) + assert response.status_code == 201 + +@pytest.mark.django_db +def test_fail_double_create_user(post, admin): + response = post(reverse('api:user_list'), { + "username": "affable", + "first_name": "a", + "last_name": "a", + "email": "a@a.com", + "is_superuser": False, + "password": "fo0m4nchU" + }, admin) + assert response.status_code == 201 + + response = post(reverse('api:user_list'), { + "username": "affable", + "first_name": "a", + "last_name": "a", + "email": "a@a.com", + "is_superuser": False, + "password": "fo0m4nchU" + }, admin) + assert response.status_code == 400 + +@pytest.mark.django_db +def test_create_delete_create_user(post, delete, admin): + response = post(reverse('api:user_list'), { + "username": "affable", + "first_name": "a", + "last_name": "a", + "email": "a@a.com", + "is_superuser": False, + "password": "fo0m4nchU" + }, admin) + assert response.status_code == 201 + + response = delete(reverse('api:user_detail', args=(response.data['id'],)), admin) + assert response.status_code == 204 + + response = post(reverse('api:user_list'), { + "username": "affable", + "first_name": "a", + "last_name": "a", + "email": "a@a.com", + "is_superuser": False, + "password": "fo0m4nchU" + }, admin) + print(response.data) + assert response.status_code == 201