aboutsummaryrefslogtreecommitdiffstats
path: root/tests/test_secrets_manager.py
diff options
context:
space:
mode:
authorAlex <git@ajschof.me>2024-08-19 12:09:25 +0100
committerGitHub <noreply@github.com>2024-08-19 12:09:25 +0100
commitf28e4038d20b4630fafcae9a7825794e529bace2 (patch)
tree0c378561e0dde843c0a281c692d137bb6bb0d0a7 /tests/test_secrets_manager.py
parent5cc511d2afeea262db0db7039c8f83c123da77ea (diff)
parent09b8b7903098a988a9a022d0ab607f8131c9c78f (diff)
downloadde-project-bentley-f28e4038d20b4630fafcae9a7825794e529bace2.tar.gz
de-project-bentley-f28e4038d20b4630fafcae9a7825794e529bace2.zip
Merge branch 'development' into feature/test-extract-lambda
Diffstat (limited to 'tests/test_secrets_manager.py')
-rw-r--r--tests/test_secrets_manager.py84
1 files changed, 84 insertions, 0 deletions
diff --git a/tests/test_secrets_manager.py b/tests/test_secrets_manager.py
new file mode 100644
index 0000000..609c572
--- /dev/null
+++ b/tests/test_secrets_manager.py
@@ -0,0 +1,84 @@
+from src.secrets_manager import sm_client, retrieve_secrets
+import boto3
+import botocore.exceptions
+from moto import mock_aws
+import json
+import pytest
+import os
+
+
+@pytest.fixture(scope="function")
+def aws_credentials():
+ """Mocked AWS Credentials for moto."""
+ os.environ["AWS_ACCESS_KEY_ID"] = "testing"
+ os.environ["AWS_SECRET_ACCESS_KEY"] = "testing"
+ os.environ["AWS_SECURITY_TOKEN"] = "testing"
+ os.environ["AWS_SESSION_TOKEN"] = "testing"
+ os.environ["AWS_DEFAULT_REGION"] = "eu-west-2"
+
+
+@pytest.fixture(scope="function")
+def mock_sm_client(aws_credentials):
+ with mock_aws():
+ yield boto3.client("secretsmanager")
+
+
+@pytest.fixture(scope="function")
+def mock_store_secret(mock_sm_client):
+ secret = {
+ "cohort_id": "test_cohort_id",
+ "user": "test_user_id",
+ "password": "test_password",
+ "host": "test_host",
+ "database": "test_database",
+ "port": "test_port",
+ }
+
+ secret_name = "test_secret"
+
+ response = mock_sm_client.create_secret(
+ Name=secret_name, SecretString=json.dumps(secret)
+ )
+
+ return response
+
+
+def test_retrieves_secrets_returns_dictionary(mock_sm_client, mock_store_secret):
+ secret_name = "test_secret"
+
+ result = retrieve_secrets(mock_sm_client, secret_name)
+
+ assert isinstance(result, dict)
+
+
+def test_retrieves_secrets_returns_correct_keys_and_values(
+ mock_sm_client, mock_store_secret
+):
+ secret_name = "test_secret"
+
+ result = retrieve_secrets(mock_sm_client, secret_name)
+
+ assert result["cohort_id"] == "test_cohort_id"
+ assert result["user"] == "test_user_id"
+ assert result["password"] == "test_password"
+ assert result["host"] == "test_host"
+ assert result["database"] == "test_database"
+ assert result["port"] == "test_port"
+
+
+def test_retrieves_secrets_raises_error_if_secret_name_incorrect_data_type(
+ mock_sm_client,
+):
+ secret_name = [1, 2, 3]
+
+ with pytest.raises(botocore.exceptions.ParamValidationError) as error:
+ retrieve_secrets(mock_sm_client, secret_name)
+
+
+def test_retrieves_secrets_raises_error_if_secret_name_does_not_exist(
+ mock_sm_client, mock_store_secret
+):
+ secret_name = "test_secret_2"
+
+ with pytest.raises(botocore.exceptions.ClientError) as error:
+ retrieve_secrets(mock_sm_client, secret_name)
git.ajschof.me — hosted by ajschofield — powered by cgit