awspec 1.32.0 → 1.33.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.
Files changed (46) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +1 -0
  3. data/doc/_resource_types/backup_plan.md +7 -0
  4. data/doc/_resource_types/backup_selection.md +7 -0
  5. data/doc/_resource_types/backup_vault.md +35 -0
  6. data/doc/_resource_types/rds_db_cluster.md +8 -0
  7. data/doc/_resource_types/rds_global_cluster.md +8 -0
  8. data/doc/_resource_types/transfer_server.md +4 -0
  9. data/doc/_resource_types/wafv2_ip_set.md +6 -2
  10. data/doc/_resource_types/wafv2_web_acl.md +25 -0
  11. data/doc/contributing.md +2 -2
  12. data/doc/resource_types.md +125 -29
  13. data/lib/awspec/generator/doc/type/backup_plan.rb +19 -0
  14. data/lib/awspec/generator/doc/type/backup_selection.rb +19 -0
  15. data/lib/awspec/generator/doc/type/backup_vault.rb +19 -0
  16. data/lib/awspec/generator/doc/type/wafv2_ip_set.rb +1 -1
  17. data/lib/awspec/generator/doc/type/wafv2_web_acl.rb +19 -0
  18. data/lib/awspec/generator/spec/wafv2_web_acl.rb +39 -0
  19. data/lib/awspec/generator.rb +1 -0
  20. data/lib/awspec/helper/finder/backup.rb +88 -0
  21. data/lib/awspec/helper/finder/transfer.rb +21 -1
  22. data/lib/awspec/helper/finder/wafv2.rb +20 -0
  23. data/lib/awspec/helper/finder.rb +4 -1
  24. data/lib/awspec/helper/type.rb +2 -1
  25. data/lib/awspec/matcher/belong_to_backup_plan.rb +12 -0
  26. data/lib/awspec/matcher/have_rule.rb +5 -0
  27. data/lib/awspec/matcher.rb +3 -0
  28. data/lib/awspec/stub/backup_plan.rb +33 -0
  29. data/lib/awspec/stub/backup_selection.rb +33 -0
  30. data/lib/awspec/stub/backup_vault.rb +53 -0
  31. data/lib/awspec/stub/rds_db_cluster.rb +6 -1
  32. data/lib/awspec/stub/rds_global_cluster.rb +7 -1
  33. data/lib/awspec/stub/transfer_server.rb +25 -6
  34. data/lib/awspec/stub/wafv2_ip_set.rb +7 -5
  35. data/lib/awspec/stub/wafv2_web_acl.rb +151 -0
  36. data/lib/awspec/type/backup_plan.rb +13 -0
  37. data/lib/awspec/type/backup_selection.rb +13 -0
  38. data/lib/awspec/type/backup_vault.rb +13 -0
  39. data/lib/awspec/type/base.rb +5 -1
  40. data/lib/awspec/type/codepipeline.rb +1 -1
  41. data/lib/awspec/type/rds_db_cluster.rb +1 -0
  42. data/lib/awspec/type/rds_global_cluster.rb +1 -0
  43. data/lib/awspec/type/transfer_server.rb +4 -7
  44. data/lib/awspec/type/wafv2_web_acl.rb +33 -0
  45. data/lib/awspec/version.rb +1 -1
  46. metadata +21 -2
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Awspec::Generator
4
+ module Spec
5
+ class Wafv2WebAcl
6
+ include Awspec::Helper::Finder
7
+ def generate_by_scope(scope)
8
+ web_acls = select_all_web_acls(scope)
9
+ raise 'Not Found WAFV2 Web ACL' if web_acls.empty?
10
+
11
+ specs = web_acls.map do |acl|
12
+ web_acl = get_web_acl(scope, acl.name, acl.id)
13
+ ERB.new(wafv2_web_acl_spec_template, nil, '-').result(binding).gsub(/^\n/, '')
14
+ end
15
+ specs.join("\n")
16
+ end
17
+
18
+ def wafv2_web_acl_spec_template
19
+ <<-'EOF'
20
+ describe wafv2_web_acl('<%= web_acl.name %>'), scope: '<%= scope %>' do
21
+ it { should exist }
22
+ its(:name) { should eq '<%= web_acl.name %>' }
23
+ its(:id) { should eq '<%= web_acl.id %>' }
24
+ its(:arn) { should eq '<%= web_acl.arn %>' }
25
+ its(:default_action) { should eq '<%= web_acl.default_action.allow ? 'ALLOW' : 'BLOCK' %>' }
26
+ its(:description) { should eq '<%= web_acl.description %>' }
27
+ its(:capacity) { should eq <%= web_acl.capacity %> }
28
+ its(:managed_by_firewall_manager) { should eq <%= web_acl.managed_by_firewall_manager %> }
29
+ its(:label_namespace) { should eq '<%= web_acl.label_namespace %>' }
30
+ its(:retrofitted_by_firewall_manager) { should eq <%= web_acl.retrofitted_by_firewall_manager %> }
31
+ <% web_acl.rules.each do |rule| %>
32
+ it { should have_rule('<%= rule.name %>').order(<%= rule.priority %>) }
33
+ <% end %>
34
+ end
35
+ EOF
36
+ end
37
+ end
38
+ end
39
+ end
@@ -46,6 +46,7 @@ require 'awspec/generator/spec/rds_global_cluster'
46
46
  require 'awspec/generator/spec/managed_prefix_list'
