From 5a67fd8f789bf1019068e256d9363ff46f6a2303 Mon Sep 17 00:00:00 2001 From: mattsb42-aws <bullocm@amazon.com> Date: Fri, 17 Apr 2020 16:34:26 -0700 Subject: [PATCH 1/3] chore: fix 'nocmk' test environment to block environment variables again --- tox.ini | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tox.ini b/tox.ini index ccc5dc4fa..0785c62f7 100644 --- a/tox.ini +++ b/tox.ini @@ -61,6 +61,11 @@ commands = [testenv:nocmk] basepython = python3 sitepackages = False +######################################################### +# Do not pass through or set any environment variables! # +passenv = +setenv = +######################################################### deps = -rtest/requirements.txt commands = {[testenv:base-command]commands} test/ -m local From 4edf39c1bc5f44a161c4d07d7845993e141102f6 Mon Sep 17 00:00:00 2001 From: mattsb42-aws <bullocm@amazon.com> Date: Fri, 17 Apr 2020 16:35:18 -0700 Subject: [PATCH 2/3] fix: move calls requiring integ test environment setup from test parameterization setup to inside test body --- test/integration/test_client.py | 46 +++++++++++++++++++++------------ 1 file changed, 29 insertions(+), 17 deletions(-) diff --git a/test/integration/test_client.py b/test/integration/test_client.py index 7f5c1e983..d6ed0e082 100644 --- a/test/integration/test_client.py +++ b/test/integration/test_client.py @@ -27,20 +27,23 @@ } +def _generate_mkp(): + """Isolated inside a function to avoid calling get_cmk_arn during test discovery.""" + return setup_kms_master_key_provider().master_key(get_cmk_arn()) + + @pytest.mark.parametrize( - "kwargs", + "parameter_name, value_partial", ( - pytest.param(dict(key_provider=setup_kms_master_key_provider()), id="AWS KMS master key provider"), - pytest.param( - dict(key_provider=setup_kms_master_key_provider().master_key(get_cmk_arn())), id="AWS KMS master key" - ), - pytest.param(dict(keyring=build_aws_kms_keyring()), id="AWS KMS keyring"), + pytest.param("key_provider", setup_kms_master_key_provider, id="AWS KMS master key provider"), + pytest.param("key_provider", _generate_mkp, id="AWS KMS master key"), + pytest.param("keyring", build_aws_kms_keyring, id="AWS KMS keyring"), ), ) -def test_encrypt_verify_user_agent_in_logs(caplog, kwargs): +def test_encrypt_verify_user_agent_in_logs(caplog, parameter_name, value_partial): caplog.set_level(level=logging.DEBUG) - aws_encryption_sdk.encrypt(source=VALUES["plaintext_128"], **kwargs) + aws_encryption_sdk.encrypt(source=VALUES["plaintext_128"], parameter_name=value_partial()) assert USER_AGENT_SUFFIX in caplog.text @@ -48,17 +51,17 @@ def test_encrypt_verify_user_agent_in_logs(caplog, kwargs): @pytest.mark.parametrize("frame_size", (pytest.param(0, id="unframed"), pytest.param(1024, id="1024 byte frame"))) @pytest.mark.parametrize("algorithm_suite", Algorithm) @pytest.mark.parametrize( - "encrypt_key_provider_kwargs", + "encrypt_key_provider_param, encrypt_key_provider_partial", ( - pytest.param(dict(key_provider=setup_kms_master_key_provider()), id="encrypt with MKP"), - pytest.param(dict(keyring=build_aws_kms_keyring()), id="encrypt with keyring"), + pytest.param("key_provider", setup_kms_master_key_provider, id="encrypt with MKP"), + pytest.param("keyring", build_aws_kms_keyring, id="encrypt with keyring"), ), ) @pytest.mark.parametrize( - "decrypt_key_provider_kwargs", + "decrypt_key_provider_param, decrypt_key_provider_partial", ( - pytest.param(dict(key_provider=setup_kms_master_key_provider()), id="decrypt with MKP"), - pytest.param(dict(keyring=build_aws_kms_keyring()), id="decrypt with keyring"), + pytest.param("key_provider", setup_kms_master_key_provider, id="decrypt with MKP"), + pytest.param("keyring", build_aws_kms_keyring, id="decrypt with keyring"), ), ) @pytest.mark.parametrize( @@ -76,16 +79,25 @@ def test_encrypt_verify_user_agent_in_logs(caplog, kwargs): ), ) def test_encrypt_decrypt_cycle_aws_kms( - frame_size, algorithm_suite, encrypt_key_provider_kwargs, decrypt_key_provider_kwargs, encryption_context, plaintext + frame_size, + algorithm_suite, + encrypt_key_provider_param, + encrypt_key_provider_partial, + decrypt_key_provider_param, + decrypt_key_provider_partial, + encryption_context, + plaintext, ): ciphertext, _ = aws_encryption_sdk.encrypt( source=plaintext, encryption_context=encryption_context, frame_length=frame_size, algorithm=algorithm_suite, - **encrypt_key_provider_kwargs + encrypt_key_provider_param=encrypt_key_provider_partial(), + ) + decrypted, _ = aws_encryption_sdk.decrypt( + source=ciphertext, decrypt_key_provider_param=decrypt_key_provider_partial() ) - decrypted, _ = aws_encryption_sdk.decrypt(source=ciphertext, **decrypt_key_provider_kwargs) assert decrypted == plaintext From 73fdd5076b718a560b7e0a36ce241ae634cc6c16 Mon Sep 17 00:00:00 2001 From: mattsb42-aws <bullocm@amazon.com> Date: Fri, 17 Apr 2020 17:00:36 -0700 Subject: [PATCH 3/3] fix: fix broken parameter reconfiguration --- test/integration/test_client.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test/integration/test_client.py b/test/integration/test_client.py index d6ed0e082..44f43a95c 100644 --- a/test/integration/test_client.py +++ b/test/integration/test_client.py @@ -43,7 +43,7 @@ def _generate_mkp(): def test_encrypt_verify_user_agent_in_logs(caplog, parameter_name, value_partial): caplog.set_level(level=logging.DEBUG) - aws_encryption_sdk.encrypt(source=VALUES["plaintext_128"], parameter_name=value_partial()) + aws_encryption_sdk.encrypt(source=VALUES["plaintext_128"], **{parameter_name: value_partial()}) assert USER_AGENT_SUFFIX in caplog.text @@ -93,10 +93,10 @@ def test_encrypt_decrypt_cycle_aws_kms( encryption_context=encryption_context, frame_length=frame_size, algorithm=algorithm_suite, - encrypt_key_provider_param=encrypt_key_provider_partial(), + **{encrypt_key_provider_param: encrypt_key_provider_partial()} ) decrypted, _ = aws_encryption_sdk.decrypt( - source=ciphertext, decrypt_key_provider_param=decrypt_key_provider_partial() + source=ciphertext, **{decrypt_key_provider_param: decrypt_key_provider_partial()} ) assert decrypted == plaintext