geoengineer 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (53) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data.tar.gz.sig +0 -0
  4. data/README.md +18 -8
  5. data/lib/geoengineer/cli/geo_cli.rb +4 -1
  6. data/lib/geoengineer/environment.rb +1 -1
  7. data/lib/geoengineer/resources/aws_cloudtrail.rb +20 -0
  8. data/lib/geoengineer/resources/aws_cloudwatch_event_rule.rb +26 -0
  9. data/lib/geoengineer/resources/aws_cloudwatch_event_target.rb +50 -0
  10. data/lib/geoengineer/resources/aws_db_instance.rb +5 -1
  11. data/lib/geoengineer/resources/aws_dynamodb_table.rb +24 -0
  12. data/lib/geoengineer/resources/aws_elasticache_cluster.rb +22 -9
  13. data/lib/geoengineer/resources/aws_iam_policy.rb +1 -0
  14. data/lib/geoengineer/resources/aws_iam_role_policy.rb +63 -0
  15. data/lib/geoengineer/resources/aws_kinesis_stream.rb +40 -0
  16. data/lib/geoengineer/resources/aws_lambda_alias.rb +18 -3
  17. data/lib/geoengineer/resources/aws_lambda_function.rb +11 -0
  18. data/lib/geoengineer/resources/aws_lambda_permission.rb +9 -0
  19. data/lib/geoengineer/resources/aws_load_balancer_backend_server_policy.rb +48 -0
  20. data/lib/geoengineer/resources/aws_load_balancer_policy.rb +43 -0
  21. data/lib/geoengineer/resources/aws_network_acl_rule.rb +27 -2
  22. data/lib/geoengineer/resources/aws_redshift_cluster.rb +10 -4
  23. data/lib/geoengineer/resources/aws_route.rb +2 -0
  24. data/lib/geoengineer/resources/aws_vpn_gateway_attachment.rb +8 -0
  25. data/lib/geoengineer/sub_resource.rb +13 -3
  26. data/lib/geoengineer/utils/aws_clients.rb +18 -2
  27. data/lib/geoengineer/utils/has_projects.rb +3 -1
  28. data/lib/geoengineer/utils/has_validations.rb +7 -0
  29. data/lib/geoengineer/version.rb +1 -1
  30. data/spec/resource_spec.rb +14 -0
  31. data/spec/resources/aws_cloudtrail_spec.rb +35 -0
  32. data/spec/resources/aws_cloudwatch_event_rule_spec.rb +33 -0
  33. data/spec/resources/aws_cloudwatch_event_target_spec.rb +54 -0
  34. data/spec/resources/aws_dynamodb_table_spec.rb +24 -0
  35. data/spec/resources/aws_iam_role_spec.rb +21 -18
  36. data/spec/resources/aws_iam_rule_policy_spec.rb +49 -0
  37. data/spec/resources/{aws_iam_user.rb → aws_iam_user_spec.rb} +9 -6
  38. data/spec/resources/aws_kinesis_stream_spec.rb +52 -0
  39. data/spec/resources/aws_lambda_alias_spec.rb +22 -3
  40. data/spec/resources/aws_load_balancer_backend_server_policy_spec.rb +42 -0
  41. data/spec/resources/aws_load_balancer_policy_spec.rb +44 -0
  42. data/spec/resources/aws_network_acl_rule_spec.rb +29 -1
  43. data/spec/resources/{aws_ses_receipt_rule_set.rb → aws_ses_receipt_rule_set_spec.rb} +13 -6
  44. data/spec/resources/{aws_ses_receipt_rule.rb → aws_ses_receipt_rule_spec.rb} +6 -5
  45. data/spec/resources/{aws_sns_topic_subscription.rb → aws_sns_topic_subscription_spec.rb} +0 -0
  46. data/spec/resources/aws_subnet_spec.rb +2 -2
  47. data/spec/resources/aws_vpc_dhcp_options_association_spec.rb +2 -2
  48. data/spec/resources/aws_vpc_spec.rb +2 -2
  49. data/spec/sub_resource_spec.rb +12 -0
  50. data/spec/utils/has_subresources_spec.rb +9 -0
  51. data/spec/utils/has_validations_spec.rb +23 -3
  52. metadata +34 -10
  53. metadata.gz.sig +0 -0
@@ -1,23 +1,30 @@
1
1
  require_relative '../spec_helper'
2
2
 
3
3
  describe("GeoEngineer::Resources::AwsSesReceiptRuleSet") do
