awspec 0.69.1 → 0.70.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 (99) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +13 -1
  3. data/.travis.yml +1 -0
  4. data/Rakefile +10 -1
  5. data/awspec.gemspec +3 -3
  6. data/doc/_resource_types/cloudwatch_logs.md +40 -0
  7. data/doc/_resource_types/ec2_account_attributes.md +8 -0
  8. data/doc/_resource_types/lambda_account_settings.md +10 -0
  9. data/doc/_resource_types/rds_account_attributes.md +8 -0
  10. data/doc/_resource_types/ses_send_quota.md +9 -0
  11. data/doc/contributing.md +10 -0
  12. data/doc/resource_types.md +262 -27
  13. data/lib/awspec/error.rb +2 -0
  14. data/lib/awspec/ext.rb +1 -0
  15. data/lib/awspec/ext/hash.rb +10 -0
  16. data/lib/awspec/generator.rb +6 -0
  17. data/lib/awspec/generator/doc/type.rb +35 -1
  18. data/lib/awspec/generator/doc/type/account.rb +71 -0
  19. data/lib/awspec/generator/doc/type/account_attribute.rb +69 -0
  20. data/lib/awspec/generator/doc/type/account_attribute_base.rb +32 -0
  21. data/lib/awspec/generator/doc/type/base.rb +10 -3
  22. data/lib/awspec/generator/doc/type/cloudwatch_logs.rb +17 -0
  23. data/lib/awspec/generator/doc/type/ec2_account_attributes.rb +17 -0
  24. data/lib/awspec/generator/doc/type/lambda_account_settings.rb +17 -0
  25. data/lib/awspec/generator/doc/type/rds_account_attributes.rb +17 -0
  26. data/lib/awspec/generator/doc/type/ses_send_quota.rb +17 -0
  27. data/lib/awspec/generator/template.rb +38 -1
  28. data/lib/awspec/helper/finder.rb +8 -1
  29. data/lib/awspec/helper/finder/account_attributes.rb +61 -0
  30. data/lib/awspec/helper/finder/cloudwatch_logs.rb +35 -0
  31. data/lib/awspec/helper/type.rb +31 -0
  32. data/lib/awspec/matcher.rb +3 -0
  33. data/lib/awspec/matcher/have_subscription_filter.rb +9 -0
  34. data/lib/awspec/shared_context.rb +8 -0
  35. data/lib/awspec/stub/account.rb +146 -0
  36. data/lib/awspec/stub/cloudwatch_logs.rb +34 -0
  37. data/lib/awspec/stub/ecs.rb +9 -9
  38. data/lib/awspec/stub/ecs_cluster.rb +9 -9
  39. data/lib/awspec/stub/ecs_container_instance.rb +9 -9
  40. data/lib/awspec/toolbox.rb +6 -1
  41. data/lib/awspec/type/account.rb +35 -0
  42. data/lib/awspec/type/account_attribute.rb +28 -0
  43. data/lib/awspec/type/account_attribute_base.rb +4 -0
  44. data/lib/awspec/type/acm.rb +1 -1
  45. data/lib/awspec/type/alb.rb +1 -1
  46. data/lib/awspec/type/ami.rb +1 -1
  47. data/lib/awspec/type/autoscaling_group.rb +3 -2
  48. data/lib/awspec/type/base.rb +6 -25
  49. data/lib/awspec/type/cloudfront_distribution.rb +1 -1
  50. data/lib/awspec/type/cloudtrail.rb +1 -1
  51. data/lib/awspec/type/cloudwatch_alarm.rb +1 -1
  52. data/lib/awspec/type/cloudwatch_event.rb +1 -1
  53. data/lib/awspec/type/cloudwatch_logs.rb +27 -0
  54. data/lib/awspec/type/customer_gateway.rb +1 -1
  55. data/lib/awspec/type/directconnect_virtual_interface.rb +1 -1
  56. data/lib/awspec/type/ebs.rb +1 -1
  57. data/lib/awspec/type/ec2.rb +1 -1
  58. data/lib/awspec/type/ec2_account_attributes.rb +7 -0
  59. data/lib/awspec/type/ecr_repository.rb +1 -1
  60. data/lib/awspec/type/ecs_cluster.rb +1 -1
  61. data/lib/awspec/type/ecs_container_instance.rb +1 -1
  62. data/lib/awspec/type/ecs_service.rb +1 -1
  63. data/lib/awspec/type/ecs_task_definition.rb +1 -1
  64. data/lib/awspec/type/efs.rb +1 -1
  65. data/lib/awspec/type/elasticache.rb +1 -1
  66. data/lib/awspec/type/elasticache_cache_parameter_group.rb +1 -1
  67. data/lib/awspec/type/elasticsearch.rb +1 -1
  68. data/lib/awspec/type/elastictranscoder_pipeline.rb +1 -1
  69. data/lib/awspec/type/elb.rb +3 -2
  70. data/lib/awspec/type/iam_group.rb +1 -1
  71. data/lib/awspec/type/iam_policy.rb +1 -1
  72. data/lib/awspec/type/iam_role.rb +1 -1
  73. data/lib/awspec/type/iam_user.rb +1 -1
  74. data/lib/awspec/type/internet_gateway.rb +1 -1
  75. data/lib/awspec/type/kms.rb +1 -1
  76. data/lib/awspec/type/lambda.rb +1 -1
  77. data/lib/awspec/type/lambda_account_settings.rb +7 -0
  78. data/lib/awspec/type/launch_configuration.rb +1 -1
  79. data/lib/awspec/type/nat_gateway.rb +1 -1
  80. data/lib/awspec/type/network_acl.rb +1 -1
  81. data/lib/awspec/type/network_interface.rb +1 -1
  82. data/lib/awspec/type/rds.rb +1 -1
  83. data/lib/awspec/type/rds_account_attributes.rb +7 -0
  84. data/lib/awspec/type/rds_db_cluster_parameter_group.rb +1 -1
  85. data/lib/awspec/type/rds_db_parameter_group.rb +1 -1
  86. data/lib/awspec/type/resource_base.rb +24 -0
  87. data/lib/awspec/type/route53_hosted_zone.rb +1 -1
  88. data/lib/awspec/type/route_table.rb +1 -1
  89. data/lib/awspec/type/s3_bucket.rb +1 -1
  90. data/lib/awspec/type/security_group.rb +1 -1
  91. data/lib/awspec/type/ses_identity.rb +1 -1
  92. data/lib/awspec/type/ses_send_quota.rb +7 -0
  93. data/lib/awspec/type/subnet.rb +1 -1
  94. data/lib/awspec/type/vpc.rb +1 -1
  95. data/lib/awspec/type/vpn_connection.rb +1 -1
  96. data/lib/awspec/type/vpn_gateway.rb +1 -1
  97. data/lib/awspec/type/waf_web_acl.rb +1 -1
  98. data/lib/awspec/version.rb +1 -1
  99. metadata +36 -8
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8f58f45b2a249eb3fae5d4fe74a9c9aa15b548c6
4
- data.tar.gz: e7d332fb6543ace555ef35c6ab26ac9f301d05fd
3
+ metadata.gz: fbc433c70382704905947b4081e9840c9bf2183d
4
+ data.tar.gz: 4e42d218ba02d6e44682fa77eb26f1d287222684
5
5
  SHA512:
