geoengineer 0.1.1 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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