4
+ let(:ses_client) { AwsClients.ses }
5
+
4
6
  common_resource_tests(GeoEngineer::Resources::AwsSesReceiptRuleSet,
5
7
  'aws_ses_receipt_rule_set')
6
8
 
9
+ before { ses_client.setup_stubbing }
10
+
7
11
  describe "#_fetch_remote_resources" do
8
12
  it 'should create list of hashes from returned AWS SDK' do
9
- ses = AwsClients.ses
10
- # ses.list_receipt_rule_sets.rule_sets
11
- stub = ses.stub_data(
13
+ ses_client.stub_responses(
12
14
  :list_receipt_rule_sets,
13
15
  {
14
16
  rule_sets: [
15
- { name: "fake-rule-set", created_timestamp: "2016-10-19 20:19:29 UTC" },
16
- { name: "fake-rule-set-2", created_timestamp: "2016-10-19 20:19:29 UTC" }
17
+ {
18
+ name: "fake-rule-set",
19
+ created_timestamp: Time.parse("2016-10-19 20:19:29 UTC")
20
+ },
21
+ {
22
+ name: "fake-rule-set-2",
23
+ created_timestamp: Time.parse("2016-10-19 20:19:29 UTC")
24
+ }
17
25
  ]
18
26
  }
19
27
  )
20
- sns.stub_responses(:list_receipt_rule_sets, stub)
21
28
  remote_resources = GeoEngineer::Resources::AwsSesReceiptRuleSet._fetch_remote_resources
22
29
  expect(remote_resources.length).to eq 2
23
30
  end
@@ -1,14 +1,16 @@
1
1
  require_relative '../spec_helper'
2
2
 
3
3
  describe("GeoEngineer::Resources::AwsSesReceiptRule") do
4
+ let(:ses_client) { AwsClients.ses }
5
+
4
6
  common_resource_tests(GeoEngineer::Resources::AwsSesReceiptRule,
5
- 'aws_ses_policy')
7
+ 'aws_ses_receipt_rule')
8
+
9
+ before { ses_client.setup_stubbing }
6
10
 
7
11
  describe "#_fetch_remote_resources" do
8
12
  it 'should create list of hashes from returned AWS SDK' do
9
- ses = AwsClients.ses
10
- # ses.list_policies.policies
11
- stub = ses.stub_data(
13
+ ses_client.stub_responses(
12
14
  :describe_active_receipt_rule_set,
13
15
  {
14
16
  rules: [
@@ -25,7 +27,6 @@ describe("GeoEngineer::Resources::AwsSesReceiptRule") do
25
27
  ]
26
28
  }
27
29
  )
28
- sns.stub_responses(:describe_active_receipt_rule_set, stub)
29
30
  remote_resources = GeoEngineer::Resources::AwsSesReceiptRule._fetch_remote_resources
30
31
  expect(remote_resources.length).to eq 2
31
32
  end
@@ -11,8 +11,8 @@ describe("GeoEngineer::Resources::AwsSubnet") do
11
11
  :describe_subnets,
12
12
  {
13
13
  subnets: [
14
- { subnet_id: '1', cidr_block: "10.120.0.0/24", tags: [{ key: 'Name', value: 'one' }] },
15
- { subnet_id: '2', cidr_block: "10.120.1.0/24", tags: [{ key: 'Name', value: 'two' }] }
14
+ { subnet_id: '1', cidr_block: "10.10.0.0/24", tags: [{ key: 'Name', value: 'one' }] },
15
+ { subnet_id: '2', cidr_block: "10.10.1.0/24", tags: [{ key: 'Name', value: 'two' }] }
16
16
  ]
17
17
  }
18
18
  )
@@ -15,13 +15,13 @@ describe("GeoEngineer::Resources::AwsVpcDhcpOptionsAssociation") do
15
15
  vpcs: [
16
16
  {
17
17
  vpc_id: 'name1',
18
- cidr_block: "10.120.0.0/24",
18
+ cidr_block: "10.10.0.0/24",
19
19
  tags: [{ key: 'Name', value: 'one' }],
20
20
  dhcp_options_id: '1'
21
21
  },
22
22
  {
23
23
  vpc_id: 'name2',
24
- cidr_block: "10.120.1.0/24",
24
+ cidr_block: "10.10.1.0/24",
25
25
  tags: [{ key: 'Name', value: 'two' }],
26
26
  dhcp_options_id: '2'
27
27
  }
@@ -11,8 +11,8 @@ describe("GeoEngineer::Resources::AwsVpc") do
11
11
  :describe_vpcs,
12
12
  {
13
13
  vpcs: [
14
- { vpc_id: 'name1', cidr_block: "10.120.0.0/24", tags: [{ key: 'Name', value: 'one' }] },
15
- { vpc_id: 'name2', cidr_block: "10.120.1.0/24", tags: [{ key: 'Name', value: 'two' }] }
14
+ { vpc_id: 'name1', cidr_block: "10.10.0.0/24", tags: [{ key: 'Name', value: 'one' }] },
15
+ { vpc_id: 'name2', cidr_block: "10.10.1.0/24", tags: [{ key: 'Name', value: 'two' }] }
16
16
  ]
17
17
  }
18
18
  )