47
47
  require 'awspec/generator/spec/codepipeline'
48
48
  require 'awspec/generator/spec/wafv2_ip_set'
49
+ require 'awspec/generator/spec/wafv2_web_acl'
49
50
 
50
51
  # Doc
51
52
  require 'awspec/generator/doc/type'
@@ -0,0 +1,88 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Awspec::Helper
4
+ module Finder
5
+ module Backup
6
+ def find_backup_vault(id)
7
+ selected = []
8
+ req = {}
9
+ loop do
10
+ res = backup_client.list_backup_vaults(req)
11
+ selected += res.backup_vault_list.select do |v|
12
+ v.backup_vault_name == id || v.backup_vault_arn == id
13
+ end
14
+ break if res.next_token.nil?
15
+
16
+ req[:next_token] = res.next_token
17
+ end
18
+ selected.single_resource(id)
19
+ rescue Aws::Backup::Errors::ResourceNotFoundException
20
+ nil
21
+ end
22
+
23
+ def find_backup_plan(id)
24
+ selected = []
25
+ req = {}
26
+ loop do
27
+ res = backup_client.list_backup_plans(req)
28
+ selected += res.backup_plans_list.select do |p|
29
+ p.backup_plan_name == id || p.backup_plan_arn == id || p.backup_plan_id == id
30
+ end
31
+ break if res.next_token.nil?
32
+
33
+ req[:next_token] = res.next_token
34
+ end
35
+ selected.single_resource(id)
36
+ rescue Aws::Backup::Errors::ResourceNotFoundException
37
+ nil
38
+ end
39
+
40
+ def find_backup_selection(id)
41
+ backup_plans = []
42
+ req = {}
43
+ loop do
44
+ res = backup_client.list_backup_plans(req)
45
+ backup_plans += res.backup_plans_list.map { |p| p.backup_plan_id }
46
+ break if res.next_token.nil?
47
+
48
+ req[:next_token] = res.next_token
49
+ end
50
+
51
+ selected = []
52
+ next_token = nil
53
+
54
+ backup_plans.each do |plan_id|
55
+ loop do
56
+ res = backup_client.list_backup_selections({ backup_plan_id: plan_id, next_token: next_token })
57
+ selected += res.backup_selections_list.select do |s|
58
+ s.selection_id == id || s.selection_name == id
59
+ end
60
+ break if res.next_token.nil?
61
+
62
+ next_token = res.next_token
63
+ end
64
+ end
65
+ selected.single_resource(id)
66
+ rescue Aws::Backup::Errors::ResourceNotFoundException
67
+ nil
68
+ end
69
+
70
+ def locked?
71
+ resource_via_client.locked
72
+ end
73
+
74
+ def airgapped?
75
+ resource_via_client.vault_type == 'LOGICALLY_AIR_GAPPED_BACKUP_VAULT'
76
+ end
77
+
78
+ STATES = %w[
79
+ creating available failed
80
+ ]
81
+ STATES.each do |state|
82
+ define_method "#{state}?" do
83
+ resource_via_client.vault_state.downcase == state
84
+ end
85
+ end
86
+ end
87
+ end
88
+ end
@@ -4,8 +4,28 @@ module Awspec::Helper
4
4
  module Finder
