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