Skip to content

Commit d4a163f

Browse files
authored
Merge pull request #287 from Kudbettin/fix_issue-284-temp
Made error messages more clear on #284
2 parents a08f8d3 + 1db908e commit d4a163f

File tree

5 files changed

+84
-2
lines changed

5 files changed

+84
-2
lines changed

terraform_compliance/steps/when/its_key_is_value.py

+8-2
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,10 @@ def to_lower_key(d):
6969
_step_obj.context.stash = found_list
7070
_step_obj.context.addresses = get_resource_address_list_from_stash(found_list)
7171
else:
72-
if dict_value is None:
72+
if object_key is Null:
73+
skip_step(_step_obj, message='Could not find {} in {}.'.format(key,
74+
', '.join(_step_obj.context.addresses)))
75+
elif dict_value is None:
7376
skip_step(_step_obj, message='Can not find {} {} in {}.'.format(value, orig_key,
7477
', '.join(_step_obj.context.addresses)))
7578
else:
@@ -126,7 +129,10 @@ def its_key_is_not_value(_step_obj, key, value, dict_value=None, address=Null):
126129
_step_obj.context.stash = found_list
127130
_step_obj.context.addresses = get_resource_address_list_from_stash(found_list)
128131
else:
129-
if dict_value is None:
132+
if object_key is Null:
133+
skip_step(_step_obj, message='Could not find {} in {}.'.format(key,
134+
', '.join(_step_obj.context.addresses)))
135+
elif dict_value is None:
130136
skip_step(_step_obj, message='Found {} {} in {}.'.format(value, orig_key,
131137
', '.join(_step_obj.context.addresses)))
132138
else:
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
SKIPPING: Could not find permissions in aws_s3_bucket.bucket.
+59
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
resource "aws_s3_bucket" "bucket" {
2+
bucket = "mybucket"
3+
4+
grant {
5+
id = "current_user_id"
6+
type = "CanonicalUser"
7+
permissions = ["FULL_CONTROL"]
8+
}
9+
10+
grant {
11+
type = "Group"
12+
permissions = ["READ", "WRITE"]
13+
uri = "http://acs.amazonaws.com/groups/s3/LogDelivery"
14+
}
15+
}
16+
17+
# Create a new load balancer
18+
resource "aws_elb" "bar" {
19+
name = "foobar-terraform-elb"
20+
availability_zones = ["us-west-2a", "us-west-2b", "us-west-2c"]
21+
22+
access_logs {
23+
bucket = "foo"
24+
bucket_prefix = "bar"
25+
interval = 60
26+
}
27+
28+
listener {
29+
instance_port = 8000
30+
instance_protocol = "http"
31+
lb_port = 80
32+
lb_protocol = "http"
33+
}
34+
35+
listener {
36+
instance_port = 8000
37+
instance_protocol = "http"
38+
lb_port = 443
39+
lb_protocol = "https"
40+
ssl_certificate_id = "arn:aws:iam::123456789012:server-certificate/certName"
41+
}
42+
43+
health_check {
44+
healthy_threshold = 2
45+
unhealthy_threshold = 2
46+
timeout = 3
47+
target = "HTTP:8000/"
48+
interval = 30
49+
}
50+
51+
cross_zone_load_balancing = true
52+
idle_timeout = 400
53+
connection_draining = true
54+
connection_draining_timeout = 400
55+
56+
tags = {
57+
Name = "foobar-terraform-elb"
58+
}
59+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"format_version":"0.1","terraform_version":"0.12.25","planned_values":{"root_module":{"resources":[{"address":"aws_elb.bar","mode":"managed","type":"aws_elb","name":"bar","provider_name":"aws","schema_version":0,"values":{"access_logs":[{"bucket":"foo","bucket_prefix":"bar","enabled":true,"interval":60}],"availability_zones":["us-west-2a","us-west-2b","us-west-2c"],"connection_draining":true,"connection_draining_timeout":400,"cross_zone_load_balancing":true,"health_check":[{"healthy_threshold":2,"interval":30,"target":"HTTP:8000/","timeout":3,"unhealthy_threshold":2}],"idle_timeout":400,"listener":[{"instance_port":8000,"instance_protocol":"http","lb_port":443,"lb_protocol":"https","ssl_certificate_id":"arn:aws:iam::123456789012:server-certificate/certName"},{"instance_port":8000,"instance_protocol":"http","lb_port":80,"lb_protocol":"http","ssl_certificate_id":""}],"name":"foobar-terraform-elb","name_prefix":null,"tags":{"Name":"foobar-terraform-elb"}}},{"address":"aws_s3_bucket.bucket","mode":"managed","type":"aws_s3_bucket","name":"bucket","provider_name":"aws","schema_version":0,"values":{"acl":"private","bucket":"mybucket","bucket_prefix":null,"cors_rule":[],"force_destroy":false,"grant":[{"id":"","permissions":["READ","WRITE"],"type":"Group","uri":"http://acs.amazonaws.com/groups/s3/LogDelivery"},{"id":"current_user_id","permissions":["FULL_CONTROL"],"type":"CanonicalUser","uri":""}],"lifecycle_rule":[],"logging":[],"object_lock_configuration":[],"policy":null,"replication_configuration":[],"server_side_encryption_configuration":[],"tags":null,"website":[]}}]}},"resource_changes":[{"address":"aws_elb.bar","mode":"managed","type":"aws_elb","name":"bar","provider_name":"aws","change":{"actions":["create"],"before":null,"after":{"access_logs":[{"bucket":"foo","bucket_prefix":"bar","enabled":true,"interval":60}],"availability_zones":["us-west-2a","us-west-2b","us-west-2c"],"connection_draining":true,"connection_draining_timeout":400,"cross_zone_load_balancing":true,"health_check":[{"healthy_threshold":2,"interval":30,"target":"HTTP:8000/","timeout":3,"unhealthy_threshold":2}],"idle_timeout":400,"listener":[{"instance_port":8000,"instance_protocol":"http","lb_port":443,"lb_protocol":"https","ssl_certificate_id":"arn:aws:iam::123456789012:server-certificate/certName"},{"instance_port":8000,"instance_protocol":"http","lb_port":80,"lb_protocol":"http","ssl_certificate_id":""}],"name":"foobar-terraform-elb","name_prefix":null,"tags":{"Name":"foobar-terraform-elb"}},"after_unknown":{"access_logs":[{}],"arn":true,"availability_zones":[false,false,false],"dns_name":true,"health_check":[{}],"id":true,"instances":true,"internal":true,"listener":[{},{}],"security_groups":true,"source_security_group":true,"source_security_group_id":true,"subnets":true,"tags":{},"zone_id":true}}},{"address":"aws_s3_bucket.bucket","mode":"managed","type":"aws_s3_bucket","name":"bucket","provider_name":"aws","change":{"actions":["create"],"before":null,"after":{"acl":"private","bucket":"mybucket","bucket_prefix":null,"cors_rule":[],"force_destroy":false,"grant":[{"id":"","permissions":["READ","WRITE"],"type":"Group","uri":"http://acs.amazonaws.com/groups/s3/LogDelivery"},{"id":"current_user_id","permissions":["FULL_CONTROL"],"type":"CanonicalUser","uri":""}],"lifecycle_rule":[],"logging":[],"object_lock_configuration":[],"policy":null,"replication_configuration":[],"server_side_encryption_configuration":[],"tags":null,"website":[]},"after_unknown":{"acceleration_status":true,"arn":true,"bucket_domain_name":true,"bucket_regional_domain_name":true,"cors_rule":[],"grant":[{"permissions":[false,false]},{"permissions":[false]}],"hosted_zone_id":true,"id":true,"lifecycle_rule":[],"logging":[],"object_lock_configuration":[],"region":true,"replication_configuration":[],"request_payer":true,"server_side_encryption_configuration":[],"versioning":true,"website":[],"website_domain":true,"website_endpoint":true}}}],"configuration":{"root_module":{"resources":[{"address":"aws_elb.bar","mode":"managed","type":"aws_elb","name":"bar","provider_config_key":"aws","expressions":{"access_logs":[{"bucket":{"constant_value":"foo"},"bucket_prefix":{"constant_value":"bar"},"interval":{"constant_value":60}}],"availability_zones":{"constant_value":["us-west-2a","us-west-2b","us-west-2c"]},"connection_draining":{"constant_value":true},"connection_draining_timeout":{"constant_value":400},"cross_zone_load_balancing":{"constant_value":true},"health_check":[{"healthy_threshold":{"constant_value":2},"interval":{"constant_value":30},"target":{"constant_value":"HTTP:8000/"},"timeout":{"constant_value":3},"unhealthy_threshold":{"constant_value":2}}],"idle_timeout":{"constant_value":400},"listener":[{"instance_port":{"constant_value":8000},"instance_protocol":{"constant_value":"http"},"lb_port":{"constant_value":80},"lb_protocol":{"constant_value":"http"}},{"instance_port":{"constant_value":8000},"instance_protocol":{"constant_value":"http"},"lb_port":{"constant_value":443},"lb_protocol":{"constant_value":"https"},"ssl_certificate_id":{"constant_value":"arn:aws:iam::123456789012:server-certificate/certName"}}],"name":{"constant_value":"foobar-terraform-elb"},"tags":{"constant_value":{"Name":"foobar-terraform-elb"}}},"schema_version":0},{"address":"aws_s3_bucket.bucket","mode":"managed","type":"aws_s3_bucket","name":"bucket","provider_config_key":"aws","expressions":{"bucket":{"constant_value":"mybucket"},"grant":[{"id":{"constant_value":"current_user_id"},"permissions":{"constant_value":["FULL_CONTROL"]},"type":{"constant_value":"CanonicalUser"}},{"permissions":{"constant_value":["READ","WRITE"]},"type":{"constant_value":"Group"},"uri":{"constant_value":"http://acs.amazonaws.com/groups/s3/LogDelivery"}}]},"schema_version":0}]}}}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
Feature: Feature for issue 284
2+
In order to something
3+
As engineers
4+
We'll enforce something else
5+
6+
Scenario Outline: Ensure S3 Bucket's ACL grant does not include write permissions, test2
7+
Given I have aws_s3_bucket defined
8+
When it has grant
9+
And its permissions does not include <value>
10+
Examples:
11+
| value |
12+
| WRITE_ACP |
13+
| WRITE_bidi |
14+
| FULL_CONTROL_d |
15+
| Something_bad |

0 commit comments

Comments
 (0)