5
5
  module Transfer
6
6
  def find_transfer_server(id)
7
- res = transfer_client.describe_server(server_id: id)
7
+ res = transfer_client.describe_server({ server_id: id })
8
8
  res.server
9
+ rescue Aws::Transfer::Errors::ValidationException, Aws::Transfer::Errors::ResourceNotFoundException
10
+ req = {}
11
+ servers = []
12
+ loop do
13
+ res = transfer_client.list_servers(req)
14
+ servers.push(*res.servers)
15
+ break if res.next_token.nil?
16
+
17
+ req[:next_token] = res.next_token
18
+ end
19
+
20
+ servers.each do |s|
21
+ server = transfer_client.describe_server({ server_id: s.server_id }).server
22
+ server.tags.each do |tag|
23
+ if tag.key == 'Name' && tag.value == id
24
+ return server
25
+ end
26
+ end
27
+ end
28
+ nil
9
29
  end
10
30
  end
11
31
  end
@@ -22,6 +22,26 @@ module Awspec::Helper
22
22
  res = wafv2_client.get_ip_set({ name: name, scope: scope, id: id })
23
23
  res.ip_set
24
24
  end
25
+
26
+ def find_web_acl(scope, name)
27
+ web_acls = select_all_web_acls(scope)
28
+ web_acl = web_acls.find do |acl|
29
+ acl.name == name
30
+ end
31
+ return false unless web_acl
32
+
33
+ get_web_acl(scope, name, web_acl.id)
34
+ end
35
+
36
+ def select_all_web_acls(scope)
37
+ res = wafv2_client.list_web_acls({ scope: scope })
38
+ res.web_acls
39
+ end
40
+
41
+ def get_web_acl(scope, name, id)
42
+ res = wafv2_client.get_web_acl({ name: name, scope: scope, id: id })
43
+ res.web_acl
44
+ end
25
45
  end
26
46
  end
27
47
  end
@@ -57,6 +57,7 @@ require 'awspec/helper/finder/cognito_identity_pool'
57
57
  require 'awspec/helper/finder/transfer'
58
58
  require 'awspec/helper/finder/codepipeline'
59
59
  require 'awspec/helper/finder/wafv2'
60
+ require 'awspec/helper/finder/backup'
60
61
 
61
62
  require 'awspec/helper/finder/account_attributes'
62
63
 
@@ -121,6 +122,7 @@ module Awspec::Helper
121
122
  include Awspec::Helper::Finder::Transfer
122
123
  include Awspec::Helper::Finder::Codepipeline
123
124
  include Awspec::Helper::Finder::Wafv2
125
+ include Awspec::Helper::Finder::Backup
124
126
 
125
127
  CLIENTS = {
126
128
  ec2_client: Aws::EC2::Client,
@@ -171,7 +173,8 @@ module Awspec::Helper
171
173
  cognito_identity_provider_client: Aws::CognitoIdentityProvider::Client,
172
174
  transfer_client: Aws::Transfer::Client,
173
175
  codepipeline_client: Aws::CodePipeline::Client,
174
- wafv2_client: Aws::WAFV2::Client
176
+ wafv2_client: Aws::WAFV2::Client,
177
+ backup_client: Aws::Backup::Client
175
178
  }
176
179
 