6
- metadata.gz: f2c4b05f4335ba4b133ee5872fc9be38716a7cfababfae2d8eba7282b5dcdc1bb509a481a3751a2c113b902e9e30c6f4f137802ca5e941ddee30b63c2d677520
7
- data.tar.gz: 43ff7acc66916f1469c8539b5dce475a4ea29704afd3e6594f09f1264b6bc0616551f9cffc593336e1016df94b34bd2cbb63e20f7e31f6d71f435cf005f2af2f
6
+ metadata.gz: 4fa1b9088672ee9f3684c7198f0de7a2481d6607dae9e44274dd4fbf4b16f90d5cb7961c6687584db8bf9452d09ef27fa0a4467cab7d7d6fdb5f3a16a99de44d
7
+ data.tar.gz: 7eb06937cf09a4528594844a18b57c12ec42e3d0c365d68ed84c09f6474ef6f3503000b541293b5a049de7918da948e748a592de482fca27748fdcbf117184f7
@@ -16,6 +16,9 @@ Metrics/AbcSize:
16
16
  Metrics/ClassLength:
17
17
  Max: 120
18
18
 
19
+ Metrics/BlockLength:
20
+ Max: 60
21
+
19
22
  Metrics/CyclomaticComplexity:
20
23
  Max: 15
21
24
 
@@ -26,7 +29,7 @@ Metrics/MethodLength:
26
29
  Max: 30
27
30
 
28
31
  Metrics/ModuleLength:
29
- CountComments: false
32
+ CountComments: false
30
33
  Max: 200
31
34
 
32
35
  Metrics/PerceivedComplexity:
@@ -47,6 +50,9 @@ Style/ClassAndModuleChildren:
47
50
  Style/Documentation:
48
51
  Enabled: false
49
52
 
53
+ Style/MethodMissing:
54
+ Enabled: false
55
+
50
56
  Style/MutableConstant:
51
57
  Enabled: false
52
58
 
@@ -56,6 +62,12 @@ Style/MultilineOperationIndentation:
56
62
  Style/MultilineMethodCallBraceLayout:
57
63
  Enabled: false
58
64
 
65
+ Style/NumericLiteralPrefix:
66
+ Enabled: false
67
+
68
+ Style/NumericPredicate:
69
+ Enabled: false
70
+
59
71
  Style/StabbyLambdaParentheses:
60
72
  Enabled: false
61
73
 
@@ -1,5 +1,6 @@
1
1
  language: ruby
2
2
  rvm:
3
+ - 2.4.0
3
4
  - 2.3.3
4
5
  - 2.2.6
5
6
  - 2.1.10
data/Rakefile CHANGED
@@ -16,7 +16,12 @@ end
16
16
  if defined?(RSpec)
17
17
  task spec: 'spec:all'
18
18
  namespace :spec do
19
- task all: ['spec:type', 'spec:core', 'spec:generator_spec', 'spec:generator_doc', 'spec:rubocop']
19
+ task all: ['spec:type',
20
+ 'spec:account',
21
+ 'spec:core',
22
+ 'spec:generator_spec',
23
+ 'spec:generator_doc',
24
+ 'spec:rubocop']
20
25
 
21
26
  task type: types
22
27
 
@@ -26,6 +31,10 @@ if defined?(RSpec)
26
31
  end
27
32
  end
28
33
 
34
+ RSpec::Core::RakeTask.new(:account) do |t|
35
+ t.pattern = 'spec/type/account_spec.rb'
36
+ end
37
+
29
38
  RSpec::Core::RakeTask.new(:core) do |t|
30
39
  t.pattern = 'spec/core/*_spec.rb'
31
40
  end
@@ -22,14 +22,14 @@ Gem::Specification.new do |spec|
22
22
  spec.required_ruby_version = '>= 2.1'
23
23
  spec.add_runtime_dependency 'rspec', '~> 3.0'
24
24
  spec.add_runtime_dependency 'rspec-its'
25
- spec.add_runtime_dependency 'aws-sdk', '>= 2.2', '< 2.8'
25
+ spec.add_runtime_dependency 'aws-sdk', '>= 2.2', '< 2.9'
26
26
  spec.add_runtime_dependency 'awsecrets', '~> 1.8'
27
27
  spec.add_runtime_dependency 'thor'
28
28
  spec.add_runtime_dependency 'activesupport', '~> 4.0'
29
29
  spec.add_runtime_dependency 'term-ansicolor'
30
30
  spec.add_development_dependency 'bundler', '~> 1.9'
31
- spec.add_development_dependency 'rake', '~> 10.0'
32
- spec.add_development_dependency 'rubocop', '~> 0.40.0'
31
+ spec.add_development_dependency 'rake', '~> 12.0'
32
+ spec.add_development_dependency 'rubocop', '~> 0.47.0'
33
33
  spec.add_development_dependency 'octorelease'
34
34
  spec.add_development_dependency 'pry'
35
35
  end
