From d177f4a296052550a57fe8b85742fc5cf55b20f9 Mon Sep 17 00:00:00 2001 From: Valentin Deniaud Date: Tue, 8 Oct 2019 16:14:51 +0200 Subject: [PATCH 2/2] data_transfer: fail importing on empty role uuid (#31083) --- src/authentic2/data_transfer.py | 3 +++ tests/test_import_export_site_cmd.py | 16 ++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/src/authentic2/data_transfer.py b/src/authentic2/data_transfer.py index 739349da..ee5789ff 100644 --- a/src/authentic2/data_transfer.py +++ b/src/authentic2/data_transfer.py @@ -171,6 +171,9 @@ class RoleDeserializer(object): status = 'updated' update_model(self._obj, kwargs) else: # Create role + if 'uuid' in kwargs and not kwargs['uuid']: + raise DataImportError("Cannot import role '%s' with empty uuid" + % kwargs.get('name')) self._obj = get_role_model().objects.create(**kwargs) status = 'created' diff --git a/tests/test_import_export_site_cmd.py b/tests/test_import_export_site_cmd.py index cae58f9b..7f70df9d 100644 --- a/tests/test_import_export_site_cmd.py +++ b/tests/test_import_export_site_cmd.py @@ -200,3 +200,19 @@ def test_import_site_update_roles(db, json_fixture): r1.refresh_from_db() assert r1.slug == 'slug-updated' assert r1.name == 'Role second update' + + +def test_import_site_empty_uuids(db, monkeypatch, json_fixture): + from authentic2.data_transfer import DataImportError + with pytest.raises(DataImportError): + management.call_command('import_site', json_fixture({ + 'roles': [ + { + 'uuid': '', + 'slug': 'role-slug', + 'name': 'role-name', + 'ou': None, + 'service': None + } + ] + })) -- 2.20.1