diff --git a/src/datacat_integration/secrets.py b/src/datacat_integration/secrets.py index 3d20e5709f40730a0a86e39410c2149dfbd474df..76e146281e80aedc3104544cac8ed7feb44b57e2 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 489f6be9e427b8e58ec614697a5588bbe776e123..54a910d966c7909e9357ed90ad63a1529970a37b 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):