awspec 0.21.2 → 0.21.3

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: cde04b9af6397716c07ab8b9923bc41d5022be8d
4
- data.tar.gz: 3d7c616f0c991175aa6dd4ec319cb2c5c6feb246
3
+ metadata.gz: 3e1afe8cf22c31470696adebc9e12ade123b1c38
4
+ data.tar.gz: 092d0c2c0f93889e78c967f4cc9c8cee58193958
5
5
  SHA512:
6
- metadata.gz: 45b01ee950eba95c6a21fdda034430514122d5f0c8ed93f6ffaf590a0c2ef8c9f341648dd2233e92f30f46f0401bef2a144e4d4182e2cf32f95b67eadac4b3bd
7
- data.tar.gz: 46815428b3c35b2b75e9d135d2b226f0f862e97a82db1021977c1a0d2900aedb34b1c1dd9b30073b5fc243c36f8e9af21f16438299d72c05a0d895b8f6bd900b
6
+ metadata.gz: b64a0e66d01174810da25ca200eb23ab2077dfc4ca1daa34fee6649ae62156cdf57665a60959bcdd27373f53118691576d02a59646a4f297adf6214689b8d3c5
7
+ data.tar.gz: a465fbb92cdea043fac44eca48f1588f677d45ecc815607709cd2fda59281a9c80aaf810f8d13f0210a8884acfc9be1bbdaf73f42311b5717b8e091131a2a847
@@ -227,6 +227,8 @@ describe route_table('my-route-table') do
227
227
  end
