mirror of
https://github.com/ansible/awx.git
synced 2026-03-09 21:49:27 -02:30
Do not create setting with invalid value in data migration (#13576)
* Do not create setting with invalid value in data migration * Add test for conf app data migration
This commit is contained in:
@@ -1,7 +1,11 @@
|
|||||||
import inspect
|
import inspect
|
||||||
|
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.utils.timezone import now
|
|
||||||
|
import logging
|
||||||
|
|
||||||
|
|
||||||
|
logger = logging.getLogger('awx.conf.migrations')
|
||||||
|
|
||||||
|
|
||||||
def fill_ldap_group_type_params(apps, schema_editor):
|
def fill_ldap_group_type_params(apps, schema_editor):
|
||||||
@@ -15,7 +19,7 @@ def fill_ldap_group_type_params(apps, schema_editor):
|
|||||||
entry = qs[0]
|
entry = qs[0]
|
||||||
group_type_params = entry.value
|
group_type_params = entry.value
|
||||||
else:
|
else:
|
||||||
entry = Setting(key='AUTH_LDAP_GROUP_TYPE_PARAMS', value=group_type_params, created=now(), modified=now())
|
return # for new installs we prefer to use the default value
|
||||||
|
|
||||||
init_attrs = set(inspect.getfullargspec(group_type.__init__).args[1:])
|
init_attrs = set(inspect.getfullargspec(group_type.__init__).args[1:])
|
||||||
for k in list(group_type_params.keys()):
|
for k in list(group_type_params.keys()):
|
||||||
@@ -23,4 +27,5 @@ def fill_ldap_group_type_params(apps, schema_editor):
|
|||||||
del group_type_params[k]
|
del group_type_params[k]
|
||||||
|
|
||||||
entry.value = group_type_params
|
entry.value = group_type_params
|
||||||
|
logger.warning(f'Migration updating AUTH_LDAP_GROUP_TYPE_PARAMS with value {entry.value}')
|
||||||
entry.save()
|
entry.save()
|
||||||
|
|||||||
25
awx/conf/tests/functional/test_migrations.py
Normal file
25
awx/conf/tests/functional/test_migrations.py
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
import pytest
|
||||||
|
|
||||||
|
from awx.conf.migrations._ldap_group_type import fill_ldap_group_type_params
|
||||||
|
from awx.conf.models import Setting
|
||||||
|
|
||||||
|
from django.apps import apps
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.django_db
|
||||||
|
def test_fill_group_type_params_no_op():
|
||||||
|
fill_ldap_group_type_params(apps, 'dont-use-me')
|
||||||
|
assert Setting.objects.count() == 0
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.django_db
|
||||||
|
def test_keep_old_setting_with_default_value():
|
||||||
|
Setting.objects.create(key='AUTH_LDAP_GROUP_TYPE', value={'name_attr': 'cn', 'member_attr': 'member'})
|
||||||
|
fill_ldap_group_type_params(apps, 'dont-use-me')
|
||||||
|
assert Setting.objects.count() == 1
|
||||||
|
s = Setting.objects.first()
|
||||||
|
assert s.value == {'name_attr': 'cn', 'member_attr': 'member'}
|
||||||
|
|
||||||
|
|
||||||
|
# NOTE: would be good to test the removal of attributes by migration
|
||||||
|
# but this requires fighting with the validator and is not done here
|
||||||
Reference in New Issue
Block a user