@@ -0,0 +1,40 @@
1
+ ### exist
2
+
3
+ ```ruby
4
+ describe cloudwatch_logs('my-cloudwatch-logs-group') do
5
+ it { should exist }
6
+ end
7
+ ```
8
+
9
+ ### have_log_stream
10
+
11
+ ```ruby
12
+ describe cloudwatch_logs('my-cloudwatch-logs-group') do
13
+ it { should have_log_stream('my-cloudwatch-logs-stream') }
14
+ end
15
+ ```
16
+
17
+ ### have_metric_filter
18
+
19
+ ```ruby
20
+ describe cloudwatch_logs('my-cloudwatch-logs-group') do
21
+ it { should have_metric_filter('my-cloudwatch-logs-metric-filter') }
22
+ end
23
+ ```
24
+
25
+ ### have_subscription_filter
26
+
27
+ ```ruby
28
+ describe cloudwatch_logs('my-cloudwatch-logs-group') do
29
+ it { should have_subscription_filter('my-cloudwatch-logs-subscription-filter') }
30
+ end
31
+ ```
32
+ or
33
+ ```ruby
34
+ describe cloudwatch_logs('my-cloudwatch-logs-group') do
35
+ it do
36
+ should have_subscription_filter('my-cloudwatch-logs-subscription-filter')\
37
+ .filter_pattern('[host, ident, authuser, date, request, status, bytes]')
38
+ end
39
+ end
40
+ ```
@@ -0,0 +1,8 @@
1
+ ### first
2
+
3
+ ```ruby
4
+ describe ec2_account_attributes do
5
+ its(:supported_platforms) { should include 'VPC' }
6
+ its(:max_instances) { should eq 20 }
7
+ end
8
+ ```
@@ -0,0 +1,10 @@
1
+ ### first
2
+
3
+ ```ruby
4
+ describe lambda_account_settings do
5
+ its('total_code_size.limit') { should eq 80_530_636_800 }
6
+ its('total_code_size.usage') { should eq 2_034_651_562 }
7
+ its('function_count.usage') { should eq 8 }
8
+ end
9
+ ```
10
+
@@ -0,0 +1,8 @@
1
+ ### first
2
+
3
+ ```ruby
4
+ describe rds_account_attributes do
5
+ its('DBInstances.used') { should eq 0 }
6
+ its('DBInstances.max') { should eq 40 }
7
+ end
8
+ ```
@@ -0,0 +1,9 @@
1
+ ### first
2
+
3
+ ```ruby
4
+ describe ses_send_quota do
5
+ its(:max_24_hour_send) { should eq 200.0 }
6
+ its(:max_send_rate) { should eq 1.0 }
7
+ its(:sent_last_24_hours) { should eq 1.0 }
8
+ end
9
+ ```
@@ -10,6 +10,16 @@
10
10
  6. Push to the branch (`git push origin add-type-redshift`)
11
11
  7. Create a new Pull Request
12
12
 
13
+ ## Add new account attribute type (ex. CloudFormation::Client#describe_account_attributes )
14
+
15
+ 1. Create your feature branch (`git checkout -b add-type-cf-limit`)
16
+ 2. Generate template files (`bundle exec bin/toolbox template cloudformation_account_attributes -a`) **with -a option**
17
+ 3. Fill files with code.
18
+ 4. Generate [doc/resource_types.md](doc/resource_types.md) (`bundle exec bin/toolbox docgen > doc/resource_types.md`)
19
+ 5. Run test (`bundle exec rake spec`)
20
+ 6. Push to the branch (`git push origin add-type-redshift`)
21
+ 7. Create a new Pull Request
22
+
13
23
  ## Append resource type document (ex. VPC resource `be_available`)
14
24
 
15
25
  1. Create vpc.md (`touch doc/_resource_types/vpc.md`)
@@ -1,11 +1,15 @@
1
1
  # Resource Types
2
2
 
