provisionning: fix user roles provision warnings (#87144)
gitea/hobo/pipeline/head This commit looks good
Details
gitea/hobo/pipeline/head This commit looks good
Details
This commit is contained in:
parent
e6c0555f78
commit
3e0347cc90
|
@ -13,9 +13,7 @@ def provision_user_groups(user, uuids):
|
|||
logger = logging.getLogger(__name__)
|
||||
|
||||
existing_pks = user.groups.values_list('pk', flat=True)
|
||||
not_found = set(uuids)
|
||||
for role in Role.objects.filter(uuid__in=uuids).exclude(pk__in=existing_pks):
|
||||
not_found.discard(role.uuid)
|
||||
if role.pk in existing_pks:
|
||||
continue
|
||||
user.groups.through.objects.get_or_create(group=role, user=user)
|
||||
|
@ -31,5 +29,6 @@ def provision_user_groups(user, uuids):
|
|||
pass
|
||||
else:
|
||||
logger.info('removed role %s from %s (%s)', rel.group, user, user.pk)
|
||||
for uuid in not_found:
|
||||
existing_uuids = set(Role.objects.values_list('uuid', flat=True))
|
||||
for uuid in set(uuids).difference(existing_uuids):
|
||||
logger.warning('role %s of user %s does not exist', uuid, user)
|
||||
|
|
|
@ -0,0 +1,34 @@
|
|||
import logging
|
||||
|
||||
import pytest
|
||||
|
||||
from hobo.agent.common.models import Role
|
||||
from hobo.multitenant.utils import provision_user_groups
|
||||
|
||||
pytestmark = pytest.mark.django_db
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def roles():
|
||||
return [Role.objects.create(uuid=str(i) * 8, name='Role %s' % i) for i in range(5)]
|
||||
|
||||
|
||||
def test_provision_user_groups(db, roles, admin_user, caplog):
|
||||
caplog.set_level(logging.INFO)
|
||||
roles_uuids = [r.uuid for r in roles]
|
||||
provision_user_groups(admin_user, roles_uuids)
|
||||
assert len(caplog.records) == len(roles)
|
||||
assert list(admin_user.groups.all()) == [r.group_ptr for r in roles]
|
||||
|
||||
caplog.clear()
|
||||
caplog.set_level(logging.WARNING)
|
||||
provision_user_groups(admin_user, roles_uuids)
|
||||
assert list(admin_user.groups.all()) == [r.group_ptr for r in roles]
|
||||
assert len(caplog.records) == 0
|
||||
|
||||
provision_user_groups(admin_user, roles_uuids[:-1])
|
||||
assert list(admin_user.groups.all()) == [r.group_ptr for r in roles[:-1]]
|
||||
|
||||
roles_uuids.append('unknown-uuid')
|
||||
provision_user_groups(admin_user, roles_uuids)
|
||||
assert len(caplog.records) == 1
|
Loading…
Reference in New Issue