Skip to content

Commit 86302bc

Browse files
authored
Merge pull request #19 from petlitskiy/feature/BN-4095-versionConsistency
Use `versionConsistency`
2 parents dd69b6d + 889b6f8 commit 86302bc

3 files changed

Lines changed: 128 additions & 0 deletions

File tree

ecs-task.cfndsl.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,7 @@
182182
task_def.merge!({User: task['user'] }) if task.key?('user')
183183
task_def.merge!({DependsOn: depends_on }) if depends_on.length > 0
184184
task_def.merge!({ ExtraHosts: task['extra_hosts'] }) if task.has_key?('extra_hosts')
185+
task_def.merge!({VersionConsistency: task['version_consistency']}) if task.has_key?('version_consistency')
185186

186187
if task.key?('secrets')
187188
secrets = []

spec/version_consistency_spec.rb

Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
require 'yaml'
2+
3+
describe 'compiled component ecs-task' do
4+
5+
context 'cftest' do
6+
it 'compiles test' do
7+
expect(system("cfhighlander cftest #{@validate} --tests tests/version_consistency.test.yaml")).to be_truthy
8+
end
9+
end
10+
11+
let(:template) { YAML.load_file("#{File.dirname(__FILE__)}/../out/tests/version_consistency/ecs-task.compiled.yaml") }
12+
13+
context "Resource" do
14+
15+
16+
context "LogGroup" do
17+
let(:resource) { template["Resources"]["LogGroup"] }
18+
19+
it "is of type AWS::Logs::LogGroup" do
20+
expect(resource["Type"]).to eq("AWS::Logs::LogGroup")
21+
end
22+
23+
it "to have property LogGroupName" do
24+
expect(resource["Properties"]["LogGroupName"]).to eq({"Ref"=>"AWS::StackName"})
25+
end
26+
27+
it "to have property RetentionInDays" do
28+
expect(resource["Properties"]["RetentionInDays"]).to eq(7)
29+
end
30+
31+
end
32+
33+
context "TaskRole" do
34+
let(:resource) { template["Resources"]["TaskRole"] }
35+
36+
it "is of type AWS::IAM::Role" do
37+
expect(resource["Type"]).to eq("AWS::IAM::Role")
38+
end
39+
40+
it "to have property AssumeRolePolicyDocument" do
41+
expect(resource["Properties"]["AssumeRolePolicyDocument"]).to eq({"Version"=>"2012-10-17", "Statement"=>[{"Effect"=>"Allow", "Principal"=>{"Service"=>"ecs-tasks.amazonaws.com"}, "Action"=>"sts:AssumeRole"}, {"Effect"=>"Allow", "Principal"=>{"Service"=>"ssm.amazonaws.com"}, "Action"=>"sts:AssumeRole"}]})
42+
end
43+
44+
it "to have property Path" do
45+
expect(resource["Properties"]["Path"]).to eq("/")
46+
end
47+
48+
end
49+
50+
context "ExecutionRole" do
51+
let(:resource) { template["Resources"]["ExecutionRole"] }
52+
53+
it "is of type AWS::IAM::Role" do
54+
expect(resource["Type"]).to eq("AWS::IAM::Role")
55+
end
56+
57+
it "to have property AssumeRolePolicyDocument" do
58+
expect(resource["Properties"]["AssumeRolePolicyDocument"]).to eq({"Version"=>"2012-10-17", "Statement"=>[{"Effect"=>"Allow", "Principal"=>{"Service"=>"ecs-tasks.amazonaws.com"}, "Action"=>"sts:AssumeRole"}, {"Effect"=>"Allow", "Principal"=>{"Service"=>"ssm.amazonaws.com"}, "Action"=>"sts:AssumeRole"}]})
59+
end
60+
61+
it "to have property Path" do
62+
expect(resource["Properties"]["Path"]).to eq("/")
63+
end
64+
65+
it "to have property ManagedPolicyArns" do
66+
expect(resource["Properties"]["ManagedPolicyArns"]).to eq(["arn:aws:iam::aws:policy/service-role/AmazonECSTaskExecutionRolePolicy"])
67+
end
68+
69+
it "to have property Policies" do
70+
expect(resource["Properties"]["Policies"]).to eq([])
71+
end
72+
73+
end
74+
75+
context "Task" do
76+
let(:resource) { template["Resources"]["Task"] }
77+
78+
it "is of type AWS::ECS::TaskDefinition" do
79+
expect(resource["Type"]).to eq("AWS::ECS::TaskDefinition")
80+
end
81+
82+
it "to have property ContainerDefinitions" do
83+
expect(resource["Properties"]["ContainerDefinitions"]).to eq([{"Name"=>"nginx","Image"=>{"Fn::Join"=>["", [{"Fn::Sub"=>"nginx/nginx"}, ":", "latest"]]},"LogConfiguration"=>{"LogDriver"=>"awslogs", "Options"=>{"awslogs-group"=>{"Ref"=>"LogGroup"}, "awslogs-region"=>{"Ref"=>"AWS::Region"}, "awslogs-stream-prefix"=>"nginx"}},"VersionConsistency"=>"disabled"}])
84+
end
85+
86+
it "to have property RequiresCompatibilities" do
87+
expect(resource["Properties"]["RequiresCompatibilities"]).to eq(["EC2"])
88+
end
89+
90+
it "to have property TaskRoleArn" do
91+
expect(resource["Properties"]["TaskRoleArn"]).to eq({"Ref"=>"TaskRole"})
92+
end
93+
94+
it "to have property ExecutionRoleArn" do
95+
expect(resource["Properties"]["ExecutionRoleArn"]).to eq({"Ref"=>"ExecutionRole"})
96+
end
97+
98+
it "to have property Tags" do
99+
expect(resource["Properties"]["Tags"]).to eq([{"Key"=>"Name", "Value"=>"ecs-task"}, {"Key"=>"Environment", "Value"=>{"Ref"=>"EnvironmentName"}}, {"Key"=>"EnvironmentType", "Value"=>{"Ref"=>"EnvironmentType"}}])
100+
end
101+
102+
end
103+
104+
end
105+
106+
end
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
test_metadata:
2+
type: config
3+
name: consistency
4+
description: VersionConsistency property
5+
6+
# Insert your tests here
7+
task_definition:
8+
nginx:
9+
repo: nginx
10+
image: nginx
11+
version_consistency: disabled
12+
13+
targetgroup:
14+
name: nginx
15+
container: nginx
16+
port: 80
17+
protocol: http
18+
listener: http
19+
healthcheck:
20+
path: /
21+
code: 200

0 commit comments

Comments
 (0)