1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141
|
import sys
from unittest import SkipTest
from uuid import uuid4
import boto3
import pytest
from botocore.exceptions import ClientError
from moto import mock_aws
from moto.utilities.distutils_version import LooseVersion
from .utilities import get_role_name, get_test_zip_file1
PYTHON_VERSION = "python3.11"
boto3_version = sys.modules["botocore"].__version__
@mock_aws
@pytest.mark.parametrize("key", ["FunctionName", "FunctionArn"])
def test_create_function_url_config(key):
if LooseVersion(boto3_version) < LooseVersion("1.29.0"):
raise SkipTest("Parameters only available in newer versions")
client = boto3.client("lambda", "us-east-2")
function_name = str(uuid4())[0:6]
fxn = client.create_function(
FunctionName=function_name,
Runtime=PYTHON_VERSION,
Role=get_role_name(),
Handler="lambda_function.lambda_handler",
Code={"ZipFile": get_test_zip_file1()},
)
name_or_arn = fxn[key]
resp = client.create_function_url_config(
AuthType="AWS_IAM", FunctionName=name_or_arn
)
assert resp["FunctionArn"] == fxn["FunctionArn"]
assert resp["AuthType"] == "AWS_IAM"
assert "FunctionUrl" in resp
resp = client.get_function_url_config(FunctionName=name_or_arn)
assert resp["FunctionArn"] == fxn["FunctionArn"]
assert resp["AuthType"] == "AWS_IAM"
assert "FunctionUrl" in resp
@mock_aws
def test_create_function_url_config_with_cors():
if LooseVersion(boto3_version) < LooseVersion("1.29.0"):
raise SkipTest("Parameters only available in newer versions")
client = boto3.client("lambda", "us-east-2")
function_name = str(uuid4())[0:6]
fxn = client.create_function(
FunctionName=function_name,
Runtime=PYTHON_VERSION,
Role=get_role_name(),
Handler="lambda_function.lambda_handler",
Code={"ZipFile": get_test_zip_file1()},
)
name_or_arn = fxn["FunctionName"]
resp = client.create_function_url_config(
AuthType="AWS_IAM",
FunctionName=name_or_arn,
Cors={
"AllowCredentials": True,
"AllowHeaders": ["date", "keep-alive"],
"AllowMethods": ["*"],
"AllowOrigins": ["*"],
"ExposeHeaders": ["date", "keep-alive"],
"MaxAge": 86400,
},
)
assert resp["Cors"] == {
"AllowCredentials": True,
"AllowHeaders": ["date", "keep-alive"],
"AllowMethods": ["*"],
"AllowOrigins": ["*"],
"ExposeHeaders": ["date", "keep-alive"],
"MaxAge": 86400,
}
@mock_aws
def test_update_function_url_config_with_cors():
if LooseVersion(boto3_version) < LooseVersion("1.29.0"):
raise SkipTest("Parameters only available in newer versions")
client = boto3.client("lambda", "us-east-2")
function_name = str(uuid4())[0:6]
fxn = client.create_function(
FunctionName=function_name,
Runtime=PYTHON_VERSION,
Role=get_role_name(),
Handler="lambda_function.lambda_handler",
Code={"ZipFile": get_test_zip_file1()},
)
name_or_arn = fxn["FunctionName"]
resp = client.create_function_url_config(
AuthType="AWS_IAM",
FunctionName=name_or_arn,
Cors={
"AllowCredentials": True,
"AllowHeaders": ["date", "keep-alive"],
"AllowMethods": ["*"],
"AllowOrigins": ["*"],
"ExposeHeaders": ["date", "keep-alive"],
"MaxAge": 86400,
},
)
resp = client.update_function_url_config(
FunctionName=name_or_arn, AuthType="NONE", Cors={"AllowCredentials": False}
)
assert resp["Cors"] == {"AllowCredentials": False}
@mock_aws
@pytest.mark.parametrize("key", ["FunctionName", "FunctionArn"])
def test_delete_function_url_config(key):
if LooseVersion(boto3_version) < LooseVersion("1.29.0"):
raise SkipTest("Parameters only available in newer versions")
client = boto3.client("lambda", "us-east-2")
function_name = str(uuid4())[0:6]
fxn = client.create_function(
FunctionName=function_name,
Runtime=PYTHON_VERSION,
Role=get_role_name(),
Handler="lambda_function.lambda_handler",
Code={"ZipFile": get_test_zip_file1()},
)
name_or_arn = fxn[key]
client.create_function_url_config(AuthType="AWS_IAM", FunctionName=name_or_arn)
client.delete_function_url_config(FunctionName=name_or_arn)
# It no longer exists
with pytest.raises(ClientError):
client.get_function_url_config(FunctionName=name_or_arn)
|