228
228
  ```
229
229
 
230
+ ### have_subnet
231
+
230
232
  #### its(:route_table_id), its(:vpc_id)
231
233
  ## <a name="ebs">ebs</a>
232
234
 
@@ -7,7 +7,7 @@ module Awspec
7
7
  class_option :profile
8
8
 
9
9
  types = %w(
10
- vpc ec2 rds security_group elb network_acl route_table
10
+ vpc ec2 rds security_group elb network_acl route_table subnet
11
11
  )
12
12
 
13
13
  types.each do |type|
@@ -11,6 +11,7 @@ require 'awspec/generator/spec/iam_policy'
11
11
  require 'awspec/generator/spec/cloudwatch_alarm'
12
12
  require 'awspec/generator/spec/network_acl'
13
13
  require 'awspec/generator/spec/route_table'
14
+ require 'awspec/generator/spec/subnet'
14
15
 
15
16
  # Doc
16
17
  require 'awspec/generator/doc/type'
@@ -11,7 +11,8 @@ module Awspec::Generator
11
11
  @vpc_tag_name = vpc.tag_name
12
12
  route_tables = select_route_table_by_vpc_id(@vpc_id)
13
13
  specs = route_tables.map do |route_table|
14
- linespecs = generate_linespecs(route_table)
14
+ linespecs = generate_route_linespecs(route_table)
15
+ subnet_linespecs = generate_subnet_linespecs(route_table)
15
16
  route_table_id = route_table[:route_table_id]
16
17
  route_table_tag_name = route_table.tag_name
17
18
  content = ERB.new(route_table_spec_template, nil, '-').result(binding).gsub(/^\n/, '')
@@ -19,7 +20,7 @@ module Awspec::Generator
19
20
  specs.join("\n")
20
21
  end
21
22
 
22
- def generate_linespecs(route_table)
23
+ def generate_route_linespecs(route_table)
23
24
  linespecs = []
24
25
  route_table.routes.each do |route|
25
26
  linespecs.push(ERB.new(route_table_spec_gateway_linetemplate, nil, '-').result(binding)) if route.gateway_id
@@ -31,6 +32,15 @@ module Awspec::Generator
31
32
  linespecs
32
33
  end
33
34
 
35
+ def generate_subnet_linespecs(route_table)
36
+ linespecs = []
37
+ route_table.associations.each do |a|
38
+ subnet = find_subnet(a.subnet_id)
39
+ linespecs.push(ERB.new(route_table_spec_subnet_linetemplate, nil, '-').result(binding)) if subnet
40
+ end
41
+ linespecs
42
+ end
43
+
34
44
  def route_table_spec_gateway_linetemplate
35
45
  template = <<-'EOF'
36
46
  it { should have_route('<%= route.destination_cidr_block %>').target(gateway: '<%= route.gateway_id %>') }
@@ -49,6 +59,17 @@ EOF
49
59
  template
50
60
  end
51
61
 
62
+ def route_table_spec_subnet_linetemplate
63
+ template = <<-'EOF'
64
+ <%- if subnet.tag_name -%>
65
+ it { should have_subnet('<%= subnet.tag_name %>') }
66
+ <%- else -%>
67
+ it { should have_subnet('<%= subnet.subnet_id %>') }
68
+ <%- end -%>
69
+ EOF
70
+ template
71
+ end
72
+
52
73
  def route_table_spec_template
53
74
  template = <<-'EOF'
54
75
  <%- if route_table_tag_name -%>
@@ -65,6 +86,9 @@ describe route_table('<%= route_table_id %>') do
65
86
  <% linespecs.each do |line| %>
66
87
  <%= line %>
67
88
  <% end %>
89
+ <% subnet_linespecs.each do |line| %>
90
+ <%= line %>
91
+ <% end %>
68
92
  end
69
93
  EOF
70
94
  template
@@ -0,0 +1,47 @@
1
+ module Awspec::Generator
2
+ module Spec
3
+ class Subnet
4
+ include Awspec::Helper::Finder
5
+ def generate_by_vpc_id(vpc_id)
6
+ describes = %w(
7
+ subnet_id cidr_block
8
+ )
9
+ vpc = find_vpc(vpc_id)
10
+ fail 'Not Found VPC' unless vpc
11
+ @vpc_id = vpc[:vpc_id]
12
+ @vpc_tag_name = vpc.tag_name
13
+ subnets = select_subnet_by_vpc_id(@vpc_id)
14
+ specs = subnets.map do |subnet|
15
+ subnet_id = subnet[:subnet_id]
16
+ subnet_tag_name = subnet.tag_name
17
+ content = ERB.new(subnet_spec_template, nil, '-').result(binding).gsub(/^\n/, '')
18
+ end
19
+ specs.join("\n")
20
+ end
21
+
22
+ def subnet_spec_template
23
+ template = <<-'EOF'
24
+ <%- if subnet_tag_name -%>
25
+ describe subnet('<%= subnet_tag_name %>') do
26
+ <%- else -%>
27
+ describe subnet('<%= subnet_id %>') do
28
+ <%- end -%>
29
+ it { should exist }
30
+ it { should be_<%= subnet.state %> }
31
+ it { should belong_to_vpc('<%= @vpc_tag_name %>') }
32
+ <% describes.each do |describe| %>
33
+ <%- if subnet.members.include?(describe.to_sym) && !subnet[describe.to_sym].nil? -%>
34
+ <%- if subnet[describe].is_a?(String) -%>
35
+ its(:<%= describe %>) { should eq '<%= subnet[describe] %>' }
36
+ <%- else -%>
37
+ its(:<%= describe %>) { should eq <%= subnet[describe] %> }
38
+ <%- end -%>
39
+ <%- end -%>
40
+ <% end %>
41
+ end
42
+ EOF
43
+ template
44
+ end
45
+ end
46
+ end
47
+ end
@@ -58,6 +58,13 @@ module Awspec::Helper
58
58
  })
59
59
  return res[:subnets].first if res[:subnets].count == 1
60
60
  end
61
+
62
+ def select_subnet_by_vpc_id(vpc_id)
63
+ res = @ec2_client.describe_subnets({
64
+ filters: [{ name: 'vpc-id', values: [vpc_id] }]
65
+ })
66
+ res[:subnets]
67
+ end
61
68
  end
62
69
  end
63
70
  end
@@ -92,6 +92,14 @@ Aws.config[:ec2] = {
92
92
  state: 'active'
93
93
  }
94
94
  ],
95
+ associations: [
96
+ {
97
+ route_table_association_id: 'rtbassoc-b123456cd',
98
+ route_table_id: 'rtb-a12bcd34',
99
+ subnet_id: 'subnet-1234a567',
100
+ main: false
101
+ }
102
+ ],
95
103
  tags: [
96
104
  {
97
105
  key: 'Name',
@@ -101,6 +109,22 @@ Aws.config[:ec2] = {
101
109
  }
102
110
  ]
103
111
  },
112
+ describe_subnets: {
113
+ subnets: [
114
+ {
115
+ state: 'available',
116
+ vpc_id: 'vpc-ab123cde',
117
+ subnet_id: 'subnet-1234a567',
118
+ cidr_block: '10.0.1.0/24',
119
+ tags: [
120
+ {
121
+ key: 'Name',
122
+ value: 'my-subnet'
123
+ }
124
+ ]
125
+ }
126
+ ]
127
+ },
104
128
  describe_internet_gateways: {
105
129
  internet_gateways: [
106
130
  {
@@ -28,5 +28,13 @@ module Awspec::Type
28
28
  next true if instance && instance.tag_name == instance_id
29
29
  end
30
30
  end
31
+
32
+ def has_subnet?(subnet_id)
33
+ subnet = find_subnet(subnet_id)
34
+ return false unless subnet
35
+ @resource.associations.find do |a|
36
+ a[:subnet_id] == subnet[:subnet_id]
37
+ end
38
+ end
31
39
  end
32
40
  end
@@ -1,3 +1,3 @@
1
1
  module Awspec
2
- VERSION = '0.21.2'
2
+ VERSION = '0.21.3'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: awspec
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.21.2
4
+ version: 0.21.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - k1LoW
@@ -236,6 +236,7 @@ files:
236
236
  - lib/awspec/generator/spec/route53_hosted_zone.rb
237
237
  - lib/awspec/generator/spec/route_table.rb
238
238
  - lib/awspec/generator/spec/security_group.rb
239
+ - lib/awspec/generator/spec/subnet.rb
239
240
  - lib/awspec/generator/spec/vpc.rb
240
241
  - lib/awspec/generator/template.rb
241
242
  - lib/awspec/helper.rb