177
180
  CLIENT_OPTIONS = {
@@ -24,7 +24,8 @@ module Awspec
24
24
  internet_gateway acm cloudwatch_logs dynamodb_table eip sqs ssm_parameter cloudformation_stack
25
25
  codebuild sns_topic redshift redshift_cluster_parameter_group codedeploy codedeploy_deployment_group
26
26
  secretsmanager msk transit_gateway cognito_identity_pool cognito_user_pool vpc_endpoints
27
- transfer_server managed_prefix_list codepipeline wafv2_ip_set
27
+ transfer_server managed_prefix_list codepipeline wafv2_ip_set wafv2_web_acl
28
+ backup_vault backup_plan backup_selection
28
29
  ]
29
30
 
30
31
  ACCOUNT_ATTRIBUTES = %w[
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ RSpec::Matchers.define :belong_to_backup_plan do |plan|
4
+ match do |type|
5
+ return true if type.backup_plan_id == plan
6
+
7
+ ret = type.find_backup_plan(plan)
8
+ return false unless ret
9
+
10
+ type.backup_plan_id == (ret.backup_plan_id)
11
+ end
12
+ end
@@ -4,6 +4,7 @@ RSpec::Matchers.define :have_rule do |rule_id|
4
4
  match do |type|
5
5
  return type.has_rule?(rule_id, @priority, @action) if type.instance_of?(Awspec::Type::WafWebAcl)
6
6
  return type.has_rule?(rule_id, @priority, @action) if type.instance_of?(Awspec::Type::WafregionalWebAcl)
7
+ return type.has_rule?(rule_id, @priority, @action, @override_action) if type.instance_of?(Awspec::Type::Wafv2WebAcl)
7
8
  return type.has_rule?(rule_id, @priority, @conditions, @actions) if type.instance_of?(Awspec::Type::AlbListener)
8
9
 
9
10
  type.has_rule?(rule_id, @priority, @conditions, @actions) if type.instance_of?(Awspec::Type::NlbListener)
@@ -21,6 +22,10 @@ RSpec::Matchers.define :have_rule do |rule_id|
21
22
  @action = action
22
23
  end
23
24
 
25
+ chain :override_action do |override_action|
26
+ @override_action = override_action
27
+ end
28
+
24
29
  chain :conditions do |conditions|
25
30
  @conditions = conditions
26
31
  end
@@ -93,3 +93,6 @@ require 'awspec/matcher/have_env_var_value'
93
93
 
94
94
  # ManagedPrefixList
95
95
  require 'awspec/matcher/have_cidr'
96
+
97
+ # BackupSelection
98
+ require 'awspec/matcher/belong_to_backup_plan'
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ Aws.config[:backup] = {
4
+ stub_responses: {
5
+ list_backup_plans: {
6
+ backup_plans_list: [
7
+ {
8
+ backup_plan_arn: 'arn:aws:backup:us-west-2:111122223333:backup-plan:a460d5d5-d30b-4631-8014-38c58e3c72ca',
9
+ backup_plan_id: 'a460d5d5-d30b-4631-8014-38c58e3c72ca',
10
+ creation_date: Time.new(2016, 4, 4, 9, 00, 00, '+00:00'),
11
+ deletion_date: nil,
12
+ version_id: 'kMlWPgkmipEb4I9gOEZpdoQiMgxP5KIizKLDhhblGiixgahy',
13
+ backup_plan_name: 'old-obsolete-plan',
14
+ creator_request_id: nil,
15
+ last_execution_date: Time.new(2016, 10, 4, 9, 00, 00, '+00:00'),
16
+ advanced_backup_settings: nil
17
+ },
18
+ {
19
+ backup_plan_arn: 'arn:aws:backup:us-west-2:111122223333:backup-plan:fff3e784-1a0f-4e7c-8fe9-ba69825f7c00',
20
+ backup_plan_id: 'fff3e784-1a0f-4e7c-8fe9-ba69825f7c00',
21
+ creation_date: Time.new(2016, 10, 4, 9, 00, 00, '+00:00'),
22
+ deletion_date: nil,
23
+ version_id: 'disFW7K0dOAjTaMWKYlhEyScjBhmi5kKGf7BrY7i1BG8F8wB',
24
+ backup_plan_name: 'my-backup-plan',
25
+ creator_request_id: nil,
26
+ last_execution_date: Time.new(2025, 10, 4, 9, 00, 00, '+00:00'),
27
+ advanced_backup_settings: nil
28
+ }
29
+ ],
30
+ next_token: nil
31
+ }
32
+ }
33
+ }
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ Aws.config[:backup] = {
4
+ stub_responses: {
5
+ list_backup_plans: {
6
+ backup_plans_list: [
7
+ {
8
+ backup_plan_arn: 'arn:aws:backup:us-west-2:111122223333:backup-plan:fff3e784-1a0f-4e7c-8fe9-ba69825f7c00',
9
+ backup_plan_id: 'fff3e784-1a0f-4e7c-8fe9-ba69825f7c00',
10
+ creation_date: Time.new(2016, 10, 4, 9, 00, 00, '+00:00'),
11
+ deletion_date: nil,
12
+ version_id: 'disFW7K0dOAjTaMWKYlhEyScjBhmi5kKGf7BrY7i1BG8F8wB',
13
+ backup_plan_name: 'my-backup-plan',
14
+ creator_request_id: nil,
15
+ last_execution_date: Time.new(2025, 10, 4, 9, 00, 00, '+00:00'),
16
+ advanced_backup_settings: nil
17
+ }
18
+ ],
19
+ next_token: nil
20
+ },
21
+ list_backup_selections: {
22
+ backup_selections_list: [
23
+ selection_id: '01dfb41f-c3ca-4b45-91e7-63ef43fe7231',
24
+ selection_name: 'my-backup-selection',
25
+ backup_plan_id: 'fff3e784-1a0f-4e7c-8fe9-ba69825f7c00',
26
+ creation_date: Time.new(2016, 10, 4, 9, 00, 00, '+00:00'),
27
+ creator_request_id: nil,
28
+ iam_role_arn: 'arn:aws:iam::111122223333:role/service-role/my-backup-service-role'
29
+ ],
30
+ next_token: nil
31
+ }
32
+ }
33
+ }
@@ -0,0 +1,53 @@
1
+ # frozen_string_literal: true
2
+
3
+ Aws.config[:backup] = {
4
+ stub_responses: {
5
+ list_backup_vaults: {
6
+ backup_vault_list: [
7
+ {
8
+ backup_vault_name: 'Default',
9
+ backup_vault_arn: 'arn:aws:backup:us-west-2:111122223333:backup-vault:Default',
10
+ vault_type: 'BACKUP_VAULT',
11
+ vault_state: 'AVAILABLE',
12
+ creation_date: Time.new(2024, 4, 4, 9, 00, 00, '+00:00'),
13
+ encryption_key_arn: 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab',
14
+ creator_request_id: 'Default',
15
+ number_of_recovery_points: 0,
16
+ locked: false,
17
+ min_retention_days: nil,
18
+ max_retention_days: nil,
19
+ lock_date: nil
20
+ },
21
+ {
22
+ backup_vault_name: 'my-backup-vault',
23
+ backup_vault_arn: 'arn:aws:backup:us-west-2:111122223333:backup-vault:my-vault',
24
+ vault_type: 'BACKUP_VAULT',
25
+ vault_state: 'AVAILABLE',
26
+ creation_date: Time.new(2024, 4, 4, 9, 00, 00, '+00:00'),
27
+ encryption_key_arn: 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab',
28
+ creator_request_id: 'Default',
29
+ number_of_recovery_points: 123,
30
+ locked: true,
31
+ min_retention_days: 7,
32
+ max_retention_days: 35,
33
+ lock_date: Time.new(2024, 10, 4, 9, 00, 00, '+00:00')
34
+ },
35
+ {
36
+ backup_vault_name: 'my-airgapped-vault',
37
+ backup_vault_arn: 'arn:aws:backup:us-west-2:111122223333:backup-vault:my-airgapped-vault',
38
+ vault_type: 'LOGICALLY_AIR_GAPPED_BACKUP_VAULT',
39
+ vault_state: 'AVAILABLE',
40
+ creation_date: Time.new(2024, 4, 4, 9, 00, 00, '+00:00'),
41
+ encryption_key_arn: 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab',
42
+ creator_request_id: nil,
43
+ number_of_recovery_points: 12,
44
+ locked: false,
45
+ min_retention_days: 30,
46
+ max_retention_days: 30,
47
+ lock_date: nil
48
+ }
49
+ ],
50
+ next_token: nil
51
+ }
52
+ }
53
+ }
@@ -78,7 +78,12 @@ Aws.config[:rds] = {
78
78
  copy_tags_to_snapshot: false,
79
79
  cross_account_clone: false,
80
80
  domain_memberships: [],
81
- tag_list: [],
81
+ tag_list: [
82
+ {
83
+ key: 'env',
84
+ value: 'dev'
85
+ }
86
+ ],
82
87
  global_write_forwarding_status: nil,
83
88
  global_write_forwarding_requested: false,
84
89
  pending_modified_values: nil,
@@ -30,7 +30,13 @@ Aws.config[:rds] = {
30
30
  global_write_forwarding_status: 'disabled'
31
31
  }
32
32
  ],
33
- failover_state: nil
33
+ failover_state: nil,
34
+ tag_list: [
35
+ {
36
+ key: 'env',
37
+ value: 'dev'
38
+ }
39
+ ]
34
40
  }
