@@ -21,6 +21,13 @@ run "valid_x86_64_instance" {
2121 variables {
2222 instance_type = " t3.micro"
2323 architecture = " x86_64"
24+ user_data = <<- EOT
25+ #!/bin/bash
26+ cd /tmp
27+ sudo yum install -y https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_amd64/amazon-ssm-agent.rpm
28+ sudo systemctl enable amazon-ssm-agent
29+ sudo systemctl start amazon-ssm-agent
30+ EOT
2431 }
2532
2633 assert {
@@ -54,7 +61,7 @@ run "invalid_x86_64_instance" {
5461 }
5562
5663 expect_failures = [
57- null_resource . validate_instance_type
64+ terraform_data . validate_configuration
5865 ]
5966}
6067
@@ -68,7 +75,7 @@ run "invalid_arm64_instance" {
6875 }
6976
7077 expect_failures = [
71- null_resource . validate_instance_type
78+ terraform_data . validate_configuration
7279 ]
7380}
7481
@@ -83,7 +90,7 @@ run "graphics_instance_arm_incompatiblity_edge_case" {
8390 }
8491
8592 expect_failures = [
86- null_resource . validate_instance_type
93+ terraform_data . validate_configuration
8794 ]
8895}
8996
@@ -95,10 +102,147 @@ run "graphics_instance_x86_compatibility_edge_case" {
95102 variables {
96103 instance_type = " g4dn.xlarge"
97104 architecture = " x86_64"
105+ user_data = <<- EOT
106+ #!/bin/bash
107+ cd /tmp
108+ sudo yum install -y https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_amd64/amazon-ssm-agent.rpm
109+ sudo systemctl enable amazon-ssm-agent
110+ sudo systemctl start amazon-ssm-agent
111+ EOT
98112 }
99113
100114 assert {
101115 condition = local. is_instance_compatible
102- error_message = " Expected instance type g3s.xlarge to be compatible with x86_64 architecture"
116+ error_message = " Expected instance type g4dn.xlarge to be compatible with x86_64 architecture"
117+ }
118+ }
119+
120+ # ## TESTING USER_DATA and ARCHITECTURE COMPATIBILITY ###
121+
122+ # Test valid: arm64 architecture with arm64 user_data
123+ run "valid_arm64_userdata_with_arm64_arch" {
124+ command = plan
125+
126+ variables {
127+ instance_type = " t4g.micro"
128+ architecture = " arm64"
129+ user_data = <<- EOT
130+ #!/bin/bash
131+ cd /tmp
132+ sudo yum install -y https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_arm64/amazon-ssm-agent.rpm
133+ sudo systemctl enable amazon-ssm-agent
134+ sudo systemctl start amazon-ssm-agent
135+ EOT
136+ }
137+
138+ assert {
139+ condition = local. is_fully_compatible
140+ error_message = " Expected arm64 user_data to be compatible with arm64 architecture"
141+ }
142+ }
143+
144+ # Test valid: x86_64 architecture with amd64 user_data
145+ run "valid_amd64_userdata_with_x86_64_arch" {
146+ command = plan
147+
148+ variables {
149+ instance_type = " t3.micro"
150+ architecture = " x86_64"
151+ user_data = <<- EOT
152+ #!/bin/bash
153+ cd /tmp
154+ sudo yum install -y https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_amd64/amazon-ssm-agent.rpm
155+ sudo systemctl enable amazon-ssm-agent
156+ sudo systemctl start amazon-ssm-agent
157+ EOT
158+ }
159+
160+ assert {
161+ condition = local. is_fully_compatible
162+ error_message = " Expected amd64 user_data to be compatible with x86_64 architecture"
163+ }
164+ }
165+
166+ # Test invalid: x86_64 architecture with arm64 user_data (mismatched)
167+ run "invalid_arm64_userdata_with_x86_64_arch" {
168+ command = plan
169+
170+ variables {
171+ instance_type = " t3.micro"
172+ architecture = " x86_64"
173+ user_data = <<- EOT
174+ #!/bin/bash
175+ cd /tmp
176+ sudo yum install -y https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_arm64/amazon-ssm-agent.rpm
177+ sudo systemctl enable amazon-ssm-agent
178+ sudo systemctl start amazon-ssm-agent
179+ EOT
180+ }
181+
182+ expect_failures = [
183+ terraform_data . validate_configuration
184+ ]
185+ }
186+
187+ # Test invalid: arm64 architecture with amd64 user_data (mismatched)
188+ run "invalid_amd64_userdata_with_arm64_arch" {
189+ command = plan
190+
191+ variables {
192+ instance_type = " t4g.micro"
193+ architecture = " arm64"
194+ user_data = <<- EOT
195+ #!/bin/bash
196+ cd /tmp
197+ sudo yum install -y https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_amd64/amazon-ssm-agent.rpm
198+ sudo systemctl enable amazon-ssm-agent
199+ sudo systemctl start amazon-ssm-agent
200+ EOT
201+ }
202+
203+ expect_failures = [
204+ terraform_data . validate_configuration
205+ ]
206+ }
207+
208+ # Test valid: architecture-neutral user_data works with arm64
209+ run "valid_neutral_userdata_with_arm64_arch" {
210+ command = plan
211+
212+ variables {
213+ instance_type = " t4g.micro"
214+ architecture = " arm64"
215+ user_data = <<- EOT
216+ #!/bin/bash
217+ echo "Hello World"
218+ sudo systemctl enable amazon-ssm-agent
219+ sudo systemctl start amazon-ssm-agent
220+ EOT
221+ }
222+
223+ assert {
224+ condition = local. is_fully_compatible
225+ error_message = " Expected architecture-neutral user_data to be compatible with arm64 architecture"
226+ }
227+ }
228+
229+ # Test valid: architecture-neutral user_data works with x86_64
230+ run "valid_neutral_userdata_with_x86_64_arch" {
231+ command = plan
232+
233+ variables {
234+ instance_type = " t3.micro"
235+ architecture = " x86_64"
236+ user_data = <<- EOT
237+ #!/bin/bash
238+ echo "Hello World"
239+ sudo systemctl enable amazon-ssm-agent
240+ sudo systemctl start amazon-ssm-agent
241+ EOT
242+ }
243+
244+ assert {
245+ condition = local. is_fully_compatible
246+ error_message = " Expected architecture-neutral user_data to be compatible with x86_64 architecture"
103247 }
104248}
0 commit comments