17
17
import pytest
18
18
import time
19
19
import logging
20
+ import hashlib
21
+ import base64
20
22
21
23
from acktest .resources import random_suffix_name
22
24
from acktest .aws .identity import get_region
25
27
from e2e import service_marker , CRD_GROUP , CRD_VERSION , load_lambda_resource
26
28
from e2e .replacement_values import REPLACEMENT_VALUES
27
29
from e2e .bootstrap_resources import get_bootstrap_resources
28
- from e2e .service_bootstrap import LAMBDA_FUNCTION_FILE_ZIP
30
+ from e2e .service_bootstrap import LAMBDA_FUNCTION_FILE_ZIP , LAMBDA_FUNCTION_FILE_PATH_ZIP
29
31
from e2e .tests .helper import LambdaValidator
30
32
31
33
RESOURCE_PLURAL = "versions"
@@ -88,7 +90,7 @@ def test_smoke(self, lambda_client, lambda_function):
88
90
replacements ["AWS_REGION" ] = get_region ()
89
91
replacements ["FUNCTION_NAME" ] = lambda_function_name
90
92
replacements ["VERSION_NAME" ] = resource_name
91
-
93
+
92
94
# Load Lambda CR
93
95
resource_data = load_lambda_resource (
94
96
"version" ,
@@ -126,3 +128,60 @@ def test_smoke(self, lambda_client, lambda_function):
126
128
127
129
# Check function version doesn't exist
128
130
assert not lambda_validator .version_exists (lambda_function_name , version_number )
131
+
132
+ def test_version_with_check (self , lambda_client , lambda_function ):
133
+ (_ , function_resource ) = lambda_function
134
+ lambda_function_name = function_resource ["spec" ]["name" ]
135
+
136
+ resource_name = random_suffix_name ("lambda-version" , 24 )
137
+
138
+ archive_1 = open (LAMBDA_FUNCTION_FILE_PATH_ZIP , 'rb' )
139
+ readFile_1 = archive_1 .read ()
140
+ hash_1 = hashlib .sha256 (readFile_1 )
141
+ binary_hash_1 = hash_1 .digest ()
142
+ base64_hash_1 = base64 .b64encode (binary_hash_1 ).decode ('utf-8' )
143
+
144
+ replacements = REPLACEMENT_VALUES .copy ()
145
+ replacements ["AWS_REGION" ] = get_region ()
146
+ replacements ["FUNCTION_NAME" ] = lambda_function_name
147
+ replacements ["VERSION_NAME" ] = resource_name
148
+ replacements ["HASH" ] = base64_hash_1
149
+ replacements ["REVISION_ID" ] = ""
150
+
151
+ # Load Lambda CR
152
+ resource_data = load_lambda_resource (
153
+ "version_with_check" ,
154
+ additional_replacements = replacements ,
155
+ )
156
+ logging .debug (resource_data )
157
+
158
+ # Create k8s resource
159
+ ref = k8s .CustomResourceReference (
160
+ CRD_GROUP , CRD_VERSION , RESOURCE_PLURAL ,
161
+ resource_name , namespace = "default" ,
162
+ )
163
+ k8s .create_custom_resource (ref , resource_data )
164
+ cr = k8s .wait_resource_consumed_by_controller (ref )
165
+
166
+ assert cr is not None
167
+ assert k8s .get_resource_exists (ref )
168
+
169
+ time .sleep (CREATE_WAIT_AFTER_SECONDS )
170
+
171
+ cr = k8s .wait_resource_consumed_by_controller (ref )
172
+
173
+ lambda_validator = LambdaValidator (lambda_client )
174
+
175
+ version_number = cr ['status' ]['version' ]
176
+
177
+ # Check version exists
178
+ assert lambda_validator .version_exists (lambda_function_name , version_number )
179
+
180
+ # Delete k8s resource
181
+ _ , deleted = k8s .delete_custom_resource (ref )
182
+ assert deleted is True
183
+
184
+ time .sleep (DELETE_WAIT_AFTER_SECONDS )
185
+
186
+ # Check function version doesn't exist
187
+ assert not lambda_validator .version_exists (lambda_function_name , version_number )
0 commit comments