diff --git a/projectname/awshelper/awsenv.py b/projectname/awshelper/awsenv.py index 21c4640..81e918a 100644 --- a/projectname/awshelper/awsenv.py +++ b/projectname/awshelper/awsenv.py @@ -37,6 +37,7 @@ def get_params_from_ssm(path_to_config=None): ssm = boto3.Session(region_name='us-east-1').client('ssm') param = ssm.get_parameter(Name=path_to_config, WithDecryption=True) + param_dict = {} if param and "Parameter" in param: param_dict = json.loads(param['Parameter']['Value']) diff --git a/projectname/handler/lambda_handler_template.py b/projectname/handler/lambda_handler_template.py index 96a2be2..f54c498 100644 --- a/projectname/handler/lambda_handler_template.py +++ b/projectname/handler/lambda_handler_template.py @@ -34,12 +34,7 @@ def insert_to_dynamo(key, data): dynamo = boto3.resource("dynamodb", endpoint_url=dynamo_endpoint) dynamo_table = dynamo.Table(dynamo_table_name) - item = { - "key_id": key, - "data": data, - "created": int(time.time()), - "updated": int(time.time()), - } + item = {"key_id": key, "data": data, "created": int(time.time()), "updated": int(time.time())} result = dynamo_table.put_item(Item=item) return result diff --git a/tests/unittests/awshelper_t/__init__.py b/tests/unittests/awshelper_t/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/unittests/awshelper_t/test_awsenv.py b/tests/unittests/awshelper_t/test_awsenv.py new file mode 100644 index 0000000..635a94c --- /dev/null +++ b/tests/unittests/awshelper_t/test_awsenv.py @@ -0,0 +1,45 @@ +""" +Test aws_env module. mocking aws ssm access +""" +import json +from unittest.mock import patch +from botocore.exceptions import ClientError +from projectname.awshelper.awsenv import get_params_from_ssm, get_params_from_secretsmanager + + +@patch("projectname.awshelper.awsenv.boto3.Session") +def test_get_ssm_success(boto3_session): + """ + Test successful case when get_params_from_ssm returns param + :param boto_session: + :return: None + """ + PARAM = {'Parameter': {'Value': json.dumps({"TEST_TABLE": "AnnotationTable"})}} + boto3_session().client().get_parameter.return_value = PARAM + + response = get_params_from_ssm("/test/config") + assert response == json.loads(PARAM['Parameter']['Value']) + + # When param doesn't exists + boto3_session().client().get_parameter.return_value = {} + response = get_params_from_ssm("/test/config") + assert response == {} + + +@patch("projectname.awshelper.awsenv.boto3.Session") +def test_get_param_success(boto3_session): + """ + Test successful case when get_params_from_ssm returns param + :param boto_session: + :return: None + """ + PARAM = {'SecretString': json.dumps({'CosmicSecrete': "abc"})} + boto3_session().client().get_secret_value.return_value = PARAM + + response = get_params_from_secretsmanager("/test/config") + assert response == json.loads(PARAM['SecretString']) + + # When param doesn't exists + boto3_session().client().get_secret_value.return_value = {} + response = get_params_from_secretsmanager("/test/config") + assert response == {}