From ef181942edd4c8723beb4d53d5628b31d8b9e4a6 Mon Sep 17 00:00:00 2001 From: Kip Parker Date: Wed, 12 Feb 2025 16:47:27 +0000 Subject: [PATCH] - Use correct function for key retrieval in resource provenance code - Fix configuration typo - Tidy tests --- resource/api/exceptions.py | 6 +++--- resource/api/provenance.py | 3 +-- resource/tests/test_keystores.py | 13 ------------- 3 files changed, 4 insertions(+), 18 deletions(-) diff --git a/resource/api/exceptions.py b/resource/api/exceptions.py index 052c9bb..408d963 100644 --- a/resource/api/exceptions.py +++ b/resource/api/exceptions.py @@ -1,14 +1,14 @@ -class ConfigrationError(Exception): +class ConfigurationError(Exception): """ Base class for configuration errors """ -class KeyNotFoundError(ConfigrationError): +class KeyNotFoundError(ConfigurationError): pass -class CertificateNotFoundError(ConfigrationError): +class CertificateNotFoundError(ConfigurationError): pass diff --git a/resource/api/provenance.py b/resource/api/provenance.py index 1c4b4c1..a1c1456 100644 --- a/resource/api/provenance.py +++ b/resource/api/provenance.py @@ -37,8 +37,7 @@ def create_provenance_records( signer_edp_certs = x509.load_pem_x509_certificates( get_certificate(conf.SIGNING_BUNDLE) ) - with open(conf.SIGNING_KEY, "rb") as key_file: - private_key = serialization.load_pem_private_key(key_file.read(), password=None) + private_key = get_key(conf.SIGNING_KEY) signer_edp = SignerInMemory( certificate_provider, signer_edp_certs, # list containing certificate and issuer chain diff --git a/resource/tests/test_keystores.py b/resource/tests/test_keystores.py index e9f772b..be25b76 100644 --- a/resource/tests/test_keystores.py +++ b/resource/tests/test_keystores.py @@ -8,17 +8,12 @@ @patch("api.auth.ssm_client.get_parameter") @patch("builtins.open", new_callable=mock_open, read_data=b"local_key_data") def test_get_key_local_file(mock_open, mock_ssm_client): - # Arrange mock_ssm_client.side_effect = ClientError( {"Error": {"Code": "ParameterNotFound", "Message": "Parameter not found"}}, "get_parameter", ) expected_key = b"local_key_data" - - # Act key = api.auth.get_key() - - # Assert mock_open.assert_called_once_with(api.auth.conf.SIGNING_KEY, "rb") assert key == expected_key assert isinstance(key, bytes) @@ -26,14 +21,9 @@ def test_get_key_local_file(mock_open, mock_ssm_client): @patch("api.auth.ssm_client.get_parameter") def test_get_key_ssm(mock_ssm_client): - # Arrange mock_ssm_client.return_value = {"Parameter": {"Value": "ssm_key_data"}} expected_key = b"ssm_key_data" - - # Act key = api.auth.get_key() - - # Assert mock_ssm_client.assert_called_once() assert key == expected_key assert isinstance(key, bytes) @@ -42,13 +32,10 @@ def test_get_key_ssm(mock_ssm_client): @patch("api.auth.ssm_client.get_parameter") @patch("builtins.open", new_callable=mock_open) def test_get_key_not_found(mock_open, mock_ssm_client): - # Arrange mock_ssm_client.side_effect = ClientError( {"Error": {"Code": "ParameterNotFound", "Message": "Parameter not found"}}, "get_parameter", ) mock_open.side_effect = FileNotFoundError - - # Act & Assert with pytest.raises(KeyNotFoundError): api.auth.get_key()