Skip to content

Commit f16124e

Browse files
committed
add integration tests
1 parent 9236e88 commit f16124e

File tree

5 files changed

+84
-0
lines changed

5 files changed

+84
-0
lines changed

integration/combination/test_function_with_alias.py

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,42 @@ def test_alias_with_event_sources_get_correct_permissions(self):
160160
function_policy = json.loads(function_policy_str)
161161
self.assertEqual(len(function_policy["Statement"]), len(permission_resources))
162162

163+
def test_function_with_alias_and_layer_version(self):
164+
self.create_and_verify_stack("combination/function_with_alias_all_properties_and_layer_version")
165+
alias_name = "Live"
166+
function_name = self.get_physical_id_by_type("AWS::Lambda::Function")
167+
version_ids = self.get_function_version_by_name(function_name)
168+
self.assertEqual(["1"], version_ids)
169+
170+
alias = self.get_alias(function_name, alias_name)
171+
self.assertEqual("1", alias["FunctionVersion"])
172+
173+
# Changing Description in the LayerVersion should create a new version, and leave the existing version intact
174+
self.set_template_resource_property("MyLayer", "Description", "test123")
175+
self.update_stack()
176+
177+
version_ids = self.get_function_version_by_name(function_name)
178+
self.assertEqual(["1", "2"], version_ids)
179+
180+
alias = self.get_alias(function_name, alias_name)
181+
self.assertEqual("2", alias["FunctionVersion"])
182+
183+
# Changing ContentUri in LayerVersion should create a new version, and leave the existing version intact
184+
self.set_template_resource_property("MyLayer", "ContentUri", self.file_to_s3_uri_map["layer2.zip"]["uri"])
185+
self.update_stack()
186+
187+
version_ids = self.get_function_version_by_name(function_name)
188+
self.assertEqual(["1", "2", "3"], version_ids)
189+
190+
alias = self.get_alias(function_name, alias_name)
191+
self.assertEqual("3", alias["FunctionVersion"])
192+
193+
# Make sure the stack has only One Version & One Alias resource
194+
alias = self.get_stack_resources("AWS::Lambda::Alias")
195+
versions = self.get_stack_resources("AWS::Lambda::Version")
196+
self.assertEqual(len(alias), 1)
197+
self.assertEqual(len(versions), 1)
198+
163199
def get_function_version_by_name(self, function_name):
164200
lambda_client = self.client_provider.lambda_client
165201
versions = lambda_client.list_versions_by_function(FunctionName=function_name)["Versions"]

integration/config/file_to_s3_map.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,10 @@
2323
"type": "s3",
2424
"uri": ""
2525
},
26+
"layer2.zip": {
27+
"type": "s3",
28+
"uri": ""
29+
},
2630
"swagger1.json": {
2731
"type": "s3",
2832
"uri": ""

integration/helpers/file_resources.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
"code.zip": {"type": "s3", "uri": ""},
33
"code2.zip": {"type": "s3", "uri": ""},
44
"layer1.zip": {"type": "s3", "uri": ""},
5+
"layer2.zip": {"type": "s3", "uri": ""},
56
"swagger1.json": {"type": "s3", "uri": ""},
67
"swagger2.json": {"type": "s3", "uri": ""},
78
"binary-media.zip": {"type": "s3", "uri": ""},
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
[
2+
{
3+
"LogicalResourceId": "MyLambdaFunction",
4+
"ResourceType": "AWS::Lambda::Function"
5+
},
6+
{
7+
"LogicalResourceId": "MyLambdaFunctionRole",
8+
"ResourceType": "AWS::IAM::Role"
9+
},
10+
{
11+
"LogicalResourceId": "MyLambdaFunctionAliasLive",
12+
"ResourceType": "AWS::Lambda::Alias"
13+
},
14+
{
15+
"LogicalResourceId": "MyLambdaFunctionVersion",
16+
"ResourceType": "AWS::Lambda::Version"
17+
},
18+
{
19+
"LogicalResourceId": "MyLayer",
20+
"ResourceType": "AWS::Lambda::LayerVersion"
21+
}
22+
]
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
Resources:
2+
MyLambdaFunction:
3+
Type: AWS::Serverless::Function
4+
Properties:
5+
CodeUri: ${codeuri}
6+
Handler: index.handler
7+
Runtime: nodejs20.x
8+
AutoPublishAlias: Live
9+
AutoPublishAliasAllProperties: true
10+
Layers:
11+
- !Ref MyLayer
12+
13+
MyLayer:
14+
Type: AWS::Serverless::LayerVersion
15+
Properties:
16+
ContentUri: ${contenturi}
17+
RetentionPolicy: Delete
18+
PublishLambdaVersion: true
19+
Description: test
20+
Metadata:
21+
SamTransformTest: true

0 commit comments

Comments
 (0)