awspec 1.16.1 → 1.17.0

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: cb52e161700803af0808122c1a0312d4943eb470
4
- data.tar.gz: 741e86da6b969778af9b01fd8c881eba5b741396
3
+ metadata.gz: 0a3421504dfb769b8367414a61de64c4ff31bf23
4
+ data.tar.gz: bf6e0a3d1e1650497b3fc023d38e74b68cad19db
5
5
  SHA512:
6
- metadata.gz: 562de31b0cb98ef280c01b728d1a5ed3a6854707d8fb10279964de1ccd90648e4b432fc1057baebcb7469b4ed3dc8963e875c266e461743d8628a2d2b116dde3
7
- data.tar.gz: b143b6a9b77a07138090055ae64ce62afb4297699348ddb90086edf0b6667eadf36fa3cbb61fc15efa6d8684f8afda42b7187b622eded5a9aad7f209cd04e3d1
6
+ metadata.gz: c780579a44dbdfeefeac6b30f63240023afee5487d92cb3f22c2ebc27b9e742e9585c10280bf90413f333cf6f83609d72c7e8bd43d0c7da2ccec3d6aaf44c40f
7
+ data.tar.gz: 3d7a2b8b2ee72b3819ac838806ef454e1151aa88150a1d445211b9dabfd8f80b1c2583b054ff803f81a1ad8b8aca5fb0c983eb285d1b16f3442a2ea7465e80ea
@@ -0,0 +1,29 @@
1
+ ### exist
2
+
3
+ ```ruby
4
+ describe wafregional_web_acl('my-wafregional-web-acl') do
5
+ it { should exist }
6
+ its(:default_action) { should eq 'BLOCK' }
7
+ it { should have_rule('my-wafregional-web-acl-allowed-ips') }
8
+ it { should have_rule('my-wafregional-web-acl-allowed-ips').order(2).action('BLOCK') }
9
+ end
10
+ ```
11
+
12
+ ### have_rule
13
+
14
+ ```ruby
15
+ describe wafregional_web_acl('my-wafregional-web-acl') do
16
+ it { should have_rule('my-wafregional-web-acl-allowed-ips') }
17
+ it { should have_rule('my-wafregional-web-acl-allowed-ips').order(2).action('BLOCK') }
18
+ end
19
+ ```
20
+
21
+ ### its(:default_action), its(:web_acl_id), its(:name), its(:metric_name)
22
+
23
+ ```ruby
24
+ describe wafregional_web_acl('my-wafregional-web-acl') do
25
+ its(:default_action) { should eq 'BLOCK' }
26
+ end
27
+ ```
28
+
29
+
@@ -74,6 +74,7 @@
74
74
  | [vpn_connection](#vpn_connection)
75
75
  | [vpn_gateway](#vpn_gateway)
76
76
  | [waf_web_acl](#waf_web_acl)
77
+ | [wafregional_web_acl](#wafregional_web_acl)
77
78
  | [account](#account)
78
79
 
79
80
  ## <a name="acm">acm</a>
@@ -1216,7 +1217,7 @@ describe ecs_task_definition('my-ecs-task-definition') do
1216
1217
  end
1217
1218
  ```
1218
1219
 
1219
- ### its(:task_definition_arn), its(:family), its(:task_role_arn), its(:execution_role_arn), its(:network_mode), its(:revision), its(:volumes), its(:status), its(:requires_attributes), its(:placement_constraints), its(:compatibilities), its(:requires_compatibilities), its(:cpu), its(:memory), its(:pid_mode), its(:ipc_mode)
1220
+ ### its(:task_definition_arn), its(:family), its(:task_role_arn), its(:execution_role_arn), its(:network_mode), its(:revision), its(:volumes), its(:status), its(:requires_attributes), its(:placement_constraints), its(:compatibilities), its(:requires_compatibilities), its(:cpu), its(:memory), its(:pid_mode), its(:ipc_mode), its(:proxy_configuration)
1220
1221
  ## <a name="efs">efs</a>
1221
1222
 
1222
1223
  EFS resource type.
@@ -3583,6 +3584,33 @@ end
3583
3584
  ```
3584
3585
 
3585
3586
 
3587
+ ### its(:default_action), its(:web_acl_id), its(:name), its(:metric_name), its(:web_acl_arn)
3588
+ ## <a name="wafregional_web_acl">wafregional_web_acl</a>
3589
+
3590
+ WafregionalWebAcl resource type.
3591
+
3592
+ ### exist
3593
+
3594
+ ```ruby
3595
+ describe wafregional_web_acl('my-wafregional-web-acl') do
3596
+ it { should exist }
3597
+ its(:default_action) { should eq 'BLOCK' }
3598
+ it { should have_rule('my-wafregional-web-acl-allowed-ips') }
3599
+ it { should have_rule('my-wafregional-web-acl-allowed-ips').order(2).action('BLOCK') }
3600
+ end
3601
+ ```
3602
+
3603
+
3604
+ ### have_rule
3605
+
3606
+ ```ruby
3607
+ describe wafregional_web_acl('my-wafregional-web-acl') do
3608
+ it { should have_rule('my-wafregional-web-acl-allowed-ips') }
3609
+ it { should have_rule('my-wafregional-web-acl-allowed-ips').order(2).action('BLOCK') }
3610
+ end
3611
+ ```
3612
+
3613
+
3586
3614
  ### its(:default_action), its(:web_acl_id), its(:name), its(:metric_name), its(:web_acl_arn)
3587
3615
  # Account and Attributes
3588
3616
 
@@ -0,0 +1,17 @@
1
+ module Awspec::Generator
2
+ module Doc
3
+ module Type
4
+ class WafregionalWebAcl < Base
5
+ def initialize
6
+ super
7
+ @type_name = 'WafregionalWebAcl'
8
+ @type = Awspec::Type::WafregionalWebAcl.new('my-wafregional-web-acl')
9
+ @ret = @type.resource_via_client
10
+ @matchers = []
11
+ @ignore_matchers = []
12
+ @describes = %w(default_action)
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -29,6 +29,7 @@ require 'awspec/helper/finder/cloudfront'
29
29
  require 'awspec/helper/finder/elastictranscoder'
30
30
  require 'awspec/helper/finder/cloudtrail'
31
31
  require 'awspec/helper/finder/waf'
32
+ require 'awspec/helper/finder/wafregional'
32
33
  require 'awspec/helper/finder/acm'
33
34
  require 'awspec/helper/finder/cloudwatch_logs'
34
35
  require 'awspec/helper/finder/dynamodb'
@@ -82,6 +83,7 @@ module Awspec::Helper
82
83
  include Awspec::Helper::Finder::Elastictranscoder
83
84
  include Awspec::Helper::Finder::Cloudtrail
84
85
  include Awspec::Helper::Finder::Waf
86
+ include Awspec::Helper::Finder::WafRegional
85
87
  include Awspec::Helper::Finder::Acm
86
88
  include Awspec::Helper::Finder::AccountAttributes
87
89
  include Awspec::Helper::Finder::CloudwatchLogs
@@ -125,6 +127,7 @@ module Awspec::Helper
125
127
  elasticsearch_client: Aws::ElasticsearchService::Client,
126
128
  cloudtrail_client: Aws::CloudTrail::Client,
127
129
  waf_client: Aws::WAF::Client,
130
+ wafregional_client: Aws::WAFRegional::Client,
128
131
  sts_client: Aws::STS::Client,
129
132
  acm_client: Aws::ACM::Client,
130
133
  cloudwatch_logs_client: Aws::CloudWatchLogs::Client,
@@ -0,0 +1,53 @@
1
+ module Awspec::Helper
2
+ module Finder
3
+ module WafRegional
4
+ def find_wafregional_web_acl(id)
5
+ finded = nil
6
+ next_marker = nil
7
+
8
+ loop do
9
+ res = wafregional_client.list_web_acls(next_marker: next_marker, limit: 100)
10
+ finded = res.web_acls.find do |acl|
11
+ acl.web_acl_id == id || acl.name == id
12
+ end
13
+ (finded.nil? && next_marker = res.next_marker) || break
14
+ end
15
+
16
+ return nil unless finded
17
+ wafregional_client.get_web_acl(web_acl_id: finded.web_acl_id).web_acl
18
+ end
19
+
20
+ def find_wafregional_rule(id)
21
+ finded = nil
22
+ next_marker = nil
23
+
24
+ loop do
25
+ res = wafregional_client.list_rules(next_marker: next_marker, limit: 1)
26
+ finded = res.rules.find do |rule|
27
+ rule.rule_id == id || rule.name == id
28
+ end
29
+ (finded.nil? && next_marker = res.next_marker) || break
30
+ end
31
+
32
+ return nil unless finded
33
+ wafregional_client.get_rule(rule_id: finded.rule_id).rule
34
+ end
35
+
36
+ def find_wafregional_ip_set(id)
37
+ finded = nil
38
+ next_marker = nil
39
+
40
+ loop do
41
+ res = wafregional_client.list_ip_sets(next_marker: next_marker, limit: 1)
42
+ finded = res.ip_sets.find do |set|
43
+ set.ip_set_id == id || set.name == id
44
+ end
45
+ (finded.nil? && next_marker = res.next_marker) || break
46
+ end
47
+
48
+ return nil unless finded
49
+ wafregional_client.get_ip_set(ip_set_id: finded.ip_set_id).ip_set
50
+ end
51
+ end
52
+ end
53
+ end
@@ -17,9 +17,9 @@ module Awspec
17
17
  network_acl network_interface nlb nlb_listener nlb_target_group
18
18
  rds rds_db_cluster_parameter_group rds_db_parameter_group route53_hosted_zone
19
19
  route_table s3_bucket security_group ses_identity subnet vpc cloudfront_distribution
20
- elastictranscoder_pipeline waf_web_acl customer_gateway vpn_gateway vpn_connection internet_gateway acm
21
- cloudwatch_logs dynamodb_table eip sqs ssm_parameter cloudformation_stack codebuild sns_topic redshift
22
- redshift_cluster_parameter_group codedeploy codedeploy_deployment_group
20
+ elastictranscoder_pipeline waf_web_acl wafregional_web_acl customer_gateway vpn_gateway vpn_connection
21
+ internet_gateway acm cloudwatch_logs dynamodb_table eip sqs ssm_parameter cloudformation_stack
22
+ codebuild sns_topic redshift redshift_cluster_parameter_group codedeploy codedeploy_deployment_group
23
23
  )
24
24
 
25
25
  ACCOUNT_ATTRIBUTES = %w(
@@ -1,6 +1,7 @@
1
1
  RSpec::Matchers.define :have_rule do |rule_id|
2
2
  match do |type|
3
3
  return type.has_rule?(rule_id, @priority, @action) if type.instance_of?(Awspec::Type::WafWebAcl)
4
+ return type.has_rule?(rule_id, @priority, @action) if type.instance_of?(Awspec::Type::WafregionalWebAcl)
4
5
  return type.has_rule?(rule_id, @priority, @conditions, @actions) if type.instance_of?(Awspec::Type::AlbListener)
5
6
  type.has_rule?(rule_id, @priority, @conditions, @actions) if type.instance_of?(Awspec::Type::NlbListener)
6
7
  end
@@ -0,0 +1,62 @@
1
+ Aws.config[:wafregional] = {
2
+ stub_responses: {
3
+ list_web_acls: {
4
+ next_marker: nil,
5
+ web_acls: [
6
+ {
7
+ web_acl_id: '1234567-abcd-1234-efgh-5678-1234567890',
8
+ name: 'my-wafregional-web-acl'
9
+ }
10
+ ]
11
+ },
12
+ get_web_acl: {
13
+ web_acl: {
14
+ web_acl_id: '1234567-abcd-1234-efgh-5678-1234567890',
15
+ name: 'my-wafregional-web-acl',
16
+ metric_name: 'mywafregionalwebacl',
17
+ default_action: {
18
+ type: 'BLOCK'
19
+ },
20
+ rules: [
21
+ {
22
+ priority: 1,
23
+ rule_id: 'aaaaaaaa-0000-5555-3333-eeeeeeeeeeee',
24
+ action: {
25
+ type: 'ALLOW'
26
+ }
27
+ },
28
+ {
29
+ priority: 2,
30
+ rule_id: 'dddddddd-1111-2222-3333-eeeeeeeeeeee',
31
+ action: {
32
+ type: 'BLOCK'
33
+ }
34
+ }
35
+ ]
36
+ }
37
+ },
38
+ list_rules: {
39
+ next_marker: nil,
40
+ rules: [
41
+ {
42
+ rule_id: 'dddddddd-1111-2222-3333-eeeeeeeeeeee',
43
+ name: 'my-wafregional-web-acl-allowed-ips'
44
+ }
45
+ ]
46
+ },
47
+ get_rule: {
48
+ rule: {
49
+ rule_id: 'dddddddd-1111-2222-3333-eeeeeeeeeeee',
50
+ name: 'my-wafregional-web-acl-allowed-ips',
51
+ metric_name: 'mywafregionalwebaclallowedips',
52
+ predicates: [
53
+ {
54
+ negated: false,
55
+ type: 'IPMatch',
56
+ data_id: '22aa22bb-3333-aaaa-8888-bbbbbbbbbbbb'
57
+ }
58
+ ]
59
+ }
60
+ }
61
+ }
62
+ }
@@ -0,0 +1,24 @@
1
+ module Awspec::Type
2
+ class WafregionalWebAcl < ResourceBase
3
+ def resource_via_client
4
+ @resource_via_client ||= find_wafregional_web_acl(@display_name)
5
+ end
6
+
7
+ def id
8
+ @id ||= resource_via_client.web_acl_id if resource_via_client
9
+ end
10
+
11
+ def default_action
12
+ resource_via_client.default_action.type
13
+ end
14
+
15
+ def has_rule?(rule_id, priority = nil, action = nil)
16
+ resource_via_client.rules.find do |rule|
17
+ next false if !priority.nil? && rule.priority != priority
18
+ next false if !action.nil? && rule.action.type != action
19
+ next true if rule.rule_id == rule_id
20
+ find_wafregional_rule(rule_id).name == rule_id
21
+ end
22
+ end
23
+ end
24
+ end
@@ -1,3 +1,3 @@
1
1
  module Awspec
2
- VERSION = '1.16.1'
2
+ VERSION = '1.17.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.16.1
4
+ version: 1.17.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - k1LoW
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-03-06 00:00:00.000000000 Z
11
+ date: 2019-03-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk
@@ -296,6 +296,7 @@ files:
296
296
  - doc/_resource_types/vpn_connection.md
297
297
  - doc/_resource_types/vpn_gateway.md
298
298
  - doc/_resource_types/waf_web_acl.md
299
+ - doc/_resource_types/wafregional_web_acl.md
299
300
  - doc/contributing.md
300
301
  - doc/resource_types.md
301
302
  - exe/awspec
@@ -392,6 +393,7 @@ files:
392
393
  - lib/awspec/generator/doc/type/vpn_connection.rb
393
394
  - lib/awspec/generator/doc/type/vpn_gateway.rb
394
395
  - lib/awspec/generator/doc/type/waf_web_acl.rb
396
+ - lib/awspec/generator/doc/type/wafregional_web_acl.rb
395
397
  - lib/awspec/generator/spec/acm.rb
396
398
  - lib/awspec/generator/spec/alb.rb
397
399
  - lib/awspec/generator/spec/alb_listener.rb
@@ -482,6 +484,7 @@ files:
482
484
  - lib/awspec/helper/finder/subnet.rb
483
485
  - lib/awspec/helper/finder/vpc.rb
484
486
  - lib/awspec/helper/finder/waf.rb
487
+ - lib/awspec/helper/finder/wafregional.rb
485
488
  - lib/awspec/helper/type.rb
486
489
  - lib/awspec/matcher.rb
487
490
  - lib/awspec/matcher/be_allowed.rb
@@ -606,6 +609,7 @@ files:
606
609
  - lib/awspec/stub/vpn_connection.rb
607
610
  - lib/awspec/stub/vpn_gateway.rb
608
611
  - lib/awspec/stub/waf_web_acl.rb
612
+ - lib/awspec/stub/wafregional_web_acl.rb
609
613
  - lib/awspec/toolbox.rb
610
614
  - lib/awspec/type/account.rb
611
615
  - lib/awspec/type/account_attribute.rb
@@ -690,6 +694,7 @@ files:
690
694
  - lib/awspec/type/vpn_connection.rb
691
695
  - lib/awspec/type/vpn_gateway.rb
692
696
  - lib/awspec/type/waf_web_acl.rb
697
+ - lib/awspec/type/wafregional_web_acl.rb
693
698
  - lib/awspec/version.rb
694
699
  homepage: https://github.com/k1LoW/awspec
695
700
  licenses:
@@ -711,7 +716,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
711
716
  version: '0'
712
717
  requirements: []
713
718
  rubyforge_project:
714
- rubygems_version: 2.6.14
719
+ rubygems_version: 2.6.14.1
715
720
  signing_key:
716
721
  specification_version: 4
717
722
  summary: RSpec tests for your AWS resources.