3
- [alb](#alb)
3
+ [acm](#acm)
4
+ | [alb](#alb)
4
5
  | [ami](#ami)
5
6
  | [autoscaling_group](#autoscaling_group)
7
+ | [cloudfront_distribution](#cloudfront_distribution)
6
8
  | [cloudtrail](#cloudtrail)
7
9
  | [cloudwatch_alarm](#cloudwatch_alarm)
8
10
  | [cloudwatch_event](#cloudwatch_event)
11
+ | [cloudwatch_logs](#cloudwatch_logs)
12
+ | [customer_gateway](#customer_gateway)
9
13
  | [directconnect_virtual_interface](#directconnect_virtual_interface)
10
14
  | [ebs](#ebs)
11
15
  | [ec2](#ec2)
@@ -18,11 +22,13 @@
18
22
  | [elasticache](#elasticache)
19
23
  | [elasticache_cache_parameter_group](#elasticache_cache_parameter_group)
20
24
  | [elasticsearch](#elasticsearch)
25
+ | [elastictranscoder_pipeline](#elastictranscoder_pipeline)
21
26
  | [elb](#elb)
22
27
  | [iam_group](#iam_group)
23
28
  | [iam_policy](#iam_policy)
24
29
  | [iam_role](#iam_role)
25
30
  | [iam_user](#iam_user)
31
+ | [internet_gateway](#internet_gateway)
26
32
  | [kms](#kms)
27
33
  | [lambda](#lambda)
28
34
  | [launch_configuration](#launch_configuration)
@@ -39,14 +45,10 @@
39
45
  | [ses_identity](#ses_identity)
40
46
  | [subnet](#subnet)
41
47
  | [vpc](#vpc)
42
- | [cloudfront_distribution](#cloudfront_distribution)
43
- | [elastictranscoder_pipeline](#elastictranscoder_pipeline)
44
- | [waf_web_acl](#waf_web_acl)
45
- | [customer_gateway](#customer_gateway)
46
- | [vpn_gateway](#vpn_gateway)
47
48
  | [vpn_connection](#vpn_connection)
48
- | [internet_gateway](#internet_gateway)
49
- | [acm](#acm)
49
+ | [vpn_gateway](#vpn_gateway)
50
+ | [waf_web_acl](#waf_web_acl)
51
+ | [account](#account)
50
52
 
51
53
  ## <a name="alb">alb</a>
52
54
 
@@ -54,7 +56,7 @@ ALB resource type.
54
56
 
55
57
  ### exist
56
58
 
57
- ### its(:load_balancer_arn), its(:dns_name), its(:canonical_hosted_zone_id), its(:created_time), its(:load_balancer_name), its(:scheme), its(:vpc_id), its(:state), its(:type), its(:ip_address_type)
59
+ ### its(:load_balancer_arn), its(:dns_name), its(:canonical_hosted_zone_id), its(:created_time), its(:load_balancer_name), its(:scheme), its(:vpc_id), its(:state), its(:type), its(:availability_zones), its(:security_groups), its(:ip_address_type)
58
60
  ## <a name="ami">ami</a>
59
61
 
60
62
  AMI resource type.
@@ -77,7 +79,7 @@ end
77
79
  ```
78
80
 
79
81
 
80
- ### its(:image_id), its(:image_location), its(:state), its(:owner_id), its(:creation_date), its(:public), its(:architecture), its(:image_type), its(:kernel_id), its(:ramdisk_id), its(:platform), its(:sriov_net_support), its(:ena_support), its(:state_reason), its(:image_owner_alias), its(:name), its(:description), its(:root_device_type), its(:root_device_name), its(:virtualization_type), its(:hypervisor)
82
+ ### its(:image_id), its(:image_location), its(:state), its(:owner_id), its(:creation_date), its(:public), its(:architecture), its(:image_type), its(:kernel_id), its(:ramdisk_id), its(:platform), its(:sriov_net_support), its(:ena_support), its(:state_reason), its(:image_owner_alias), its(:name), its(:description), its(:root_device_type), its(:root_device_name), its(:virtualization_type), its(:tags), its(:hypervisor)
81
83
  ### :unlock: Advanced use
82
84
 
83
85
  `ami` can use `Aws::EC2::Image` resource (see http://docs.aws.amazon.com/sdkforruby/api/Aws/EC2/Image.html).
@@ -121,7 +123,7 @@ describe autoscaling_group('my-auto-scaling-group') do
121
123
  end
122
124
  ```
123
125
 
124
- ### its(:auto_scaling_group_name), its(:auto_scaling_group_arn), its(:launch_configuration_name), its(:min_size), its(:max_size), its(:desired_capacity), its(:default_cooldown), its(:health_check_type), its(:health_check_grace_period), its(:created_time), its(:placement_group), its(:vpc_zone_identifier), its(:status), its(:new_instances_protected_from_scale_in)
126
+ ### its(:auto_scaling_group_name), its(:auto_scaling_group_arn), its(:launch_configuration_name), its(:min_size), its(:max_size), its(:desired_capacity), its(:default_cooldown), its(:availability_zones), its(:load_balancer_names), its(:target_group_arns), its(:health_check_type), its(:health_check_grace_period), its(:created_time), its(:suspended_processes), its(:placement_group), its(:vpc_zone_identifier), its(:enabled_metrics), its(:status), its(:termination_policies), its(:new_instances_protected_from_scale_in)
125
127
  ## <a name="cloudtrail">cloudtrail</a>
126
128
 
127
129
  Cloudtrail resource type.
@@ -219,7 +221,7 @@ describe cloudwatch_alarm('my-cloudwatch-alarm') do
219
221
  end
220
222
  ```
221
223
 
222
- ### its(:alarm_name), its(:alarm_arn), its(:alarm_description), its(:alarm_configuration_updated_timestamp), its(:actions_enabled), its(:state_value), its(:state_reason), its(:state_reason_data), its(:state_updated_timestamp), its(:metric_name), its(:namespace), its(:statistic), its(:extended_statistic), its(:period), its(:unit), its(:evaluation_periods), its(:threshold), its(:comparison_operator)
224
+ ### its(:alarm_name), its(:alarm_arn), its(:alarm_description), its(:alarm_configuration_updated_timestamp), its(:actions_enabled), its(:ok_actions), its(:alarm_actions), its(:insufficient_data_actions), its(:state_value), its(:state_reason), its(:state_reason_data), its(:state_updated_timestamp), its(:metric_name), its(:namespace), its(:statistic), its(:extended_statistic), its(:period), its(:unit), its(:evaluation_periods), its(:threshold), its(:comparison_operator)
223
225
  ## <a name="cloudwatch_event">cloudwatch_event</a>
224
226
 
225
227
  CloudwatchEvent resource type.
@@ -266,7 +268,7 @@ describe directconnect_virtual_interface('my-directconnect-virtual-interface') d
266
268
  end
267
269
  ```
268
270
 
269
- ### its(:owner_account), its(:virtual_interface_id), its(:location), its(:connection_id), its(:virtual_interface_type), its(:virtual_interface_name), its(:vlan), its(:asn), its(:auth_key), its(:amazon_address), its(:customer_address), its(:address_family), its(:virtual_interface_state), its(:customer_router_config), its(:virtual_gateway_id), its(:bgp_peers)
271
+ ### its(:owner_account), its(:virtual_interface_id), its(:location), its(:connection_id), its(:virtual_interface_type), its(:virtual_interface_name), its(:vlan), its(:asn), its(:auth_key), its(:amazon_address), its(:customer_address), its(:address_family), its(:virtual_interface_state), its(:customer_router_config), its(:virtual_gateway_id), its(:route_filter_prefixes), its(:bgp_peers)
270
272
  ## <a name="ebs">ebs</a>
271
273
 
272
274
  EBS resource type.
@@ -472,7 +474,7 @@ end
472
474
  ```
473
475
 
474
476
 
475
- ### its(:instance_id), its(:image_id), its(:private_dns_name), its(:public_dns_name), its(:state_transition_reason), its(:key_name), its(:ami_launch_index), its(:instance_type), its(:launch_time), its(:placement), its(:kernel_id), its(:ramdisk_id), its(:platform), its(:monitoring), its(:subnet_id), its(:vpc_id), its(:private_ip_address), its(:public_ip_address), its(:state_reason), its(:architecture), its(:root_device_type), its(:root_device_name), its(:virtualization_type), its(:instance_lifecycle), its(:spot_instance_request_id), its(:client_token), its(:source_dest_check), its(:hypervisor), its(:ebs_optimized), its(:sriov_net_support), its(:ena_support)
477
+ ### its(:instance_id), its(:image_id), its(:private_dns_name), its(:public_dns_name), its(:state_transition_reason), its(:key_name), its(:ami_launch_index), its(:product_codes), its(:instance_type), its(:launch_time), its(:placement), its(:kernel_id), its(:ramdisk_id), its(:platform), its(:monitoring), its(:subnet_id), its(:vpc_id), its(:private_ip_address), its(:public_ip_address), its(:state_reason), its(:architecture), its(:root_device_type), its(:root_device_name), its(:virtualization_type), its(:instance_lifecycle), its(:spot_instance_request_id), its(:client_token), its(:source_dest_check), its(:hypervisor), its(:ebs_optimized), its(:sriov_net_support), its(:ena_support)
476
478
  ### :unlock: Advanced use
477
479
 
478
480
  `ec2` can use `Aws::EC2::Instance` resource (see http://docs.aws.amazon.com/sdkforruby/api/Aws/EC2/Instance.html).
@@ -575,7 +577,7 @@ describe ecs_service('my-ecs-service') do
575
577
  end
576
578
  ```
577
579
 
578
- ### its(:service_arn), its(:service_name), its(:cluster_arn), its(:status), its(:desired_count), its(:running_count), its(:pending_count), its(:task_definition), its(:role_arn), its(:created_at), its(:placement_constraints), its(:placement_strategy)
580
+ ### its(:service_arn), its(:service_name), its(:cluster_arn), its(:load_balancers), its(:status), its(:desired_count), its(:running_count), its(:pending_count), its(:task_definition), its(:role_arn), its(:created_at), its(:placement_constraints), its(:placement_strategy)
579
581
  ## <a name="ecs_task_definition">ecs_task_definition</a>
580
582
 
581
583
  ECS Task Definition resource type.
@@ -597,7 +599,7 @@ describe ecs_task_definition('my-ecs-task-definition') do
597
599
  end
598
600
  ```
599
601
 
600
- ### its(:task_definition_arn), its(:family), its(:task_role_arn), its(:network_mode), its(:revision), its(:status), its(:requires_attributes), its(:placement_constraints)
602
+ ### its(:task_definition_arn), its(:family), its(:task_role_arn), its(:network_mode), its(:revision), its(:volumes), its(:status), its(:requires_attributes), its(:placement_constraints)
601
603
  ## <a name="efs">efs</a>
602
604
 
603
605
  EFS resource type.
@@ -677,7 +679,7 @@ describe elasticache('my-rep-group-001') do
677
679
  end
678
680
  ```
679
681
 
680
- ### its(:cache_cluster_id), its(:configuration_endpoint), its(:client_download_landing_page), its(:cache_node_type), its(:engine), its(:engine_version), its(:cache_cluster_status), its(:num_cache_nodes), its(:preferred_availability_zone), its(:cache_cluster_create_time), its(:preferred_maintenance_window), its(:notification_configuration), its(:cache_subnet_group_name), its(:auto_minor_version_upgrade), its(:replication_group_id), its(:snapshot_retention_limit), its(:snapshot_window)
682
+ ### its(:cache_cluster_id), its(:configuration_endpoint), its(:client_download_landing_page), its(:cache_node_type), its(:engine), its(:engine_version), its(:cache_cluster_status), its(:num_cache_nodes), its(:preferred_availability_zone), its(:cache_cluster_create_time), its(:preferred_maintenance_window), its(:notification_configuration), its(:cache_security_groups), its(:cache_subnet_group_name), its(:cache_nodes), its(:auto_minor_version_upgrade), its(:replication_group_id), its(:snapshot_retention_limit), its(:snapshot_window)
681
683
  ## <a name="elasticache_cache_parameter_group">elasticache_cache_parameter_group</a>
682
684
 
683
685
  ElasticacheCacheParameterGroup resource type.
@@ -816,7 +818,7 @@ describe elb('my-elb') do
816
818
  end
817
819
  ```
818
820
 
819
- ### its(:health_check_target), its(:health_check_interval), its(:health_check_timeout), its(:health_check_unhealthy_threshold), its(:health_check_healthy_threshold), its(:load_balancer_name), its(:dns_name), its(:canonical_hosted_zone_name), its(:canonical_hosted_zone_name_id), its(:vpc_id), its(:created_time), its(:scheme)
821
+ ### its(:health_check_target), its(:health_check_interval), its(:health_check_timeout), its(:health_check_unhealthy_threshold), its(:health_check_healthy_threshold), its(:load_balancer_name), its(:dns_name), its(:canonical_hosted_zone_name), its(:canonical_hosted_zone_name_id), its(:backend_server_descriptions), its(:availability_zones), its(:subnets), its(:vpc_id), its(:security_groups), its(:created_time), its(:scheme)
820
822
  ## <a name="iam_group">iam_group</a>
821
823
 
822
824
  IamGroup resource type.
@@ -1214,7 +1216,7 @@ describe launch_configuration('my-lc') do
1214
1216
  end
1215
1217
  ```
1216
1218
 
1217
- ### its(:launch_configuration_name), its(:launch_configuration_arn), its(:image_id), its(:key_name), its(:classic_link_vpc_id), its(:user_data), its(:instance_type), its(:kernel_id), its(:ramdisk_id), its(:spot_price), its(:iam_instance_profile), its(:created_time), its(:ebs_optimized), its(:associate_public_ip_address), its(:placement_tenancy)
1219
+ ### its(:launch_configuration_name), its(:launch_configuration_arn), its(:image_id), its(:key_name), its(:security_groups), its(:classic_link_vpc_id), its(:classic_link_vpc_security_groups), its(:user_data), its(:instance_type), its(:kernel_id), its(:ramdisk_id), its(:block_device_mappings), its(:spot_price), its(:iam_instance_profile), its(:created_time), its(:ebs_optimized), its(:associate_public_ip_address), its(:placement_tenancy)
1218
1220
  ## <a name="nat_gateway">nat_gateway</a>
1219
1221
 
1220
1222
  NatGateway resource type.
@@ -1405,7 +1407,7 @@ describe network_interface('eni-12ab3cde') do
1405
1407
  end
1406
1408
  ```
1407
1409
 
1408
- ### its(:network_interface_id), its(:subnet_id), its(:vpc_id), its(:availability_zone), its(:description), its(:owner_id), its(:requester_id), its(:requester_managed), its(:status), its(:mac_address), its(:private_ip_address), its(:private_dns_name), its(:source_dest_check), its(:association), its(:interface_type)
1410
+ ### its(:network_interface_id), its(:subnet_id), its(:vpc_id), its(:availability_zone), its(:description), its(:owner_id), its(:requester_id), its(:requester_managed), its(:status), its(:mac_address), its(:private_ip_address), its(:private_dns_name), its(:source_dest_check), its(:association), its(:ipv_6_addresses), its(:interface_type)
1409
1411
  ## <a name="rds">rds</a>
1410
1412
 
1411
1413
  RDS resource type.
@@ -1494,7 +1496,7 @@ end
1494
1496
  ```
1495
1497
 
1496
1498
 
1497
- ### its(:vpc_id), its(:db_instance_identifier), its(:db_instance_class), its(:engine), its(:db_instance_status), its(:master_username), its(:db_name), its(:endpoint), its(:allocated_storage), its(:instance_create_time), its(:preferred_backup_window), its(:backup_retention_period), its(:availability_zone), its(:preferred_maintenance_window), its(:pending_modified_values), its(:latest_restorable_time), its(:multi_az), its(:engine_version), its(:auto_minor_version_upgrade), its(:read_replica_source_db_instance_identifier), its(:license_model), its(:iops), its(:character_set_name), its(:secondary_availability_zone), its(:publicly_accessible), its(:storage_type), its(:tde_credential_arn), its(:db_instance_port), its(:db_cluster_identifier), its(:storage_encrypted), its(:kms_key_id), its(:dbi_resource_id), its(:ca_certificate_identifier), its(:copy_tags_to_snapshot), its(:monitoring_interval), its(:enhanced_monitoring_resource_arn), its(:monitoring_role_arn), its(:promotion_tier), its(:db_instance_arn), its(:timezone)
1499
+ ### its(:vpc_id), its(:db_instance_identifier), its(:db_instance_class), its(:engine), its(:db_instance_status), its(:master_username), its(:db_name), its(:endpoint), its(:allocated_storage), its(:instance_create_time), its(:preferred_backup_window), its(:backup_retention_period), its(:db_security_groups), its(:availability_zone), its(:preferred_maintenance_window), its(:pending_modified_values), its(:latest_restorable_time), its(:multi_az), its(:engine_version), its(:auto_minor_version_upgrade), its(:read_replica_source_db_instance_identifier), its(:read_replica_db_instance_identifiers), its(:read_replica_db_cluster_identifiers), its(:license_model), its(:iops), its(:character_set_name), its(:secondary_availability_zone), its(:publicly_accessible), its(:status_infos), its(:storage_type), its(:tde_credential_arn), its(:db_instance_port), its(:db_cluster_identifier), its(:storage_encrypted), its(:kms_key_id), its(:dbi_resource_id), its(:ca_certificate_identifier), its(:domain_memberships), its(:copy_tags_to_snapshot), its(:monitoring_interval), its(:enhanced_monitoring_resource_arn), its(:monitoring_role_arn), its(:promotion_tier), its(:db_instance_arn), its(:timezone)
1498
1500
  ### :unlock: Advanced use
1499
1501
 
1500
1502
  `rds` can use `Aws::RDS::DBInstance` resource (see http://docs.aws.amazon.com/sdkforruby/api/Aws/RDS/DBInstance.html).
@@ -1630,7 +1632,7 @@ end
1630
1632
  ```
1631
1633
 
1632
1634
 
1633
- ### its(:route_table_id), its(:vpc_id)
1635
+ ### its(:route_table_id), its(:vpc_id), its(:propagating_vgws)
1634
1636
  ### :unlock: Advanced use
1635
1637
 
1636
1638
  `route_table` can use `Aws::EC2::RouteTable` resource (see http://docs.aws.amazon.com/sdkforruby/api/Aws/EC2/RouteTable.html).
@@ -1907,7 +1909,7 @@ end
1907
1909
  ```
1908
1910
 
1909
1911
 
1910
- ### its(:subnet_id), its(:state), its(:vpc_id), its(:cidr_block), its(:assign_ipv_6_address_on_creation), its(:available_ip_address_count), its(:availability_zone), its(:default_for_az), its(:map_public_ip_on_launch)
1912
+ ### its(:subnet_id), its(:state), its(:vpc_id), its(:cidr_block), its(:ipv_6_cidr_block_association_set), its(:assign_ipv_6_address_on_creation), its(:available_ip_address_count), its(:availability_zone), its(:default_for_az), its(:map_public_ip_on_launch)
1911
1913
  ### :unlock: Advanced use
1912
1914
 
1913
1915
  `subnet` can use `Aws::EC2::Subnet` resource (see http://docs.aws.amazon.com/sdkforruby/api/Aws/EC2/Subnet.html).
@@ -1977,7 +1979,7 @@ end
1977
1979
  ```
1978
1980
 
1979
1981
 
1980
- ### its(:vpc_id), its(:state), its(:cidr_block), its(:dhcp_options_id), its(:instance_tenancy), its(:is_default)
1982
+ ### its(:vpc_id), its(:state), its(:cidr_block), its(:dhcp_options_id), its(:instance_tenancy), its(:is_default), its(:ipv_6_cidr_block_association_set)
1981
1983
  ### :unlock: Advanced use
1982
1984
 
1983
1985
  `vpc` can use `Aws::EC2::Vpc` resource (see http://docs.aws.amazon.com/sdkforruby/api/Aws/EC2/Vpc.html).
@@ -2113,7 +2115,7 @@ end
2113
2115
  ```
2114
2116
 
2115
2117
 
2116
- ### its(:customer_gateway_id), its(:state), its(:type), its(:ip_address), its(:bgp_asn)
2118
+ ### its(:customer_gateway_id), its(:state), its(:type), its(:ip_address), its(:bgp_asn), its(:tags)
2117
2119
  ## <a name="vpn_gateway">vpn_gateway</a>
2118
2120
 
2119
2121
  VpnGateway resource type.
@@ -2145,7 +2147,7 @@ end
2145
2147
  ```
2146
2148
 
2147
2149
 
2148
- ### its(:vpn_gateway_id), its(:state), its(:type), its(:availability_zone)
2150
+ ### its(:vpn_gateway_id), its(:state), its(:type), its(:availability_zone), its(:vpc_attachments), its(:tags)
2149
2151
  ## <a name="vpn_connection">vpn_connection</a>
2150
2152
 
2151
2153
  VpnConnection resource type.
@@ -2177,7 +2179,7 @@ end
2177
2179
  ```
2178
2180
 
2179
2181
 
2180
- ### its(:vpn_connection_id), its(:state), its(:customer_gateway_configuration), its(:type), its(:customer_gateway_id), its(:vpn_gateway_id), its(:options)
2182
+ ### its(:vpn_connection_id), its(:state), its(:customer_gateway_configuration), its(:type), its(:customer_gateway_id), its(:vpn_gateway_id), its(:tags), its(:vgw_telemetry), its(:options), its(:routes)
2181
2183
  ## <a name="internet_gateway">internet_gateway</a>
2182
2184
 
2183
2185
  InternetGateway resource type.
@@ -2233,3 +2235,236 @@ end
2233
2235
  ### be_pending_validation, be_issued, be_inactive, be_expired, be_validation_timed_out, be_revoked, be_failed
2234
2236
 
2235
2237
  ### its(:certificate_arn), its(:domain_name), its(:subject_alternative_names), its(:domain_validation_options), its(:serial), its(:subject), its(:issuer), its(:created_at), its(:issued_at), its(:imported_at), its(:status), its(:revoked_at), its(:revocation_reason), its(:not_before), its(:not_after), its(:key_algorithm), its(:signature_algorithm), its(:in_use_by), its(:failure_reason), its(:type), its(:renewal_summary)
2238
+ ## <a name="cloudwatch_logs">cloudwatch_logs</a>
2239
+
2240
+ CloudwatchLogs resource type.
2241
+
2242
+ ### exist
2243
+
2244
+ ```ruby
2245
+ describe cloudwatch_logs('my-cloudwatch-logs-group') do
2246
+ it { should exist }
2247
+ end
2248
+ ```
2249
+
2250
+
2251
+ ### have_log_stream
2252
+
2253
+ ```ruby
2254
+ describe cloudwatch_logs('my-cloudwatch-logs-group') do
2255
+ it { should have_log_stream('my-cloudwatch-logs-stream') }
2256
+ end
2257
+ ```
2258
+
2259
+
2260
+ ### have_metric_filter
2261
+
2262
+ ```ruby
2263
+ describe cloudwatch_logs('my-cloudwatch-logs-group') do
2264
+ it { should have_metric_filter('my-cloudwatch-logs-metric-filter') }
2265
+ end
2266
+ ```
2267
+
2268
+
2269
+ ### have_subscription_filter
2270
+
2271
+ ```ruby
2272
+ describe cloudwatch_logs('my-cloudwatch-logs-group') do
2273
+ it { should have_subscription_filter('my-cloudwatch-logs-subscription-filter') }
2274
+ end
2275
+ ```
2276
+ or
2277
+ ```ruby
2278
+ describe cloudwatch_logs('my-cloudwatch-logs-group') do
2279
+ it do
2280
+ should have_subscription_filter('my-cloudwatch-logs-subscription-filter')\
2281
+ .filter_pattern('[host, ident, authuser, date, request, status, bytes]')
2282
+ end
2283
+ end
2284
+ ```
2285
+
2286
+ ### its(:log_group_name), its(:creation_time), its(:retention_in_days), its(:metric_filter_count), its(:arn), its(:stored_bytes)
2287
+ # Account and Attributes
2288
+
2289
+ ## <a name="account">account</a>
2290
+
2291
+ Account resource type.
2292
+
2293
+ ```ruby
2294
+ describe account do
2295
+ its(:user_id) { should eq 'AKIAI44QH8DHBEXAMPLE' }
2296
+ its(:account) { should eq '123456789012' }
2297
+ its(:arn) { should eq 'arn:aws:iam::123456789012:user/Alice' }
2298
+ its('ec2.supported_platforms') { should eq ["EC2", "VPC"] }
2299
+ its('ec2.vpc_max_security_groups_per_interface') { should eq 5 }
2300
+ its('ec2.max_elastic_ips') { should eq 5 }
2301
+ its('ec2.max_instances') { should eq 20 }
2302
+ its('ec2.vpc_max_elastic_ips') { should eq 5 }
2303
+ its('ec2.default_vpc') { should eq 'none' }
2304
+ its('rds.DBInstances.used') { should eq 0 }
2305
+ its('rds.DBInstances.max') { should eq 40 }
2306
+ its('rds.ReservedDBInstances.used') { should eq 0 }
2307
+ its('rds.ReservedDBInstances.max') { should eq 40 }
2308
+ its('rds.AllocatedStorage.used') { should eq 0 }
2309
+ its('rds.AllocatedStorage.max') { should eq 100000 }
2310
+ its('rds.DBSecurityGroups.used') { should eq 0 }
2311
+ its('rds.DBSecurityGroups.max') { should eq 25 }
2312
+ its('rds.AuthorizationsPerDBSecurityGroup.used') { should eq 0 }
2313
+ its('rds.AuthorizationsPerDBSecurityGroup.max') { should eq 20 }
2314
+ its('rds.DBParameterGroups.used') { should eq 1 }
2315
+ its('rds.DBParameterGroups.max') { should eq 50 }
2316
+ its('rds.ManualSnapshots.used') { should eq 0 }
2317
+ its('rds.ManualSnapshots.max') { should eq 100 }
2318
+ its('rds.EventSubscriptions.used') { should eq 0 }
2319
+ its('rds.EventSubscriptions.max') { should eq 20 }
2320
+ its('rds.DBSubnetGroups.used') { should eq 1 }
2321
+ its('rds.DBSubnetGroups.max') { should eq 50 }
2322
+ its('rds.OptionGroups.used') { should eq 0 }
2323
+ its('rds.OptionGroups.max') { should eq 20 }
2324
+ its('rds.SubnetsPerDBSubnetGroup.used') { should eq 2 }
2325
+ its('rds.SubnetsPerDBSubnetGroup.max') { should eq 20 }
2326
+ its('rds.ReadReplicasPerMaster.used') { should eq 0 }
2327
+ its('rds.ReadReplicasPerMaster.max') { should eq 5 }
2328
+ its('rds.DBClusters.used') { should eq 0 }
2329
+ its('rds.DBClusters.max') { should eq 40 }
2330
+ its('rds.DBClusterParameterGroups.used') { should eq 0 }
2331
+ its('rds.DBClusterParameterGroups.max') { should eq 50 }
2332
+ its('rds.DBClusterRoles.used') { should eq 0 }
2333
+ its('rds.DBClusterRoles.max') { should eq 5 }
2334
+ its('lambda.total_code_size.limit') { should eq 80530636800 }
2335
+ its('lambda.total_code_size.usage') { should eq 2034651562 }
2336
+ its('lambda.code_size_unzipped.limit') { should eq 262144000 }
2337
+ its('lambda.code_size_zipped.limit') { should eq 52428800 }
2338
+ its('lambda.concurrent_executions.limit') { should eq 200 }
2339
+ its('lambda.function_count.usage') { should eq 8 }
2340
+ its('ses.max_24_hour_send') { should eq 200.0 }
2341
+ its('ses.max_send_rate') { should eq 1.0 }
2342
+ its('ses.sent_last_24_hours') { should eq 1.0 }
2343
+ end
2344
+ ```
2345
+
2346
+
2347
+ ## :unlock: Another way: Test with account_attribute type
2348
+
2349
+ ## <a name="account_attribute">account_attribute</a>
2350
+
2351
+ Account Attribute resource type.
2352
+
2353
+ ```ruby
2354
+ describe account_attribute('ec2') do
2355
+ its('supported_platforms') { should eq ["EC2", "VPC"] }
2356
+ its('vpc_max_security_groups_per_interface') { should eq 5 }
2357
+ its('max_elastic_ips') { should eq 5 }
2358
+ its('max_instances') { should eq 20 }
2359
+ its('vpc_max_elastic_ips') { should eq 5 }
2360
+ its('default_vpc') { should eq 'none' }
2361
+ end
2362
+
2363
+ describe account_attribute('rds') do
2364
+ its('DBInstances.used') { should eq 0 }
2365
+ its('DBInstances.max') { should eq 40 }
2366
+ its('ReservedDBInstances.used') { should eq 0 }
2367
+ its('ReservedDBInstances.max') { should eq 40 }
2368
+ its('AllocatedStorage.used') { should eq 0 }
2369
+ its('AllocatedStorage.max') { should eq 100000 }
2370
+ its('DBSecurityGroups.used') { should eq 0 }
2371
+ its('DBSecurityGroups.max') { should eq 25 }
2372
+ its('AuthorizationsPerDBSecurityGroup.used') { should eq 0 }
2373
+ its('AuthorizationsPerDBSecurityGroup.max') { should eq 20 }
2374
+ its('DBParameterGroups.used') { should eq 1 }
2375
+ its('DBParameterGroups.max') { should eq 50 }
2376
+ its('ManualSnapshots.used') { should eq 0 }
2377
+ its('ManualSnapshots.max') { should eq 100 }
2378
+ its('EventSubscriptions.used') { should eq 0 }
2379
+ its('EventSubscriptions.max') { should eq 20 }
2380
+ its('DBSubnetGroups.used') { should eq 1 }
2381
+ its('DBSubnetGroups.max') { should eq 50 }
2382
+ its('OptionGroups.used') { should eq 0 }
2383
+ its('OptionGroups.max') { should eq 20 }
2384
+ its('SubnetsPerDBSubnetGroup.used') { should eq 2 }
2385
+ its('SubnetsPerDBSubnetGroup.max') { should eq 20 }
2386
+ its('ReadReplicasPerMaster.used') { should eq 0 }
2387
+ its('ReadReplicasPerMaster.max') { should eq 5 }
2388
+ its('DBClusters.used') { should eq 0 }
2389
+ its('DBClusters.max') { should eq 40 }
2390
+ its('DBClusterParameterGroups.used') { should eq 0 }
2391
+ its('DBClusterParameterGroups.max') { should eq 50 }
2392
+ its('DBClusterRoles.used') { should eq 0 }
2393
+ its('DBClusterRoles.max') { should eq 5 }
2394
+ end
2395
+
2396
+ describe account_attribute('lambda') do
2397
+ its('total_code_size.limit') { should eq 80530636800 }
2398
+ its('total_code_size.usage') { should eq 2034651562 }
2399
+ its('code_size_unzipped.limit') { should eq 262144000 }
2400
+ its('code_size_zipped.limit') { should eq 52428800 }
2401
+ its('concurrent_executions.limit') { should eq 200 }
2402
+ its('function_count.usage') { should eq 8 }
2403
+ end
2404
+
2405
+ describe account_attribute('ses') do
2406
+ its('max_24_hour_send') { should eq 200.0 }
2407
+ its('max_send_rate') { should eq 1.0 }
2408
+ its('sent_last_24_hours') { should eq 1.0 }
2409
+ end
2410
+
2411
+ ```
2412
+
2413
+
2414
+ ## :unlock: Another way: Test with separated resource types
2415
+
2416
+ [ec2_account_attributes](#ec2_account_attributes)
2417
+ | [rds_account_attributes](#rds_account_attributes)
2418
+ | [lambda_account_settings](#lambda_account_settings)
2419
+ | [ses_send_quota](#ses_send_quota)
2420
+ ## <a name="ec2_account_attributes">ec2_account_attributes</a>
2421
+
2422
+ Ec2AccountAttributes account attributes.
2423
+
2424
+ ```ruby
2425
+ describe ec2_account_attributes do
2426
+ its(:supported_platforms) { should include 'VPC' }
2427
+ its(:max_instances) { should eq 20 }
2428
+ end
2429
+ ```
2430
+
2431
+ ### its(:supported_platforms), its(:vpc_max_security_groups_per_interface), its(:max_elastic_ips), its(:max_instances), its(:vpc_max_elastic_ips), its(:default_vpc)
2432
+ ## <a name="rds_account_attributes">rds_account_attributes</a>
2433
+
2434
+ RdsAccountAttributes account attributes.
2435
+
2436
+ ```ruby
2437
+ describe rds_account_attributes do
2438
+ its('DBInstances.used') { should eq 0 }
2439
+ its('DBInstances.max') { should eq 40 }
2440
+ end
2441
+ ```
2442
+
2443
+
2444
+ ## <a name="lambda_account_settings">lambda_account_settings</a>
2445
+
2446
+ LambdaAccountSettings account attributes.
2447
+
2448
+ ```ruby
2449
+ describe lambda_account_settings do
2450
+ its('total_code_size.limit') { should eq 80_530_636_800 }
2451
+ its('total_code_size.usage') { should eq 2_034_651_562 }
2452
+ its('function_count.usage') { should eq 8 }
2453
+ end
2454
+ ```
2455
+
2456
+
2457
+
2458
+ ## <a name="ses_send_quota">ses_send_quota</a>
2459
+
2460
+ SesSendQuota account attributes.
2461
+
2462
+ ```ruby
2463
+ describe ses_send_quota do
2464
+ its(:max_24_hour_send) { should eq 200.0 }
2465
+ its(:max_send_rate) { should eq 1.0 }
2466
+ its(:sent_last_24_hours) { should eq 1.0 }
2467
+ end
2468
+ ```
2469
+
2470
+ ### its(:max_24_hour_send), its(:max_send_rate), its(:sent_last_24_hours)