35
41
  ],
36
42
  marker: nil
@@ -3,10 +3,10 @@
3
3
  Aws.config[:transfer] = {
4
4
  stub_responses: {
5
5
  describe_server: {
6
- server: Aws::Transfer::Types::DescribedServer.new(
6
+ server: {
7
7
  arn: 'arn:aws:transfer:us-east-1:1234567890:server/s-4dc0a424f0154fa89',
8
8
  domain: 'S3',
9
- endpoint_details: Aws::Transfer::Types::EndpointDetails.new(
9
+ endpoint_details: {
10
10
  address_allocation_ids: %w[
11
11
  eipalloc-00000000000000001
12
12
  eipalloc-00000000000000002
@@ -19,7 +19,7 @@ Aws.config[:transfer] = {
19
19
  ],
20
20
  vpc_endpoint_id: 'vpce-00000000000000001',
21
21
  vpc_id: 'vpc-0123456789abcdefg'
22
- ),
22
+ },
23
23
  endpoint_type: 'VPC',
24
24
  host_key_fingerprint: 'SHA256:0pj2UnuoFAKEfHrCZwfPwuFinG3RJEVir/m8bPRINTo=',
25
25
  identity_provider_type: 'SERVICE_MANAGED',
@@ -29,13 +29,32 @@ Aws.config[:transfer] = {
29
29
  server_id: 's-4dc0a424f0154fa89',
30
30
  state: 'ONLINE',
31
31
  tags: [
32
- Aws::Transfer::Types::Tag.new(
32
+ {
33
33
  key: 'env',
34
34
  value: 'dev'
35
- )
35
+ },
36
+ {
37
+ key: 'Name',
38
+ value: 'my-transfer-server'
39
+ }
36
40
  ],
37
41
  user_count: 13
38
- )
42
+ }
43
+ },
44
+ list_servers: {
45
+ next_token: nil,
46
+ servers: [
47
+ {
48
+ arn: 'arn:aws:transfer:us-east-1:1234567890:server/s-4dc0a424f0154fa89',
49
+ domain: 'S3',
50
+ identity_provider_type: 'SERVICE_MANAGED',
51
+ endpoint_type: 'VPC',
52
+ logging_role: 'arn:aws:iam::1234567890:role/service-role/AWSTransferLoggingAccess',
53
+ server_id: 's-4dc0a424f0154fa89',
54
+ state: 'ONLINE',
55
+ user_count: 13
56
+ }
57
+ ]
39
58
  }
40
59
  }
41
60
  }
@@ -4,9 +4,10 @@ Aws.config[:wafv2] = {
4
4
  stub_responses: {
5
5
  get_ip_set: {
6
6
  ip_set: {
7
- name: 'my-ip-set',
7
+ name: 'my-wafv2-ip-set',
8
8
  id: '01234567-89ab-cdef-0123-456789abcdef',
9
- arn: 'arn:aws:wafv2:ap-northeast-1:123456789012:regional/ipset/my-ip-set/01234567-89ab-cdef-0123-456789abcdef',
9
+ arn: 'arn:aws:wafv2:ap-northeast-1:123456789012:regional/ipset/'\
10
+ 'my-wafv2-ip-set/01234567-89ab-cdef-0123-456789abcdef',
10
11
  description: 'dev ips',
11
12
  ip_address_version: 'IPV4',
12
13
  addresses: [
@@ -17,14 +18,15 @@ Aws.config[:wafv2] = {
17
18
  lock_token: '01234567-89ab-cdef-0123456789abcdef0'
18
19
  },
19
20
  list_ip_sets: {
20
- next_marker: 'my-ip-set',
21
+ next_marker: 'my-wafv2-ip-set',
21
22
  ip_sets: [
22
23
  {
23
- name: 'my-ip-set',
24
+ name: 'my-wafv2-ip-set',
24
25
  id: '01234567-89ab-cdef-0123-456789abcdef',
25
26
  description: 'dev ips',
26
27
  lock_token: '01234567-89ab-cdef-0123456789abcdef0',
27
- arn: 'arn:aws:wafv2:ap-northeast-1:123456789012:regional/ipset/my-ip-set/01234567-89ab-cdef-0123-456789abcdef'
28
+ arn: 'arn:aws:wafv2:ap-northeast-1:123456789012:regional/ipset/'\
29
+ 'my-wafv2-ip-set/01234567-89ab-cdef-0123-456789abcdef'
28
30
  }
29
31
  ]
30
32
  }
@@ -0,0 +1,151 @@
1
+ # frozen_string_literal: true
2
+
3
+ Aws.config[:wafv2] = {
4
+ stub_responses: {
5
+ get_web_acl: {
6
+ web_acl: {
7
+ name: 'my-wafv2-web-acl',
8
+ id: 'a64cc988-40ec-4c4e-ab80-c9acbea42103',
9
+ arn: 'arn:aws:wafv2:ap-northeast-1:123456789012:regional/webacl/'\
10
+ 'my-wafv2-web-acl/a64cc988-40ec-4c4e-ab80-c9acbea42103',
11
+ default_action: {
12
+ allow: {}
13
+ },
14
+ description: 'test web acl',
15
+ rules: [
16
+ {
17
+ name: 'AWS-AWSManagedRulesCommonRuleSet',
18
+ priority: 0,
19
+ statement: {
20
+ managed_rule_group_statement: {
21
+ vendor_name: 'AWS',
22
+ name: 'AWSManagedRulesCommonRuleSet'
23
+ }
24
+ },
25
+ override_action: {
26
+ none: {}
27
+ },
28
+ visibility_config: {
29
+ sampled_requests_enabled: true,
30
+ cloud_watch_metrics_enabled: true,
31
+ metric_name: 'AWS-AWSManagedRulesCommonRuleSet'
32
+ }
33
+ },
34
+ {
35
+ name: 'AWS-AWSManagedRulesKnownBadInputsRuleSet',
36
+ priority: 1,
37
+ statement: {
38
+ managed_rule_group_statement: {
39
+ vendor_name: 'AWS',
40
+ name: 'AWSManagedRulesKnownBadInputsRuleSet'
41
+ }
42
+ },
43
+ override_action: {
44
+ none: {}
45
+ },
46
+ visibility_config: {
47
+ sampled_requests_enabled: true,
48
+ cloud_watch_metrics_enabled: true,
49
+ metric_name: 'AWS-AWSManagedRulesKnownBadInputsRuleSet'
50
+ }
51
+ },
52
+ {
53
+ name: 'AWS-AWSManagedRulesLinuxRuleSet',
54
+ priority: 2,
55
+ statement: {
56
+ managed_rule_group_statement: {
57
+ vendor_name: 'AWS',
58
+ name: 'AWSManagedRulesLinuxRuleSet'
59
+ }
60
+ },
61
+ override_action: {
62
+ none: {}
63
+ },
64
+ visibility_config: {
65
+ sampled_requests_enabled: true,
66
+ cloud_watch_metrics_enabled: true,
67
+ metric_name: 'AWS-AWSManagedRulesLinuxRuleSet'
68
+ }
69
+ },
70
+ {
71
+ name: 'AWS-AWSManagedRulesUnixRuleSet',
72
+ priority: 3,
73
+ statement: {
74
+ managed_rule_group_statement: {
75
+ vendor_name: 'AWS',
76
+ name: 'AWSManagedRulesUnixRuleSet'
77
+ }
78
+ },
79
+ override_action: {
80
+ none: {}
81
+ },
82
+ visibility_config: {
83
+ sampled_requests_enabled: true,
84
+ cloud_watch_metrics_enabled: true,
85
+ metric_name: 'AWS-AWSManagedRulesUnixRuleSet'
86
+ }
87
+ },
88
+ {
89
+ name: 'AWS-AWSManagedRulesAnonymousIpList',
90
+ priority: 4,
91
+ statement: {
92
+ managed_rule_group_statement: {
93
+ vendor_name: 'AWS',
94
+ name: 'AWSManagedRulesAnonymousIpList'
95
+ }
96
+ },
97
+ override_action: {
98
+ none: {}
99
+ },
100
+ visibility_config: {
101
+ sampled_requests_enabled: true,
102
+ cloud_watch_metrics_enabled: true,
103
+ metric_name: 'AWS-AWSManagedRulesAnonymousIpList'
104
+ }
105
+ },
106
+ {
107
+ name: 'AWS-AWSManagedRulesAmazonIpReputationList',
108
+ priority: 5,
109
+ statement: {
110
+ managed_rule_group_statement: {
111
+ vendor_name: 'AWS',
112
+ name: 'AWSManagedRulesAmazonIpReputationList'
113
+ }
114
+ },
115
+ override_action: {
116
+ none: {}
117
+ },
118
+ visibility_config: {
119
+ sampled_requests_enabled: true,
120
+ cloud_watch_metrics_enabled: true,
121
+ metric_name: 'AWS-AWSManagedRulesAmazonIpReputationList'
122
+ }
123
+ }
124
+ ],
125
+ visibility_config: {
126
+ sampled_requests_enabled: true,
127
+ cloud_watch_metrics_enabled: true,
128
+ metric_name: 'my-wafv2-web-acl'
129
+ },
130
+ capacity: 1275,
131
+ managed_by_firewall_manager: false,
132
+ label_namespace: 'awswaf:123456789012:webacl:my-wafv2-web-acl:',
133
+ retrofitted_by_firewall_manager: false
134
+ },
135
+ 'lock_token': '8060f9d3-6437-4457-934c-e20bc0440e04'
136
+ },
137
+ list_web_acls: {
138
+ next_marker: 'my-wafv2-web-acl',
139
+ web_acls: [
140
+ {
141
+ name: 'my-wafv2-web-acl',
142
+ id: 'a64cc988-40ec-4c4e-ab80-c9acbea42103',
143
+ description: '',
144
+ lock_token: '8060f9d3-6437-4457-934c-e20bc0440e04',
145
+ arn: 'arn:aws:wafv2:ap-northeast-1:123456789012:regional/webacl/'\
146
+ 'my-wafv2-web-acl/a64cc988-40ec-4c4e-ab80-c9acbea42103'
147
+ }
148
+ ]
149
+ }
150
+ }
151
+ }
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Awspec::Type
4
+ class BackupPlan < ResourceBase
5
+ def resource_via_client
6
+ @resource_via_client ||= find_backup_plan(@display_name)
7
+ end
8
+
9
+ def id
10
+ @id ||= resource_via_client.backup_plan_id if resource_via_client
11
+ end
12
+ end
13
+ end