awspec 0.21.2 → 0.21.3

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: 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