@@ -13,6 +13,7 @@ import org.junit.Test
13
13
import software.amazon.awssdk.regions.Region
14
14
import software.amazon.awssdk.services.cloudformation.CloudFormationClient
15
15
import software.amazon.awssdk.services.cloudformation.model.Parameter
16
+ import software.amazon.awssdk.services.cloudformation.model.Tag
16
17
import software.amazon.awssdk.services.ecr.EcrClient
17
18
import software.amazon.awssdk.services.s3.S3Client
18
19
import software.aws.toolkits.core.region.AwsRegion
@@ -102,7 +103,7 @@ class SamDeployTest {
102
103
val stackName = " SamDeployTest-${UUID .randomUUID()} "
103
104
val templateFile = setUpProject(largeTemplateLocation)
104
105
runAssertsAndClean(stackName) {
105
- val changeSetArn = createChangeSet(templateFile, stackName, mapOf (" InstanceType" to " t2.small" ), false )
106
+ val changeSetArn = createChangeSet(templateFile, stackName, hasImage = false , parameters = mapOf (" InstanceType" to " t2.small" ))
106
107
107
108
assertThat(changeSetArn).isNotNull()
108
109
@@ -126,7 +127,7 @@ class SamDeployTest {
126
127
val stackName = " SamDeployTest-${UUID .randomUUID()} "
127
128
val templateFile = setUpProject()
128
129
runAssertsAndClean(stackName) {
129
- val changeSetArn = createChangeSet(templateFile, stackName, mapOf (" TestParameter" to " FooBar" ), false )
130
+ val changeSetArn = createChangeSet(templateFile, stackName, hasImage = false , parameters = mapOf (" TestParameter" to " FooBar" ))
130
131
131
132
assertThat(changeSetArn).isNotNull()
132
133
@@ -169,6 +170,51 @@ class SamDeployTest {
169
170
}
170
171
}
171
172
173
+ @Test
174
+ fun deployAppUsingSamWithTags () {
175
+ val stackName = " SamDeployTest-${UUID .randomUUID()} "
176
+ val templateFile = setUpProject()
177
+ runAssertsAndClean(stackName) {
178
+ val changeSetArn = createChangeSet(
179
+ templateFile, stackName, hasImage = false ,
180
+ tags = mapOf (
181
+ " TestTag" to " FooBar" ,
182
+ " some:gross" to " tag name and value" ,
183
+ // SAM test cases https://github.com/aws/aws-sam-cli/pull/1798/files
184
+ " a+-=._:/@" to " b+-=._:/@" ,
185
+ " --c=" to " =d/"
186
+ )
187
+ )
188
+
189
+ assertThat(changeSetArn).isNotNull()
190
+
191
+ val describeChangeSetResponse = cfnClient.describeChangeSet {
192
+ it.stackName(stackName)
193
+ it.changeSetName(changeSetArn)
194
+ }
195
+
196
+ assertThat(describeChangeSetResponse).isNotNull
197
+ assertThat(describeChangeSetResponse.tags()).containsExactlyInAnyOrder(
198
+ Tag .builder()
199
+ .key(" TestTag" )
200
+ .value(" FooBar" )
201
+ .build(),
202
+ Tag .builder()
203
+ .key(" some:gross" )
204
+ .value(" tag name and value" )
205
+ .build(),
206
+ Tag .builder()
207
+ .key(" a+-=._:/@" )
208
+ .value(" b+-=._:/@" )
209
+ .build(),
210
+ Tag .builder()
211
+ .key(" --c=" )
212
+ .value(" =d/" )
213
+ .build()
214
+ )
215
+ }
216
+ }
217
+
172
218
private fun setUpProject (templateFilePath : String? = null): VirtualFile {
173
219
projectRule.fixture.addFileToProject(
174
220
" hello_world/app.py" ,
@@ -202,7 +248,7 @@ class SamDeployTest {
202
248
Properties:
203
249
Handler: hello_world/app.lambda_handler
204
250
CodeUri: .
205
- Runtime: python2.7
251
+ Runtime: python3.8
206
252
Timeout: 900
207
253
""" .trimIndent()
208
254
).virtualFile
@@ -211,7 +257,13 @@ class SamDeployTest {
211
257
}
212
258
}
213
259
214
- private fun createChangeSet (templateFile : VirtualFile , stackName : String , parameters : Map <String , String > = emptyMap(), hasImage : Boolean ): String? =
260
+ private fun createChangeSet (
261
+ templateFile : VirtualFile ,
262
+ stackName : String ,
263
+ hasImage : Boolean ,
264
+ parameters : Map <String , String > = emptyMap(),
265
+ tags : Map <String , String > = emptyMap()
266
+ ): String? =
215
267
runUnderRealCredentials(projectRule.project) {
216
268
var changeSetArn: String? = null
217
269
val deployDialog = runInEdtAndGet {
@@ -220,13 +272,17 @@ class SamDeployTest {
220
272
message(" serverless.application.deploy_in_progress.title" , stackName),
221
273
createDeployWorkflow(
222
274
projectRule.project,
223
- stackName,
224
275
templateFile,
225
- bucketRule.createBucket(stackName),
226
- if (hasImage) repositoryRule.createRepository(stackName).repositoryUri() else null ,
227
- true ,
228
- parameters,
229
- CreateCapabilities .values().toList()
276
+ DeployServerlessApplicationSettings (
277
+ stackName = stackName,
278
+ bucket = bucketRule.createBucket(stackName),
279
+ ecrRepo = if (hasImage) repositoryRule.createRepository(stackName).repositoryUri() else null ,
280
+ autoExecute = true ,
281
+ parameters = parameters,
282
+ tags = tags,
283
+ useContainer = false ,
284
+ capabilities = CreateCapabilities .values().toList()
285
+ )
230
286
),
231
287
stackName
232
288
)
0 commit comments