awspec 1.1.0 → 1.2.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: c4a6211484564ebe1014a8a8e3716006c9fc88bf
4
- data.tar.gz: 74e173c94216e05cd6c65a39320f480f60cea17b
3
+ metadata.gz: 6b179910887dad4c07a7dcb3a3964eddd1bd89a5
4
+ data.tar.gz: '09e960c5431fbf85ed39531e42dee075f46e9e67'
5
5
  SHA512:
6
- metadata.gz: cd7819ffaa0cc4b1e26e70c3bd3e96d440e7e1bf596a4f3304d6f71e2dd58484cf50f743bd6dd3bcc27ddc39df86fe0cb94e1f905b58a598ace6258a1e37936d
7
- data.tar.gz: ded38636c79963ef7879530fa7ad044305bc5676bee103654fb2d507e42ac4ba29198a0976d4042212aaf5f21b7f281b8f9d63ced94f1b1ca1e1d51337ebf95c
6
+ metadata.gz: 348f694481e7db4994744ffbc6ee94001f10d2132ae6762dc6f2f314e7dbb62d6e30c2e30609f833604c30bcc5d8472c0a972fd94f6d907ac3ed2815dbd6bccb
7
+ data.tar.gz: 1584f796a4420efa011fdd2f297096e8872f48d473becda49b8dbfce86d896613546c28d9347ebd5b90e7cd31ce1f2d716cbc5b3e5824202b19c274657dc6087
@@ -1,12 +1,13 @@
1
1
  language: ruby
2
2
  rvm:
3
- - 2.4.2
3
+ - 2.4.3
4
4
  - 2.3.5
5
5
  - 2.2.8
6
6
  - 2.1.10
7
7
 
8
8
  before_install:
9
9
  - gem update --system
10
+ - gem pristine bundler
10
11
 
11
12
  script:
12
13
  - bundle exec rake spec
@@ -14,6 +14,16 @@ describe vpc('vpc-ab123cde') do
14
14
  end
15
15
  ```
16
16
 
17
+ ### be_connected_to_vpc
18
+
19
+ ```ruby
20
+ describe vpc('vpc-ab123cde') do
21
+ it { should be_connected_to_vpc('vpc-bcd1235e') }
22
+ it { should be_connected_to_vpc('vpc-bcd1235e').as_accepter }
23
+ it { should_not be_connected_to_vpc('vpc-bcd1235e').as_requester }
24
+ end
25
+ ```
26
+
17
27
  ### have_network_acl
18
28
 
19
29
  ```ruby
@@ -40,6 +50,16 @@ describe vpc('vpc-ab123cde') do
40
50
  end
41
51
  ```
42
52
 
53
+ ### have_vpc_peering_connection
54
+
55
+ ```ruby
56
+ describe vpc('vpc-ab123cde') do
57
+ it { should have_vpc_peering_connection('pcx-c56789de') }
58
+ it { should have_vpc_peering_connection('pcx-c56789de').as_accepter }
59
+ it { should_not have_vpc_peering_connection('pcx-c56789de').as_requester }
60
+ end
61
+ ```
62
+
43
63
  ### advanced
44
64
 
45
65
  `vpc` can use `Aws::EC2::Vpc` resource (see http://docs.aws.amazon.com/sdkforruby/api/Aws/EC2/Vpc.html).
@@ -2454,6 +2454,17 @@ end
2454
2454
  ```
2455
2455
 
2456
2456
 
2457
+ ### be_connected_to_vpc
2458
+
2459
+ ```ruby
2460
+ describe vpc('vpc-ab123cde') do
2461
+ it { should be_connected_to_vpc('vpc-bcd1235e') }
2462
+ it { should be_connected_to_vpc('vpc-bcd1235e').as_accepter }
2463
+ it { should_not be_connected_to_vpc('vpc-bcd1235e').as_requester }
2464
+ end
2465
+ ```
2466
+
2467
+
2457
2468
  ### have_network_acl
2458
2469
 
2459
2470
  ```ruby
@@ -2483,6 +2494,17 @@ end
2483
2494
  ```
2484
2495
 
2485
2496
 
2497
+ ### have_vpc_peering_connection
2498
+
2499
+ ```ruby
2500
+ describe vpc('vpc-ab123cde') do
2501
+ it { should have_vpc_peering_connection('pcx-c56789de') }
2502
+ it { should have_vpc_peering_connection('pcx-c56789de').as_accepter }
2503
+ it { should_not have_vpc_peering_connection('pcx-c56789de').as_requester }
2504
+ end
2505
+ ```
2506
+
2507
+
2486
2508
  ### its(:cidr_block), its(:dhcp_options_id), its(:state), its(:vpc_id), its(:instance_tenancy), its(:ipv_6_cidr_block_association_set), its(:cidr_block_association_set), its(:is_default)
2487
2509
  ### :unlock: Advanced use
2488
2510
 
@@ -72,6 +72,17 @@ module Awspec::Helper
72
72
  })
73
73
  res.vpc_peering_connections.single_resource(vpc_peering_connection_id)
74
74
  end
75
+
76
+ def select_vpc_peering_connection_by_vpc_id(vpc_id, status_code = nil)
77
+ params = {}
78
+ params = { filters: [{ name: 'status-code', values: [status_code] }] } if status_code
79
+ vpc_peering_connections = ec2_client.describe_vpc_peering_connections(params).map do |res|
80
+ res.vpc_peering_connections
81
+ end.flatten
82
+ vpc_peering_connections.select do |conn|
83
+ conn.accepter_vpc_info.vpc_id == vpc_id || conn.requester_vpc_info.vpc_id == vpc_id
84
+ end
85
+ end
75
86
  end
