From d51447e15839e448f10b24306cac871663d8dce6 Mon Sep 17 00:00:00 2001 From: Akita Noek Date: Mon, 8 Feb 2016 22:45:57 -0500 Subject: [PATCH] Migration and tests for super users --- awx/main/migrations/_rbac.py | 10 ++++++++++ awx/main/tests/functional/test_rbac_user.py | 20 ++++++++++++++++++++ 2 files changed, 30 insertions(+) create mode 100644 awx/main/tests/functional/test_rbac_user.py diff --git a/awx/main/migrations/_rbac.py b/awx/main/migrations/_rbac.py index d2bddc8302..9b97c5a80a 100644 --- a/awx/main/migrations/_rbac.py +++ b/awx/main/migrations/_rbac.py @@ -1,5 +1,15 @@ from collections import defaultdict +def migrate_users(apps, schema_editor): + migrations = list() + User = apps.get_model('auth', "User") + Role = apps.get_model('main', "Role") + for user in User.objects.all(): + if user.is_superuser: + Role.singleton('System Administrator').members.add(user) + migrations.append(user) + return migrations + def migrate_organization(apps, schema_editor): migrations = defaultdict(list) organization = apps.get_model('main', "Organization") diff --git a/awx/main/tests/functional/test_rbac_user.py b/awx/main/tests/functional/test_rbac_user.py new file mode 100644 index 0000000000..f670b26220 --- /dev/null +++ b/awx/main/tests/functional/test_rbac_user.py @@ -0,0 +1,20 @@ +import pytest + +from awx.main.migrations import _rbac as rbac +from awx.main.models import Role +from django.apps import apps + +@pytest.mark.django_db +def test_user_admin(user_project, project, user): + joe = user('joe', is_superuser = False) + admin = user('admin', is_superuser = True) + sa = Role.singleton('System Administrator') + + assert sa.members.filter(id=joe.id).exists() is False + assert sa.members.filter(id=admin.id).exists() is False + + migrations = rbac.migrate_users(apps, None) + + assert sa.members.filter(id=joe.id).exists() is False + assert sa.members.filter(id=admin.id).exists() is True + assert len(migrations) == 1