@@ -12,9 +12,21 @@ describe("GeoEngineer::SubResource") do
12
12
  it 'should return a list, with key[0] value[1]' do
13
13
  sr = GeoEngineer::SubResource.new(nil, 'tags') {
14
14
  x 10
15
+
16
+ # i.e. can have sub resources as well
17
+ foo {
18
+ bar 20
19
+ }
20
+
21
+ foo {
22
+ bar 40
23
+ }
15
24
  }
25
+
16
26
  expect(sr.to_terraform_json[0]).to eq 'tags'
17
27
  expect(sr.to_terraform_json[1]['x']).to eq 10
28
+ expect(sr.to_terraform_json[1]['foo'][0]['bar']).to eq 20
29
+ expect(sr.to_terraform_json[1]['foo'][1]['bar']).to eq 40
18
30
  end
19
31
  end
20
32
  end
@@ -10,11 +10,20 @@ describe("HasSubResources") do
10
10
  x = WithSubResources.new()
11
11
  x.one_sr {
12
12
  value 10
13
+ sr {
14
+ multi true
15
+ }
13
16
  }
14
17
 
18
+ # checks for assigned value
15
19
  expect(x.one_sr.value).to eq 10
20
+
21
+ # checks for non assigned value
16
22
  expect(x.no_one_value).to eq nil
17
23
 
24
+ # checks that there are multi level sub resources
25
+ expect(x.one_sr.sr.multi).to eq true
26
+
18
27
  x.multi_sr {
19
28
  value 20
20
29
  }
@@ -56,7 +56,7 @@ describe("HasValidations") do
56
56
 
57
57
  describe "#validate_at_least_one_present" do
58
58
  it "checks that at least of the specified attributes is defined" do
59
- class Subject < GeoEngineer::Resource
59
+ class Subject2 < GeoEngineer::Resource
60
60
  include HasValidations