76
87
  end
77
88
  end
@@ -60,3 +60,7 @@ require 'awspec/matcher/belong_to_domain'
60
60
 
61
61
  # Alb Target Group
62
62
  require 'awspec/matcher/belong_to_alb'
63
+
64
+ # VPC
65
+ require 'awspec/matcher/be_connected_to_vpc'
66
+ require 'awspec/matcher/have_vpc_peering_connection'
@@ -0,0 +1,13 @@
1
+ RSpec::Matchers.define :be_connected_to_vpc do |vpc_id|
2
+ match do |vpc|
3
+ vpc.connected_to_vpc?(vpc_id, @accepter_or_requester)
4
+ end
5
+
6
+ chain :as_accepter do
7
+ @accepter_or_requester = 'accepter'
8
+ end
9
+
10
+ chain :as_requester do
11
+ @accepter_or_requester = 'requester'
12
+ end
13
+ end
@@ -0,0 +1,13 @@
1
+ RSpec::Matchers.define :have_vpc_peering_connection do |vpc_peering_connection_id|
2
+ match do |vpc|
3
+ vpc.has_vpc_peering_connection?(vpc_peering_connection_id, @accepter_or_requester)
4
+ end
5
+
6
+ chain :as_accepter do
7
+ @accepter_or_requester = 'accepter'
8
+ end
9
+
10
+ chain :as_requester do
11
+ @accepter_or_requester = 'requester'
12
+ end
13
+ end
@@ -64,6 +64,42 @@ Aws.config[:ec2] = {
64
64
  ]
65
65
  }
66
66
  ]
67
+ },
68
+ describe_vpc_peering_connections: {
69
+ vpc_peering_connections: [
70
+ {
71
+ vpc_peering_connection_id: 'pcx-c56789de',
72
+ accepter_vpc_info: {
73
+ cidr_block: nil,
74
+ ipv_6_cidr_block_set: [],
75
+ cidr_block_set: [],
76
+ owner_id: '123453345554',
77
+ peering_options: nil,
78
+ vpc_id: 'vpc-ab123cde',
79
+ region: 'ap-northeast-1'
80
+ },
81
+ expiration_time: nil,
82
+ requester_vpc_info: {
83
+ cidr_block: nil,
84
+ ipv_6_cidr_block_set: [],
85
+ cidr_block_set: [],
86
+ owner_id: '192912349399',
87
+ peering_options: nil,
88
+ vpc_id: 'vpc-bcd1235e',
89
+ region: 'ap-northeast-1'
90
+ },
91
+ status: {
92
+ code: 'active',
93
+ message: 'Active'
94
+ },
95
+ tags: [
96
+ {
97
+ key: 'Name',
98
+ value: 'my-pcx'
99
+ }
100
+ ]
101
+ }
102
+ ]
67
103
  }
68
104
  }
69
105
  }
@@ -32,5 +32,31 @@ module Awspec::Type
32
32
  return false unless n
33
33
  n.vpc_id == id
34
34
  end
35
+
36
+ def connected_to_vpc?(vpc_id, accepter_or_requester = nil)
37
+ connections = select_vpc_peering_connection_by_vpc_id(vpc_id, 'active')
38
+ return connections.single_resource(vpc_id) unless accepter_or_requester
39
+
40
+ if accepter_or_requester == 'accepter'
41
+ connections.select do |conn|
42
+ conn.accepter_vpc_info.vpc_id == @id
43
+ end.single_resource(vpc_id)
44
+ elsif accepter_or_requester == 'requester'
45
+ connections.select do |conn|
46
+ conn.requester_vpc_info.vpc_id == @id
47
+ end.single_resource(vpc_id)
48
+ end
49
+ end
50
+
51
+ def has_vpc_peering_connection?(vpc_peering_connection_id, accepter_or_requester = nil)
52
+ connection = find_vpc_peering_connection(vpc_peering_connection_id)
53
+ res = if accepter_or_requester == 'accepter'
54
+ connection.accepter_vpc_info.vpc_id == @id
55
+ elsif accepter_or_requester == 'requester'
56
+ connection.requester_vpc_info.vpc_id == @id
57
+ else
58
+ connection
59
+ end
60
+ end
35
61
  end
36
62
  end
@@ -1,3 +1,3 @@
1
1
  module Awspec
2
- VERSION = '1.1.0'
2
+ VERSION = '1.2.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: 1.1.0
4
+ version: 1.2.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-12-19 00:00:00.000000000 Z
11
+ date: 2017-12-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk
@@ -419,6 +419,7 @@ files:
419
419
  - lib/awspec/matcher/be_allowed.rb
420
420
  - lib/awspec/matcher/be_allowed_action.rb
421
421
  - lib/awspec/matcher/be_attached_to.rb
422
+ - lib/awspec/matcher/be_connected_to_vpc.rb
422
423
  - lib/awspec/matcher/be_denied.rb
423
424
  - lib/awspec/matcher/be_opened.rb
424
425
  - lib/awspec/matcher/be_opened_only.rb
@@ -443,6 +444,7 @@ files:
443
444
  - lib/awspec/matcher/have_rule.rb
444
445
  - lib/awspec/matcher/have_subscription_filter.rb
445
446
  - lib/awspec/matcher/have_tag.rb
447
+ - lib/awspec/matcher/have_vpc_peering_connection.rb
446
448
  - lib/awspec/resource_reader.rb
447
449
  - lib/awspec/setup.rb
448
450
  - lib/awspec/shared_context.rb