From bfe329d9cdef35f34e40d55e3055627d3de9e0c7 Mon Sep 17 00:00:00 2001 From: seangchan-ryu-nih Date: Wed, 26 Feb 2020 16:27:51 -0500 Subject: [PATCH 1/2] black fix --- projectname/handler/lambda_handler_template.py | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) 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 From b8ceaf5aedfca94337cf951ecc9defe7e72deac7 Mon Sep 17 00:00:00 2001 From: seangchan-ryu-nih Date: Thu, 27 Feb 2020 10:47:50 -0500 Subject: [PATCH 2/2] add unittest --- projectname/awshelper/awsenv.py | 1 + tests/unittests/awshelper_t/__init__.py | 0 tests/unittests/awshelper_t/test_awsenv.py | 45 ++++++++++++++++++++++ 3 files changed, 46 insertions(+) create mode 100644 tests/unittests/awshelper_t/__init__.py create mode 100644 tests/unittests/awshelper_t/test_awsenv.py 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/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 == {}