test_authentic: restrict scope of import_template command test (#71867)

This commit is contained in:
Valentin Deniaud 2022-11-30 10:36:01 +01:00
parent 93fc9d9960
commit 02df3a7a81
2 changed files with 30 additions and 679 deletions

View File

@ -1,665 +1,26 @@
{
"roles": [
{
"slug": "test-role",
"name": "test role",
"description": "",
"external_id": "",
"ou": {
"name": "test ou",
"slug": "test-ou"
},
"service": null
}
],
"ous": [
{
"default": true,
"slug": "test-ou",
"name": "test ou",
"description": "",
"default": null,
"email_is_unique": false,
"name": "Collectivit\u00e9 par d\u00e9faut",
"slug": "default",
"username_is_unique": false,
"validate_emails": false
}
],
"roles": [
{
"description": "",
"external_id": "",
"name": "Debug eo",
"ou": {
"name": "Collectivit\u00e9 par d\u00e9faut",
"slug": "default"
},
"service": null,
"slug": "debug-eo"
},
{
"description": "",
"external_id": "",
"name": "Manager",
"ou": null,
"parents": [
{
"name": "Manager of organizational units",
"ou": null,
"service": null,
"slug": "_a2-manager-of-organizational-units"
},
{
"name": "Manager of roles",
"ou": null,
"service": null,
"slug": "_a2-manager-of-roles"
},
{
"name": "Manager of services",
"ou": null,
"service": null,
"slug": "_a2-manager-of-services"
},
{
"name": "Manager of users",
"ou": null,
"service": null,
"slug": "_a2-manager-of-users"
},
{
"name": "Manager of API clients",
"ou": null,
"service": null,
"slug": "_a2-manager-of-api-clients"
},
{
"name": "Manager of authenticators",
"ou": null,
"service": null,
"slug": "_a2-manager-of-authenticators"
}
],
"permissions": [
{
"operation": {
"slug": "manage_members"
},
"ou": null,
"target": {
"name": "Manager",
"ou": null,
"service": null,
"slug": "_a2-manager"
},
"target_ct": {
"app_label": "a2_rbac",
"model": "role"
}
}
],
"service": null,
"slug": "_a2-manager"
},
{
"description": "",
"external_id": "",
"name": "Manager of organizational units",
"ou": null,
"permissions": [
{
"operation": {
"slug": "admin"
},
"ou": null,
"target": {
"app_label": "a2_rbac",
"model": "organizationalunit"
},
"target_ct": {
"app_label": "contenttypes",
"model": "contenttype"
}
},
{
"operation": {
"slug": "search"
},
"ou": null,
"target": {
"app_label": "a2_rbac",
"model": "organizationalunit"
},
"target_ct": {
"app_label": "contenttypes",
"model": "contenttype"
}
}
],
"service": null,
"slug": "_a2-manager-of-organizational-units"
},
{
"description": "",
"external_id": "",
"name": "Manager of roles",
"ou": null,
"permissions": [
{
"operation": {
"slug": "admin"
},
"ou": null,
"target": {
"app_label": "a2_rbac",
"model": "role"
},
"target_ct": {
"app_label": "contenttypes",
"model": "contenttype"
}
},
{
"operation": {
"slug": "search"
},
"ou": null,
"target": {
"app_label": "a2_rbac",
"model": "organizationalunit"
},
"target_ct": {
"app_label": "contenttypes",
"model": "contenttype"
}
},
{
"operation": {
"slug": "view"
},
"ou": null,
"target": {
"app_label": "custom_user",
"model": "user"
},
"target_ct": {
"app_label": "contenttypes",
"model": "contenttype"
}
}
],
"service": null,
"slug": "_a2-manager-of-roles"
},
{
"description": "",
"external_id": "",
"name": "Manager of services",
"ou": null,
"permissions": [
{
"operation": {
"slug": "admin"
},
"ou": null,
"target": {
"app_label": "authentic2",
"model": "service"
},
"target_ct": {
"app_label": "contenttypes",
"model": "contenttype"
}
},
{
"operation": {
"slug": "search"
},
"ou": null,
"target": {
"app_label": "a2_rbac",
"model": "organizationalunit"
},
"target_ct": {
"app_label": "contenttypes",
"model": "contenttype"
}
}
],
"service": null,
"slug": "_a2-manager-of-services"
},
{
"description": "",
"external_id": "",
"name": "Manager of users",
"ou": null,
"permissions": [
{
"operation": {
"slug": "admin"
},
"ou": null,
"target": {
"app_label": "custom_user",
"model": "user"
},
"target_ct": {
"app_label": "contenttypes",
"model": "contenttype"
}
},
{
"operation": {
"slug": "manage_authorizations"
},
"ou": null,
"target": {
"app_label": "custom_user",
"model": "user"
},
"target_ct": {
"app_label": "contenttypes",
"model": "contenttype"
}
},
{
"operation": {
"slug": "search"
},
"ou": null,
"target": {
"app_label": "a2_rbac",
"model": "organizationalunit"
},
"target_ct": {
"app_label": "contenttypes",
"model": "contenttype"
}
}
],
"service": null,
"slug": "_a2-manager-of-users"
},
{
"description": "",
"external_id": "",
"name": "Manager of API clients",
"ou": null,
"permissions": [
{
"operation": {
"slug": "admin"
},
"ou": null,
"target": {
"app_label": "authentic2",
"model": "apiclient"
},
"target_ct": {
"app_label": "contenttypes",
"model": "contenttype"
}
},
{
"operation": {
"slug": "search"
},
"ou": null,
"target": {
"app_label": "a2_rbac",
"model": "organizationalunit"
},
"target_ct": {
"app_label": "contenttypes",
"model": "contenttype"
}
}
],
"service": null,
"slug": "_a2-manager-of-api-clients"
},
{
"description": "",
"external_id": "",
"name": "Manager of authenticators",
"ou": null,
"permissions": [
{
"operation": {
"slug": "admin"
},
"ou": null,
"target": {
"app_label": "authenticators",
"model": "baseauthenticator"
},
"target_ct": {
"app_label": "contenttypes",
"model": "contenttype"
}
},
{
"operation": {
"slug": "search"
},
"ou": null,
"target": {
"app_label": "a2_rbac",
"model": "organizationalunit"
},
"target_ct": {
"app_label": "contenttypes",
"model": "contenttype"
}
}
],
"service": null,
"slug": "_a2-manager-of-authenticators"
},
{
"description": "",
"external_id": "",
"name": "Managers of \"Collectivit\u00e9 par d\u00e9faut\"",
"ou": null,
"parents": [
{
"name": "Roles - Collectivit\u00e9 par d\u00e9faut",
"ou": {
"name": "Collectivit\u00e9 par d\u00e9faut",
"slug": "default"
},
"service": null,
"slug": "_a2-manager-of-roles-default"
},
{
"name": "Services - Collectivit\u00e9 par d\u00e9faut",
"ou": {
"name": "Collectivit\u00e9 par d\u00e9faut",
"slug": "default"
},
"service": null,
"slug": "_a2-manager-of-services-default"
},
{
"name": "Users - Collectivit\u00e9 par d\u00e9faut",
"ou": {
"name": "Collectivit\u00e9 par d\u00e9faut",
"slug": "default"
},
"service": null,
"slug": "_a2-manager-of-users-default"
},
{
"name": "Authenticators - Collectivité par défaut",
"ou": {
"name": "Collectivité par défaut",
"slug": "default"
},
"service": null,
"slug": "_a2-manager-of-authenticators-default"
}
],
"permissions": [
{
"operation": {
"slug": "view"
},
"ou": null,
"target": {
"name": "Collectivit\u00e9 par d\u00e9faut",
"slug": "default"
},
"target_ct": {
"app_label": "a2_rbac",
"model": "organizationalunit"
}
}
],
"service": null,
"slug": "_a2-managers-of-default"
},
{
"description": "",
"external_id": "",
"name": "Managers of role \"Debug eo\"",
"ou": {
"name": "Collectivit\u00e9 par d\u00e9faut",
"slug": "default"
},
"permissions": [
{
"operation": {
"slug": "manage_members"
},
"ou": null,
"target": {
"name": "Managers of role \"Debug eo\"",
"ou": {
"name": "Collectivit\u00e9 par d\u00e9faut",
"slug": "default"
},
"service": null,
"slug": "_a2-managers-of-role-debug-eo"
},
"target_ct": {
"app_label": "a2_rbac",
"model": "role"
}
},
{
"operation": {
"slug": "manage_members"
},
"ou": null,
"target": {
"name": "Debug eo",
"ou": {
"name": "Collectivit\u00e9 par d\u00e9faut",
"slug": "default"
},
"service": null,
"slug": "debug-eo"
},
"target_ct": {
"app_label": "a2_rbac",
"model": "role"
}
},
{
"operation": {
"slug": "view"
},
"ou": null,
"target": {
"app_label": "custom_user",
"model": "user"
},
"target_ct": {
"app_label": "contenttypes",
"model": "contenttype"
}
}
],
"service": null,
"slug": "_a2-managers-of-role-debug-eo"
},
{
"description": "",
"external_id": "",
"name": "Roles - Collectivit\u00e9 par d\u00e9faut",
"ou": {
"name": "Collectivit\u00e9 par d\u00e9faut",
"slug": "default"
},
"permissions": [
{
"operation": {
"slug": "admin"
},
"ou": {
"name": "Collectivit\u00e9 par d\u00e9faut",
"slug": "default"
},
"target": {
"app_label": "a2_rbac",
"model": "role"
},
"target_ct": {
"app_label": "contenttypes",
"model": "contenttype"
}
},
{
"operation": {
"slug": "search"
},
"ou": null,
"target": {
"name": "Collectivit\u00e9 par d\u00e9faut",
"slug": "default"
},
"target_ct": {
"app_label": "a2_rbac",
"model": "organizationalunit"
}
},
{
"operation": {
"slug": "view"
},
"ou": {
"name": "Collectivit\u00e9 par d\u00e9faut",
"slug": "default"
},
"target": {
"app_label": "custom_user",
"model": "user"
},
"target_ct": {
"app_label": "contenttypes",
"model": "contenttype"
}
}
],
"service": null,
"slug": "_a2-manager-of-roles-default"
},
{
"description": "",
"external_id": "",
"name": "Services - Collectivit\u00e9 par d\u00e9faut",
"ou": {
"name": "Collectivit\u00e9 par d\u00e9faut",
"slug": "default"
},
"permissions": [
{
"operation": {
"slug": "admin"
},
"ou": {
"name": "Collectivit\u00e9 par d\u00e9faut",
"slug": "default"
},
"target": {
"app_label": "authentic2",
"model": "service"
},
"target_ct": {
"app_label": "contenttypes",
"model": "contenttype"
}
},
{
"operation": {
"slug": "search"
},
"ou": null,
"target": {
"name": "Collectivit\u00e9 par d\u00e9faut",
"slug": "default"
},
"target_ct": {
"app_label": "a2_rbac",
"model": "organizationalunit"
}
}
],
"service": null,
"slug": "_a2-manager-of-services-default"
},
{
"description": "",
"external_id": "",
"name": "Users - Collectivit\u00e9 par d\u00e9faut",
"ou": {
"name": "Collectivit\u00e9 par d\u00e9faut",
"slug": "default"
},
"permissions": [
{
"operation": {
"slug": "admin"
},
"ou": {
"name": "Collectivit\u00e9 par d\u00e9faut",
"slug": "default"
},
"target": {
"app_label": "custom_user",
"model": "user"
},
"target_ct": {
"app_label": "contenttypes",
"model": "contenttype"
}
},
{
"operation": {
"slug": "search"
},
"ou": null,
"target": {
"name": "Collectivit\u00e9 par d\u00e9faut",
"slug": "default"
},
"target_ct": {
"app_label": "a2_rbac",
"model": "organizationalunit"
}
}
],
"service": null,
"slug": "_a2-manager-of-users-default"
},
{
"description": "",
"external_id": "",
"name": "Authenticators - Collectivité par défaut",
"ou": {
"name": "Collectivité par défaut", "slug": "default"
},
"permissions": [
{
"operation": {
"slug": "admin"
},
"ou": {
"name": "Collectivité par défaut",
"slug": "default"
},
"target": {
"app_label": "authenticators",
"model": "baseauthenticator"
},
"target_ct": {
"app_label": "contenttypes",
"model": "contenttype"
}
},
{
"operation": {
"slug": "search"
},
"ou": null,
"target": {
"name": "Collectivité par défaut",
"slug": "default"
},
"target_ct": {
"app_label": "a2_rbac",
"model": "organizationalunit"
}
}
],
"service": null,
"slug": "_a2-manager-of-authenticators-default"
}
]
}

View File

@ -6,6 +6,7 @@ import time
from unittest import mock
import pytest
from authentic2.a2_rbac.models import OrganizationalUnit, Role
from authentic2.data_transfer import export_site
from django.core.management import call_command
from django.db import connection
@ -536,34 +537,23 @@ def test_hobo_deploy(monkeypatch, tenant_base, mocker, skeleton_dir, tmp_path):
def test_import_template(db, tenant_base):
def listify(value):
if isinstance(value, dict):
value = list((k, listify(v) or []) for k, v in value.items())
value.sort()
if isinstance(value, list):
value = list(listify(x) for x in value)
value.sort()
return value
def sort_and_remove_uuid(value):
if isinstance(value, dict):
if 'uuid' in value:
value.pop('uuid')
value = {k: sort_and_remove_uuid(v) for k, v in value.items()}
if isinstance(value, list):
value = [sort_and_remove_uuid(elt) for elt in value]
value.sort(key=lambda elt: listify(elt))
return value
call_command('create_tenant', 'authentic.example.net')
tenant = TenantMiddleware.get_tenant_by_hostname('authentic.example.net')
connection.set_tenant(tenant)
call_command('import_template', '--basepath=%s' % os.path.dirname(__file__), 'data_authentic_export_site')
content = open('%s/data_authentic_export_site.json' % os.path.dirname(__file__)).read()
export_ref = sort_and_remove_uuid(export_site())
file_ref = sort_and_remove_uuid(json.loads(content))
assert export_ref == file_ref
Role.objects.all().delete()
OrganizationalUnit.objects.all().delete()
call_command('import_template', '--basepath=%s' % os.path.dirname(__file__), 'data_authentic_export_site')
# we don't care about testing automatically created internal roles, remove them
Role.objects.filter(slug__startswith='_').delete()
site_export = export_site()
assert len(site_export['roles']) == 1
assert site_export['roles'][0]['name'] == 'test role'
assert len(site_export['ous']) == 1
assert site_export['ous'][0]['name'] == 'test ou'
def test_hobo_deploy_with_legacy_urls(monkeypatch, tenant_base, mocker, skeleton_dir, tmp_path):