From d949a217291184a6dd87162f0688dfd8c4339ad7 Mon Sep 17 00:00:00 2001 From: Christian Boettcher <c.boettcher@fz-juelich.de> Date: Wed, 2 Feb 2022 13:32:20 +0100 Subject: [PATCH] fix error that happens with empty metadata --- src/datacat_integration/secrets.py | 5 ++++- tests/test_secrets.py | 4 ++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/datacat_integration/secrets.py b/src/datacat_integration/secrets.py index 3d20e57..76e1462 100644 --- a/src/datacat_integration/secrets.py +++ b/src/datacat_integration/secrets.py @@ -17,7 +17,10 @@ def get_connection_with_secrets_from_entry(data: Dict[str, Any], secrets: Dict[s conn.password = secrets.get('password') conn.login = secrets.get('login') # add all remaining secrets to extra - extra = json.loads(conn.extra) + try: + extra = json.loads(conn.extra) + except TypeError: # may happen if extra is empty + extra = {} for key in secrets.keys(): if key in ['password', 'login']: continue diff --git a/tests/test_secrets.py b/tests/test_secrets.py index 489f6be..54a910d 100644 --- a/tests/test_secrets.py +++ b/tests/test_secrets.py @@ -26,6 +26,10 @@ class TestSecretsBackend(TestCase): self.assertEqual(conn.extra_dejson['some_public_extra'], "12345") self.assertEqual(conn.extra_dejson['some_other_extra_to_be_overwritten_by_secret'], "secret_67890") + + def test_no_error_on_missing_extra(self): + get_connection_with_secrets_from_entry({"name" : "some-name", "url" : "some_url", "metadata" : {}}, {}, "test-connection", 'false_oid') + class TestSecretsConnection(TestCase): def setUp(self): -- GitLab