2024-03-07 21:22:13 +00:00
|
|
|
import os
|
|
|
|
from functools import wraps
|
|
|
|
from uuid import uuid4
|
|
|
|
|
|
|
|
import boto3
|
|
|
|
|
|
|
|
from moto import mock_aws
|
|
|
|
|
|
|
|
|
|
|
|
def secretsmanager_aws_verified(func):
|
|
|
|
"""
|
|
|
|
Function that is verified to work against AWS.
|
|
|
|
Can be run against AWS at any time by setting:
|
|
|
|
MOTO_TEST_ALLOW_AWS_REQUEST=true
|
|
|
|
|
|
|
|
If this environment variable is not set, the function runs in a `mock_aws` context.
|
|
|
|
"""
|
|
|
|
|
|
|
|
@wraps(func)
|
|
|
|
def pagination_wrapper():
|
|
|
|
allow_aws_request = (
|
|
|
|
os.environ.get("MOTO_TEST_ALLOW_AWS_REQUEST", "false").lower() == "true"
|
|
|
|
)
|
|
|
|
|
|
|
|
if allow_aws_request:
|
|
|
|
return create_secret_and_execute(func)
|
|
|
|
else:
|
|
|
|
with mock_aws():
|
|
|
|
return create_secret_and_execute(func)
|
|
|
|
|
|
|
|
def create_secret_and_execute(func):
|
|
|
|
sm_client = boto3.client("secretsmanager", "us-east-1")
|
|
|
|
|
|
|
|
secret_arn = sm_client.create_secret(
|
|
|
|
Name=f"moto_secret_{str(uuid4())[0:6]}",
|
|
|
|
SecretString="old_secret",
|
|
|
|
)["ARN"]
|
|
|
|
try:
|
|
|
|
return func(secret_arn)
|
|
|
|
finally:
|
|
|
|
sm_client.delete_secret(SecretId=secret_arn)
|
|
|
|
|
|
|
|
return pagination_wrapper
|