From c7ed3546bd1d76f8222dae9bbedca6790b80b4fb Mon Sep 17 00:00:00 2001 From: Robert Latta <robert.latta@geant.org> Date: Fri, 11 Feb 2022 14:51:08 +0000 Subject: [PATCH] reduced logged message length --- inventory_provider/db/ims.py | 15 +++++++++++---- test/test_ims.py | 18 ++++++++++++++++++ 2 files changed, 29 insertions(+), 4 deletions(-) diff --git a/inventory_provider/db/ims.py b/inventory_provider/db/ims.py index 29ab57a2..e339780d 100644 --- a/inventory_provider/db/ims.py +++ b/inventory_provider/db/ims.py @@ -242,13 +242,20 @@ class IMS(object): if NO_FILTERED_RESULTS_MESSAGE in response_.text.lower(): return False try: - r = response_.json() + r = _convert_keys(response_.json()) except Exception as e: - logger.debug(f"unexpected response: {response_.text}") + t = response_.text + if len(t) > 100: + message_text = f"{t[:50]} ... {t[-50:]}" + else: + message_text = t + logger.debug(f"unexpected response: {message_text}\n{e}" + "\nre-raising") raise e - if r and 'HasErrors' in r and r['HasErrors']: + if r and 'haserrors' in r and r['haserrors']: for e in r['Errors']: - if 'Guid expired' in e['ErrorMessage']: + if e['errormessage'] and \ + 'guid expired' in e['errormessage'].lower(): return True return False diff --git a/test/test_ims.py b/test/test_ims.py index 95b142df..23f30660 100644 --- a/test/test_ims.py +++ b/test/test_ims.py @@ -1,6 +1,7 @@ from requests import HTTPError import inventory_provider +from inventory_provider.db.ims import IMSError class MockResponse: @@ -33,6 +34,23 @@ def test_ims_class_login(mocker): params=None) +def test_ims_failed_response(mocker): + mock_post = mocker.patch('inventory_provider.db.ims.requests.post') + mock_post.return_value = MockResponse("my_bearer_token", 200) + mock_post.return_value.text = "my_bearer_token" + mock_get = mocker.patch('inventory_provider.db.ims.requests.get') + mock_get.return_value.status_code = 200 + mock_get.return_value.json.side_effect = IMSError("IMS exception") + + ds = inventory_provider.db.ims.IMS( + 'dummy_base', 'dummy_username', 'dummy_password') + + try: + ds.get_entity_by_id('Node', 1234) + except Exception as e: + assert isinstance(e, IMSError) + + def test_ims_class_entity_by_id(mocker): mock_get = mocker.patch('inventory_provider.db.ims.requests.get') ds = inventory_provider.db.ims.IMS( -- GitLab