-
Notifications
You must be signed in to change notification settings - Fork 0
/
app_test.go
74 lines (60 loc) · 2.33 KB
/
app_test.go
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
package main
import (
"testing"
"github.com/aws/aws-cdk-go/awscdk/v2"
"github.com/aws/aws-cdk-go/awscdk/v2/assertions"
"github.com/aws/jsii-runtime-go"
)
func TestAppStack(t *testing.T) {
app := awscdk.NewApp(nil)
id := "test"
stack := NewAppStack(app, id, nil)
template := assertions.Template_FromStack(stack, nil)
// Test if the number of resources is right.
template.ResourceCountIs(jsii.String("AWS::SNS::Topic"), jsii.Number(1))
template.ResourceCountIs(jsii.String("AWS::SNS::Subscription"), jsii.Number(1))
template.ResourceCountIs(jsii.String("AWS::SQS::Queue"), jsii.Number(2))
template.ResourceCountIs(jsii.String("AWS::S3::Bucket"), jsii.Number(2))
template.ResourceCountIs(jsii.String("AWS::S3::BucketPolicy"), jsii.Number(1))
// Test if the SNS Topic has the right values and has an SQS subscription.
subscriptionCapture := assertions.NewCapture(assertions.Match_ObjectLike(
&map[string]interface{}{
"Fn::GetAtt": []string{
"AppQueueFD3F4958",
"Arn",
},
},
))
template.HasResourceProperties(jsii.String("AWS::SNS::Topic"), map[string]interface{}{})
template.HasResourceProperties(jsii.String("AWS::SNS::Subscription"), map[string]interface{}{
"Protocol": "sqs",
"Endpoint": subscriptionCapture,
})
// Test if the FIFO Queue has the right values.
template.HasResourceProperties(jsii.String("AWS::SQS::Queue"), map[string]interface{}{
"FifoQueue": true,
})
// Test if the Standard Queue has the right values.
template.HasResourceProperties(jsii.String("AWS::SQS::Queue"), map[string]interface{}{
"FifoQueue": assertions.Match_Absent(),
"VisibilityTimeout": 300,
})
// Test if there is one bucket NOT configured for static hosting.
template.HasResourceProperties(jsii.String("AWS::S3::Bucket"), map[string]interface{}{
"WebsiteConfiguration": assertions.Match_Absent(),
})
// Test if there is one bucket configured for static hosting.
bucketPolicyCapture := assertions.NewCapture(assertions.Match_ObjectLike(
&map[string]interface{}{
"Ref": "WebsiteBucket75C24D94",
},
))
template.HasResourceProperties(jsii.String("AWS::S3::Bucket"), map[string]interface{}{
"WebsiteConfiguration": map[string]string{
"IndexDocument": "index.html",
},
})
template.HasResourceProperties(jsii.String("AWS::S3::BucketPolicy"), map[string]interface{}{
"Bucket": bucketPolicyCapture,
})
}