awspec 0.71.0 → 0.72.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: dc669dded96eca85392499ed934f5e74a3792255
4
- data.tar.gz: 200f595fd7e078ee438168ad458abef078b9e5bc
3
+ metadata.gz: 5371ca2443a738e61ee579d50fdf545bffc2945e
4
+ data.tar.gz: ae9a493ee4de0d9e3018aaa9f27418dfaa373b4b
5
5
  SHA512:
6
- metadata.gz: 5d4485290d46b5255eccbde9b3155a072f9242466b2ccd574d6760b5d942ee7200dcb6b49ae363be92f5f4a76b9f2da2a3233f63896f16189f3bb4f09dd75f47
7
- data.tar.gz: 6452260c37fe0de431d89d1bfa788fab472d30b87ee5ae25815affd4ba41c57e9f37672bc75262dd48491df15db2aec706a738f1835086401fd654fbf6b9ee6d
6
+ metadata.gz: 468a0bd1edeb9fb36c3c4692e8466843a787cb600482738da645574a5bdd7a2748d16b00309062e78b9ab9aefa1392dcc5efef7fae2b68a5321e02196a9fc9e3
7
+ data.tar.gz: cf7146d314306504268dd344e1f4d5094a06183e1eae552b464b05770531699b59cb9d77fd553afd8612c09637f26d87f6ee90394ad459e231a5648b00886c43
@@ -0,0 +1,52 @@
1
+ ### exist
2
+
3
+ ```ruby
4
+ describe dynamodb_table('my-dynamodb-table') do
5
+ it { should exist }
6
+ end
7
+ ```
8
+
9
+ ### be_active
10
+
11
+ ```ruby
12
+ describe dynamodb_table('my-dynamodb-table') do
13
+ it { should be_active }
14
+ end
15
+ ```
16
+
17
+ ### have_attribute_definition
18
+
19
+ ```ruby
20
+ describe dynamodb_table('my-dynamodb-table') do
21
+ it { should have_attribute_definition('my-dynamodb-table-attaribute1').attribute_type('S') }
22
+ it { should have_attribute_definition('my-dynamodb-table-attaribute2').attribute_type('N') }
23
+ end
24
+ ```
25
+
26
+ ### have_key_schema
27
+
28
+ ```ruby
29
+ describe dynamodb_table('my-dynamodb-table') do
30
+ it { should have_key_schema('my-dynamodb-table-key_schema1').key_type('HASH') }
31
+ it { should have_key_schema('my-dynamodb-table-key_schema2').key_type('RANGE') }
32
+ end
33
+ ```
34
+
35
+ ### advanced
36
+
37
+ `dynamodb_table` can use `Aws::DynamoDB::Table` resource (see http://docs.aws.amazon.com/sdkforruby/api/Aws/DynamoDB/Table.html).
38
+
39
+ ```ruby
40
+ describe dynamodb_table('my-dynamodb-table') do
41
+ its('key_schema.first.key_type') { should eq 'HASH' }
42
+ end
43
+ ```
44
+
45
+ or
46
+
47
+ ```ruby
48
+ describe dynamodb_table('my-dynamodb-table') do
49
+ its('resource.key_schema.first.key_type') { should eq 'HASH' }
50
+ end
51
+ ```
52
+
@@ -11,6 +11,7 @@
11
11
  | [cloudwatch_logs](#cloudwatch_logs)
12
12
  | [customer_gateway](#customer_gateway)
13
13
  | [directconnect_virtual_interface](#directconnect_virtual_interface)
14
+ | [dynamodb_table](#dynamodb_table)
14
15
  | [ebs](#ebs)
15
16
  | [ec2](#ec2)
16
17
  | [ecr_repository](#ecr_repository)
@@ -2294,6 +2295,61 @@ end
2294
2295
  ```
2295
2296
 
2296
2297
  ### its(:log_group_name), its(:creation_time), its(:retention_in_days), its(:metric_filter_count), its(:arn), its(:stored_bytes)
2298
+ ## <a name="dynamodb_table">dynamodb_table</a>
2299
+
2300
+ DynamodbTable resource type.
2301
+
2302
+ ### exist
2303
+
2304
+ ```ruby
2305
+ describe dynamodb_table('my-dynamodb-table') do
2306
+ it { should exist }
2307
+ end
2308
+ ```
2309
+
2310
+
2311
+ ### be_creating, be_updating, be_deleting, be_active
2312
+
2313
+ ### have_attribute_definition
2314
+
2315
+ ```ruby
2316
+ describe dynamodb_table('my-dynamodb-table') do
2317
+ it { should have_attribute_definition('my-dynamodb-table-attaribute1').attribute_type('S') }
2318
+ it { should have_attribute_definition('my-dynamodb-table-attaribute2').attribute_type('N') }
2319
+ end
2320
+ ```
2321
+
2322
+
2323
+ ### have_key_schema
2324
+
2325
+ ```ruby
2326
+ describe dynamodb_table('my-dynamodb-table') do
2327
+ it { should have_key_schema('my-dynamodb-table-key_schema1').key_type('HASH') }
2328
+ it { should have_key_schema('my-dynamodb-table-key_schema2').key_type('RANGE') }
2329
+ end
2330
+ ```
2331
+
2332
+
2333
+ ### its(:table_name), its(:table_status), its(:creation_date_time), its(:table_size_bytes), its(:item_count), its(:table_arn), its(:local_secondary_indexes), its(:global_secondary_indexes), its(:stream_specification), its(:latest_stream_label), its(:latest_stream_arn)
2334
+ ### :unlock: Advanced use
2335
+
2336
+ `dynamodb_table` can use `Aws::DynamoDB::Table` resource (see http://docs.aws.amazon.com/sdkforruby/api/Aws/DynamoDB/Table.html).
2337
+
2338
+ ```ruby
2339
+ describe dynamodb_table('my-dynamodb-table') do
2340
+ its('key_schema.first.key_type') { should eq 'HASH' }
2341
+ end
2342
+ ```
2343
+
2344
+ or
2345
+
2346
+ ```ruby
2347
+ describe dynamodb_table('my-dynamodb-table') do
2348
+ its('resource.key_schema.first.key_type') { should eq 'HASH' }
2349
+ end
2350
+ ```
2351
+
2352
+
2297
2353
  # Account and Attributes
2298
2354
 
2299
2355
  ## <a name="account">account</a>
@@ -38,6 +38,7 @@ module Awspec
38
38
  types_for_generate_all = %w(
39
39
  cloudwatch_alarm cloudwatch_event directconnect ebs efs
40
40
  elasticsearch iam_group iam_policy iam_role iam_user kms lambda
41
+ acm
41
42
  )
42
43
 
43
44
  types_for_generate_all.each do |type|
@@ -22,6 +22,7 @@ require 'awspec/generator/spec/network_interface'
22
22
  require 'awspec/generator/spec/iam_user'
23
23
  require 'awspec/generator/spec/iam_group'
24
24
  require 'awspec/generator/spec/iam_role'
25
+ require 'awspec/generator/spec/acm'
25
26
 
26
27
  # Doc
27
28
  require 'awspec/generator/doc/type'
@@ -0,0 +1,19 @@
1
+ module Awspec::Generator
2
+ module Doc
3
+ module Type
4
+ class DynamodbTable < Base
5
+ def initialize
6
+ super
7
+ @type_name = 'DynamodbTable'
8
+ @type = Awspec::Type::DynamodbTable.new('my-dynamodb-table')
9
+ @ret = @type.resource_via_client
10
+ @matchers = [
11
+ Awspec::Type::DynamodbTable::STATUSES.map { |status| 'be_' + status.downcase }.join(', ')
12
+ ]
13
+ @ignore_matchers = Awspec::Type::DynamodbTable::STATUSES.map { |status| 'be_' + status.downcase }
14
+ @describes = []
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,27 @@
1
+ module Awspec::Generator
2
+ module Spec
3
+ class Acm
4
+ include Awspec::Helper::Finder
5
+ def generate_all
6
+ certificates = select_all_certificates
7
+ raise 'Not Found Certificates' if certificates.empty?
8
+ ERB.new(acm_spec_template, nil, '-').result(binding).chomp
9
+ end
10
+
11
+ def acm_spec_template
12
+ template = <<-'EOF'
13
+ <% certificates.each do |certificate| %>
14
+ describe acm('<%= certificate.domain_name %>') do
15
+ it { should exist }
16
+ <%- if certificate.status == 'ISSUED' -%>
17
+ it { should be_issued }
18
+ <% end -%>
19
+ its(:type) { should eq '<%= certificate.type %>' }
20
+ end
21
+ <% end %>
22
+ EOF
23
+ template
24
+ end
25
+ end
26
+ end
27
+ end
@@ -29,6 +29,7 @@ require 'awspec/helper/finder/cloudtrail'
29
29
  require 'awspec/helper/finder/waf'
30
30
  require 'awspec/helper/finder/acm'
31
31
  require 'awspec/helper/finder/cloudwatch_logs'
32
+ require 'awspec/helper/finder/dynamodb'
32
33
 
33
34
  require 'awspec/helper/finder/account_attributes'
34
35
 
@@ -65,6 +66,7 @@ module Awspec::Helper
65
66
  include Awspec::Helper::Finder::Acm
66
67
  include Awspec::Helper::Finder::AccountAttributes
67
68
  include Awspec::Helper::Finder::CloudwatchLogs
69
+ include Awspec::Helper::Finder::Dynamodb
68
70
 
69
71
  CLIENTS = {
70
72
  ec2_client: Aws::EC2::Client,
@@ -92,7 +94,8 @@ module Awspec::Helper
92
94
  waf_client: Aws::WAF::Client,
93
95
  sts_client: Aws::STS::Client,
94
96
  acm_client: Aws::ACM::Client,
95
- cloudwatch_logs_client: Aws::CloudWatchLogs::Client
97
+ cloudwatch_logs_client: Aws::CloudWatchLogs::Client,
98
+ dynamodb_client: Aws::DynamoDB::Client
96
99
  }
97
100
 
98
101
  CLIENTS.each do |method_name, client|
@@ -5,6 +5,14 @@ module Awspec::Helper
5
5
  cert = acm_client.list_certificates.certificate_summary_list.find { |c| c[:domain_name] == domain }
6
6
  acm_client.describe_certificate({ certificate_arn: cert.certificate_arn }).certificate
7
7
  end
8
+
9
+ def select_all_certificates
10
+ certificates = []
11
+ acm_client.list_certificates.certificate_summary_list.each do |cert|
12
+ certificates << acm_client.describe_certificate({ certificate_arn: cert.certificate_arn }).certificate
13
+ end
14
+ certificates
15
+ end
8
16
  end
9
17
  end
10
18
  end
@@ -0,0 +1,10 @@
1
+ module Awspec::Helper
2
+ module Finder
3
+ module Dynamodb
4
+ def find_dynamodb_table(id)
5
+ resource = dynamodb_client.describe_table({ table_name: id }).table
6
+ return resource if resource.table_name == id
7
+ end
8
+ end
9
+ end
10
+ end
@@ -15,7 +15,7 @@ module Awspec
15
15
  network_acl network_interface rds rds_db_cluster_parameter_group rds_db_parameter_group route53_hosted_zone
16
16
  route_table s3_bucket security_group ses_identity subnet vpc cloudfront_distribution
17
17
  elastictranscoder_pipeline waf_web_acl customer_gateway vpn_gateway vpn_connection internet_gateway acm
18
- cloudwatch_logs
18
+ cloudwatch_logs dynamodb_table
19
19
  )
20
20
 
21
21
  ACCOUNT_ATTRIBUTES = %w(
@@ -50,3 +50,7 @@ require 'awspec/matcher/have_rule'
50
50
 
51
51
  # CloudWatch Logs
52
52
  require 'awspec/matcher/have_subscription_filter'
53
+
54
+ # DynamoDB
55
+ require 'awspec/matcher/have_attribute_definition'
56
+ require 'awspec/matcher/have_key_schema'
@@ -0,0 +1,9 @@
1
+ RSpec::Matchers.define :have_attribute_definition do |attribute_name|
2
+ match do |attribute|
3
+ attribute.has_attribute_definition?(attribute_name, @attribute_type)
4
+ end
5
+
6
+ chain :attribute_type do |type|
7
+ @attribute_type = type
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ RSpec::Matchers.define :have_key_schema do |attribute_name|
2
+ match do |attribute|
3
+ attribute.has_key_schema?(attribute_name, @key_type)
4
+ end
5
+
6
+ chain :key_type do |type|
7
+ @key_type = type
8
+ end
9
+ end
@@ -0,0 +1,34 @@
1
+ Aws.config[:dynamodb] = {
2
+ stub_responses: {
3
+ describe_table: {
4
+ table: {
5
+ table_name: 'my-dynamodb-table',
6
+ table_status: 'ACTIVE',
7
+ provisioned_throughput: {
8
+ read_capacity_units: 1,
9
+ write_capacity_units: 1
10
+ },
11
+ attribute_definitions: [
12
+ {
13
+ attribute_name: 'my-dynamodb-table-attaribute1',
14
+ attribute_type: 'S'
15
+ },
16
+ {
17
+ attribute_name: 'my-dynamodb-table-attaribute2',
18
+ attribute_type: 'N'
19
+ }
20
+ ],
21
+ key_schema: [
22
+ {
23
+ attribute_name: 'my-dynamodb-table-key_schema1',
24
+ key_type: 'HASH'
25
+ },
26
+ {
27
+ attribute_name: 'my-dynamodb-table-key_schema2',
28
+ key_type: 'RANGE'
29
+ }
30
+ ]
31
+ }
32
+ }
33
+ }
34
+ }
@@ -0,0 +1,40 @@
1
+ module Awspec::Type
2
+ class DynamodbTable < ResourceBase
3
+ aws_resource Aws::DynamoDB::Table
4
+
5
+ def resource_via_client
6
+ @resource_via_client ||= find_dynamodb_table(@display_name)
7
+ end
8
+
9
+ def id
10
+ @id ||= resource_via_client.table_name if resource_via_client
11
+ end
12
+
13
+ STATUSES = %w(
14
+ CREATING
15
+ UPDATING
16
+ DELETING
17
+ ACTIVE
18
+ )
19
+
20
+ STATUSES.each do |status|
21
+ define_method status.downcase + '?' do
22
+ resource_via_client.table_status == status
23
+ end
24
+ end
25
+
26
+ def has_attribute_definition?(name, type)
27
+ ret = resource_via_client.attribute_definitions.select { |a| a.attribute_name == name }
28
+ return false if ret.empty?
29
+ return false unless ret.single_resource.attribute_type == type
30
+ return true if ret.single_resource.attribute_name == name
31
+ end
32
+
33
+ def has_key_schema?(name, type)
34
+ ret = resource_via_client.key_schema.select { |k| k.attribute_name == name }
35
+ return false if ret.empty?
36
+ return false unless ret.single_resource.key_type == type
37
+ return true if ret.single_resource.attribute_name == name
38
+ end
39
+ end
40
+ end
@@ -1,3 +1,3 @@
1
1
  module Awspec
2
- VERSION = '0.71.0'
2
+ VERSION = '0.72.0'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: awspec
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.71.0
4
+ version: 0.72.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - k1LoW
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-03-17 00:00:00.000000000 Z
11
+ date: 2017-03-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -216,6 +216,7 @@ files:
216
216
  - doc/_resource_types/cloudwatch_logs.md
217
217
  - doc/_resource_types/customer_gateway.md
218
218
  - doc/_resource_types/directconnect_virtual_interface.md
219
+ - doc/_resource_types/dynamodb_table.md
219
220
  - doc/_resource_types/ebs.md
220
221
  - doc/_resource_types/ec2.md
221
222
  - doc/_resource_types/ec2_account_attributes.md
@@ -284,6 +285,7 @@ files:
284
285
  - lib/awspec/generator/doc/type/cloudwatch_logs.rb
285
286
  - lib/awspec/generator/doc/type/customer_gateway.rb
286
287
  - lib/awspec/generator/doc/type/directconnect_virtual_interface.rb
288
+ - lib/awspec/generator/doc/type/dynamodb_table.rb
287
289
  - lib/awspec/generator/doc/type/ebs.rb
288
290
  - lib/awspec/generator/doc/type/ec2.rb
289
291
  - lib/awspec/generator/doc/type/ec2_account_attributes.rb
@@ -325,6 +327,7 @@ files:
325
327
  - lib/awspec/generator/doc/type/vpn_connection.rb
326
328
  - lib/awspec/generator/doc/type/vpn_gateway.rb
327
329
  - lib/awspec/generator/doc/type/waf_web_acl.rb
330
+ - lib/awspec/generator/spec/acm.rb
328
331
  - lib/awspec/generator/spec/cloudwatch_alarm.rb
329
332
  - lib/awspec/generator/spec/cloudwatch_event.rb
330
333
  - lib/awspec/generator/spec/directconnect.rb
@@ -364,6 +367,7 @@ files:
364
367
  - lib/awspec/helper/finder/cloudwatch_event.rb
365
368
  - lib/awspec/helper/finder/cloudwatch_logs.rb
366
369
  - lib/awspec/helper/finder/directconnect.rb
370
+ - lib/awspec/helper/finder/dynamodb.rb
367
371
  - lib/awspec/helper/finder/ebs.rb
368
372
  - lib/awspec/helper/finder/ec2.rb
369
373
  - lib/awspec/helper/finder/ecr.rb
@@ -399,8 +403,10 @@ files:
399
403
  - lib/awspec/matcher/belong_to_replication_group.rb
400
404
  - lib/awspec/matcher/belong_to_subnet.rb
401
405
  - lib/awspec/matcher/belong_to_vpc.rb
406
+ - lib/awspec/matcher/have_attribute_definition.rb
402
407
  - lib/awspec/matcher/have_inline_policy.rb
403
408
  - lib/awspec/matcher/have_key_policy.rb
409
+ - lib/awspec/matcher/have_key_schema.rb
404
410
  - lib/awspec/matcher/have_network_interface.rb
405
411
  - lib/awspec/matcher/have_origin.rb
406
412
  - lib/awspec/matcher/have_private_ip_address.rb
@@ -426,6 +432,7 @@ files:
426
432
  - lib/awspec/stub/customer_gateway.rb
427
433
  - lib/awspec/stub/directconnect_virtual_interface.rb
428
434
  - lib/awspec/stub/duplicated_resource_type.rb
435
+ - lib/awspec/stub/dynamodb_table.rb
429
436
  - lib/awspec/stub/ebs.rb
430
437
  - lib/awspec/stub/ec2.rb
431
438
  - lib/awspec/stub/ec2_has_multi_security_groups.rb
@@ -481,6 +488,7 @@ files:
481
488
  - lib/awspec/type/cloudwatch_logs.rb
482
489
  - lib/awspec/type/customer_gateway.rb
483
490
  - lib/awspec/type/directconnect_virtual_interface.rb
491
+ - lib/awspec/type/dynamodb_table.rb
484
492
  - lib/awspec/type/ebs.rb
485
493
  - lib/awspec/type/ec2.rb
486
494
  - lib/awspec/type/ec2_account_attributes.rb