61
61
  validate -> {
62
62
  validate_only_one_present([:foo, :bar, :baz])
@@ -67,14 +67,34 @@ describe("HasValidations") do
67
67
  end
68
68
  end
69
69
 
70
- valid = Subject.new('subject', 'id') { foo("quack") }
70
+ valid = Subject2.new('subject', 'id') { foo("quack") }
71
71
  expect(valid.errors).to be_empty
72
72
 
73
- invalid = Subject.new('subject', 'id') {
73
+ invalid = Subject2.new('subject', 'id') {
74
74
  foo("quack")
75
75
  bar("meow")
76
76
  }
77
77
  expect(invalid.errors).to_not be_empty
78
78
  end
79
79
  end
80
+
81
+ describe "#validate_policy_length" do
82
+ it "enforces AWS policy size limits" do
83
+ class Subject3 < GeoEngineer::Resource
84
+ include HasValidations
85
+ validate -> {
86
+ validate_policy_length(self.policy)
87
+ }
88
+
89
+ def _terraform_id
90
+ 'id'
91
+ end
92
+ end
93
+ invalid = Subject3.new('subject', 'id') { policy("abcdefgh" * 64 * 11) }
94
+ expect(invalid.errors).to_not be_empty
95
+
96
+ valid = Subject3.new('subject', 'id') { policy("abcdefgh" * 64 * 9) }
97
+ expect(valid.errors).to be_empty
98
+ end
99
+ end
80
100
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: geoengineer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - coinbase
@@ -30,7 +30,7 @@ cert_chain:
30
30
  6WK7/7ziN7oP5gOag1gEqjCieZEtmPdj2uvE5+X0/bQOpstnZfPbeaMxswFdxMB4
31
31
  gvJWIT9xvxqnL8bM/44RAGrzrkx7OQi5HEoMCpfXJevlu1PF17Y3ylbNGBL4Og==
32
32
  -----END CERTIFICATE-----
33
- date: 2016-12-29 00:00:00.000000000 Z
33
+ date: 2017-01-25 00:00:00.000000000 Z
34
34
  dependencies:
35
35
  - !ruby/object:Gem::Dependency
36
36
  name: rspec
@@ -193,9 +193,13 @@ files:
193
193
  - lib/geoengineer/output.rb
194
194
  - lib/geoengineer/project.rb
195
195
  - lib/geoengineer/resource.rb
196
+ - lib/geoengineer/resources/aws_cloudtrail.rb
197
+ - lib/geoengineer/resources/aws_cloudwatch_event_rule.rb
198
+ - lib/geoengineer/resources/aws_cloudwatch_event_target.rb
196
199
  - lib/geoengineer/resources/aws_customer_gateway.rb
197
200
  - lib/geoengineer/resources/aws_db_instance.rb
198
201
  - lib/geoengineer/resources/aws_db_parameter_group.rb
202
+ - lib/geoengineer/resources/aws_dynamodb_table.rb
199
203
  - lib/geoengineer/resources/aws_eip.rb
200
204
  - lib/geoengineer/resources/aws_elasticache_cluster.rb
201
205
  - lib/geoengineer/resources/aws_elasticache_parameter_group.rb
@@ -208,13 +212,17 @@ files:
208
212
  - lib/geoengineer/resources/aws_iam_policy.rb
209
213
  - lib/geoengineer/resources/aws_iam_policy_attachment.rb
210
214
  - lib/geoengineer/resources/aws_iam_role.rb
215
+ - lib/geoengineer/resources/aws_iam_role_policy.rb
211
216
  - lib/geoengineer/resources/aws_iam_user.rb
212
217
  - lib/geoengineer/resources/aws_instance.rb
213
218
  - lib/geoengineer/resources/aws_internet_gateway.rb
219
+ - lib/geoengineer/resources/aws_kinesis_stream.rb
214
220
  - lib/geoengineer/resources/aws_lambda_alias.rb
215
221
  - lib/geoengineer/resources/aws_lambda_event_source_mapping.rb
216
222
  - lib/geoengineer/resources/aws_lambda_function.rb
217
223
  - lib/geoengineer/resources/aws_lambda_permission.rb
224
+ - lib/geoengineer/resources/aws_load_balancer_backend_server_policy.rb
225
+ - lib/geoengineer/resources/aws_load_balancer_policy.rb
218
226
  - lib/geoengineer/resources/aws_main_route_table_association.rb
219
227
  - lib/geoengineer/resources/aws_nat_gateway.rb
220
228
  - lib/geoengineer/resources/aws_network_acl.rb
@@ -261,9 +269,13 @@ files:
261
269
  - spec/output_spec.rb
262
270
  - spec/project_spec.rb
263
271
  - spec/resource_spec.rb
272
+ - spec/resources/aws_cloudtrail_spec.rb
273
+ - spec/resources/aws_cloudwatch_event_rule_spec.rb
274
+ - spec/resources/aws_cloudwatch_event_target_spec.rb
264
275
  - spec/resources/aws_customer_gateway_spec.rb
265
276
  - spec/resources/aws_db_instance_spec.rb
266
277
  - spec/resources/aws_db_parameter_group_spec.rb
278
+ - spec/resources/aws_dynamodb_table_spec.rb
267
279
  - spec/resources/aws_eip_spec.rb
268
280
  - spec/resources/aws_elasticache_replication_group_spec.rb
269
281
  - spec/resources/aws_elasticache_subnet_group_spec.rb
@@ -276,13 +288,17 @@ files:
276
288
  - spec/resources/aws_iam_policy_attachment_spec.rb
277
289
  - spec/resources/aws_iam_policy_spec.rb
278
290
  - spec/resources/aws_iam_role_spec.rb
279
- - spec/resources/aws_iam_user.rb
291
+ - spec/resources/aws_iam_rule_policy_spec.rb
292
+ - spec/resources/aws_iam_user_spec.rb
280
293
  - spec/resources/aws_instance_spec.rb
281
294
  - spec/resources/aws_internet_gateway_spec.rb
295
+ - spec/resources/aws_kinesis_stream_spec.rb
282
296
  - spec/resources/aws_lambda_alias_spec.rb
283
297
  - spec/resources/aws_lambda_event_source_mapping_spec.rb
284
298
  - spec/resources/aws_lambda_function_spec.rb
285
299
  - spec/resources/aws_lambda_permission_spec.rb
300
+ - spec/resources/aws_load_balancer_backend_server_policy_spec.rb
301
+ - spec/resources/aws_load_balancer_policy_spec.rb
286
302
  - spec/resources/aws_main_route_table_association_spec.rb
287
303
  - spec/resources/aws_nat_gateway_spec.rb
288
304
  - spec/resources/aws_network_acl_rule_spec.rb
@@ -296,10 +312,10 @@ files:
296
312
  - spec/resources/aws_route_table_spec.rb
297
313
  - spec/resources/aws_s3_bucket_spec.rb
298
314
  - spec/resources/aws_security_group_spec.rb
299
- - spec/resources/aws_ses_receipt_rule.rb
300
- - spec/resources/aws_ses_receipt_rule_set.rb
315
+ - spec/resources/aws_ses_receipt_rule_set_spec.rb
316
+ - spec/resources/aws_ses_receipt_rule_spec.rb
301
317
  - spec/resources/aws_sns_topic_spec.rb
302
- - spec/resources/aws_sns_topic_subscription.rb
318
+ - spec/resources/aws_sns_topic_subscription_spec.rb
303
319
  - spec/resources/aws_sqs_queue_spec.rb
304
320
  - spec/resources/aws_subnet_spec.rb
305
321
  - spec/resources/aws_vpc_dhcp_options_association_spec.rb
@@ -351,9 +367,13 @@ test_files:
351
367
  - spec/output_spec.rb
352
368
  - spec/project_spec.rb
353
369
  - spec/resource_spec.rb
370
+ - spec/resources/aws_cloudtrail_spec.rb
371
+ - spec/resources/aws_cloudwatch_event_rule_spec.rb
372
+ - spec/resources/aws_cloudwatch_event_target_spec.rb
354
373
  - spec/resources/aws_customer_gateway_spec.rb
355
374
  - spec/resources/aws_db_instance_spec.rb
356
375
  - spec/resources/aws_db_parameter_group_spec.rb
376
+ - spec/resources/aws_dynamodb_table_spec.rb
357
377
  - spec/resources/aws_eip_spec.rb
358
378
  - spec/resources/aws_elasticache_replication_group_spec.rb
359
379
  - spec/resources/aws_elasticache_subnet_group_spec.rb
@@ -366,13 +386,17 @@ test_files:
366
386
  - spec/resources/aws_iam_policy_attachment_spec.rb
367
387
  - spec/resources/aws_iam_policy_spec.rb
368
388
  - spec/resources/aws_iam_role_spec.rb
369
- - spec/resources/aws_iam_user.rb
389
+ - spec/resources/aws_iam_rule_policy_spec.rb
390
+ - spec/resources/aws_iam_user_spec.rb
370
391
  - spec/resources/aws_instance_spec.rb
371
392
  - spec/resources/aws_internet_gateway_spec.rb
393
+ - spec/resources/aws_kinesis_stream_spec.rb
372
394
  - spec/resources/aws_lambda_alias_spec.rb
373
395
  - spec/resources/aws_lambda_event_source_mapping_spec.rb
374
396
  - spec/resources/aws_lambda_function_spec.rb
375
397
  - spec/resources/aws_lambda_permission_spec.rb
398
+ - spec/resources/aws_load_balancer_backend_server_policy_spec.rb
399
+ - spec/resources/aws_load_balancer_policy_spec.rb
376
400
  - spec/resources/aws_main_route_table_association_spec.rb
377
401
  - spec/resources/aws_nat_gateway_spec.rb
378
402
  - spec/resources/aws_network_acl_rule_spec.rb
@@ -386,10 +410,10 @@ test_files:
386
410
  - spec/resources/aws_route_table_spec.rb
387
411
  - spec/resources/aws_s3_bucket_spec.rb
388
412
  - spec/resources/aws_security_group_spec.rb
389
- - spec/resources/aws_ses_receipt_rule.rb
390
- - spec/resources/aws_ses_receipt_rule_set.rb
413
+ - spec/resources/aws_ses_receipt_rule_set_spec.rb
414
+ - spec/resources/aws_ses_receipt_rule_spec.rb
391
415
  - spec/resources/aws_sns_topic_spec.rb
392
- - spec/resources/aws_sns_topic_subscription.rb
416
+ - spec/resources/aws_sns_topic_subscription_spec.rb
393
417
  - spec/resources/aws_sqs_queue_spec.rb
394
418
  - spec/resources/aws_subnet_spec.rb
395
419
  - spec/resources/aws_vpc_dhcp_options_association_spec.rb
metadata.gz.sig CHANGED
Binary file