"""Test Lambda extension.""" import json import os try: # moto>=5.0.0 from moto import mock_aws as mock_secretsmanager except ImportError: # moto<5.0.0 from moto import mock_secretsmanager def test_secrets_manager_lambda(secrets_manager_lambda_client): os.environ['TEST'] = 'found' cred = secrets_manager_lambda_client.get_cred('TEST') assert cred == 'found' @mock_secretsmanager def test_secrets_manager_get_remote_lambda(secrets_manager_lambda_client): """Test secrets from AWS.""" var_to_secret_name = { 'AR_DB_NAME': 'ar_db_username', } secrets_manager_lambda_client.update_options( environment='prod', local_to_remote_name=var_to_secret_name) secrets_manager_lambda_client.store_cred('ar_db_username', 'testing') cred = secrets_manager_lambda_client.get_cred('AR_DB_NAME') assert cred == 'testing' secrets_manager_lambda_client.store_cred('ar_db_username', 1) cred = secrets_manager_lambda_client.get_cred('AR_DB_NAME') assert cred == 1 secrets = {'key_1': 'value_1', 'key_2': 'value_2'} secrets_manager_lambda_client.get_client().create_secret( Name='prod/random/secrets', SecretString=json.dumps(secrets) ) cred = secrets_manager_lambda_client.get_cred('secrets') assert cred == secrets assert type(cred) is dict @mock_secretsmanager def test_secrets_manager_get_lambda_missing(secrets_manager_lambda_client): """Test secrets from AWS.""" secrets_manager_lambda_client.update_options(environment='prod') try: secrets_manager_lambda_client.get_cred('AR_DB_NAME') except Exception as e: assert str(e).startswith( "An error occurred (ResourceNotFoundException) " "when calling the GetSecretValue operation: " "Secrets Manager can't find the specified secret") secrets_manager_lambda_client.update_options(environment='test') cred = secrets_manager_lambda_client.get_cred('AR_DB_NAME') assert cred is None @mock_secretsmanager def test_secrets_manager_force_remote(secrets_manager_lambda_client): """Test secrets from AWS.""" secrets_manager_lambda_client.get_client().create_secret( Name='dev/test/test_key', SecretString='testing' ) secrets_manager_lambda_client.update_options( environment='dev', service_name='test', force_remote=True ) cred = secrets_manager_lambda_client.get_cred('test_key') assert cred == 'testing'