fog-aws 3.9.0 → 3.13.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (292) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +251 -17
  3. data/README.md +1 -1
  4. data/fog-aws.gemspec +6 -6
  5. data/lib/fog/aws/compute.rb +6 -3
  6. data/lib/fog/aws/credential_fetcher.rb +14 -7
  7. data/lib/fog/aws/models/compute/security_group.rb +13 -5
  8. data/lib/fog/aws/models/compute/server.rb +2 -0
  9. data/lib/fog/aws/models/storage/file.rb +21 -17
  10. data/lib/fog/aws/parsers/compute/describe_security_groups.rb +18 -4
  11. data/lib/fog/aws/requests/compute/authorize_security_group_ingress.rb +15 -0
  12. data/lib/fog/aws/requests/compute/create_network_interface.rb +7 -4
  13. data/lib/fog/aws/requests/compute/create_subnet.rb +3 -3
  14. data/lib/fog/aws/requests/compute/describe_security_groups.rb +2 -0
  15. data/lib/fog/aws/requests/compute/run_instances.rb +44 -0
  16. data/lib/fog/aws/requests/storage/delete_multiple_objects.rb +18 -8
  17. data/lib/fog/aws/requests/storage/get_object.rb +1 -1
  18. data/lib/fog/aws/storage.rb +42 -3
  19. data/lib/fog/aws/version.rb +1 -1
  20. metadata +11 -297
  21. data/.gitignore +0 -17
  22. data/.travis.yml +0 -124
  23. data/Gemfile +0 -14
  24. data/Rakefile +0 -14
  25. data/bin/console +0 -14
  26. data/bin/setup +0 -8
  27. data/gemfiles/Gemfile-edge +0 -14
  28. data/gemfiles/Gemfile-ruby-2.0 +0 -7
  29. data/stale.yml +0 -17
  30. data/tests/credentials_tests.rb +0 -149
  31. data/tests/helper.rb +0 -29
  32. data/tests/helpers/collection_helper.rb +0 -90
  33. data/tests/helpers/compute/flavors_helper.rb +0 -28
  34. data/tests/helpers/compute/server_helper.rb +0 -23
  35. data/tests/helpers/compute/servers_helper.rb +0 -8
  36. data/tests/helpers/dns_helper.rb +0 -56
  37. data/tests/helpers/formats_helper.rb +0 -100
  38. data/tests/helpers/formats_helper_tests.rb +0 -107
  39. data/tests/helpers/mock_helper.rb +0 -109
  40. data/tests/helpers/model_helper.rb +0 -30
  41. data/tests/helpers/responds_to_helper.rb +0 -11
  42. data/tests/helpers/schema_validator_tests.rb +0 -104
  43. data/tests/helpers/succeeds_helper.rb +0 -9
  44. data/tests/lorem.txt +0 -1
  45. data/tests/models/auto_scaling/activities_tests.rb +0 -6
  46. data/tests/models/auto_scaling/configuration_test.rb +0 -13
  47. data/tests/models/auto_scaling/configurations_tests.rb +0 -11
  48. data/tests/models/auto_scaling/groups_test.rb +0 -27
  49. data/tests/models/auto_scaling/helper.rb +0 -0
  50. data/tests/models/auto_scaling/instance_tests.rb +0 -15
  51. data/tests/models/auto_scaling/instances_tests.rb +0 -6
  52. data/tests/models/beanstalk/application_tests.rb +0 -69
  53. data/tests/models/beanstalk/applications_tests.rb +0 -7
  54. data/tests/models/beanstalk/environment_tests.rb +0 -131
  55. data/tests/models/beanstalk/environments_tests.rb +0 -34
  56. data/tests/models/beanstalk/template_tests.rb +0 -47
  57. data/tests/models/beanstalk/templates_tests.rb +0 -62
  58. data/tests/models/beanstalk/version_tests.rb +0 -66
  59. data/tests/models/beanstalk/versions_tests.rb +0 -60
  60. data/tests/models/cdn/distribution_tests.rb +0 -15
  61. data/tests/models/cdn/distributions_tests.rb +0 -15
  62. data/tests/models/cdn/invalidation_tests.rb +0 -31
  63. data/tests/models/cdn/invalidations_tests.rb +0 -14
  64. data/tests/models/cdn/streaming_distribution_tests.rb +0 -15
  65. data/tests/models/cdn/streaming_distributions_tests.rb +0 -15
  66. data/tests/models/cloud_watch/alarm_data_tests.rb +0 -42
  67. data/tests/models/cloud_watch/alarm_history_tests.rb +0 -22
  68. data/tests/models/cloud_watch/metric_statistics_tests.rb +0 -51
  69. data/tests/models/cloud_watch/metrics_tests.rb +0 -32
  70. data/tests/models/compute/address_tests.rb +0 -43
  71. data/tests/models/compute/addresses_tests.rb +0 -5
  72. data/tests/models/compute/dhcp_option_tests.rb +0 -3
  73. data/tests/models/compute/dhcp_options_tests.rb +0 -3
  74. data/tests/models/compute/internet_gateway_tests.rb +0 -3
  75. data/tests/models/compute/internet_gateways_tests.rb +0 -3
  76. data/tests/models/compute/key_pair_tests.rb +0 -26
  77. data/tests/models/compute/key_pairs_tests.rb +0 -5
  78. data/tests/models/compute/network_acl_tests.rb +0 -109
  79. data/tests/models/compute/network_acls_tests.rb +0 -20
  80. data/tests/models/compute/network_interfaces_test.rb +0 -12
  81. data/tests/models/compute/security_group_tests.rb +0 -98
  82. data/tests/models/compute/security_groups_tests.rb +0 -5
  83. data/tests/models/compute/server_tests.rb +0 -94
  84. data/tests/models/compute/snapshot_tests.rb +0 -10
  85. data/tests/models/compute/snapshots_tests.rb +0 -10
  86. data/tests/models/compute/subnet_tests.rb +0 -13
  87. data/tests/models/compute/subnets_tests.rb +0 -5
  88. data/tests/models/compute/volume_tests.rb +0 -65
  89. data/tests/models/compute/volumes_tests.rb +0 -5
  90. data/tests/models/compute/vpc_tests.rb +0 -26
  91. data/tests/models/compute/vpcs_tests.rb +0 -19
  92. data/tests/models/data_pipeline/pipeline_tests.rb +0 -8
  93. data/tests/models/data_pipeline/pipelines_tests.rb +0 -8
  94. data/tests/models/dns/record_tests.rb +0 -33
  95. data/tests/models/dns/records_tests.rb +0 -41
  96. data/tests/models/dns/zone_tests.rb +0 -4
  97. data/tests/models/dns/zones_tests.rb +0 -4
  98. data/tests/models/efs/file_system_tests.rb +0 -12
  99. data/tests/models/efs/mount_target_tests.rb +0 -45
  100. data/tests/models/efs/mount_targets_tests.rb +0 -30
  101. data/tests/models/elasticache/cluster_tests.rb +0 -30
  102. data/tests/models/elasticache/parameter_groups_tests.rb +0 -15
  103. data/tests/models/elasticache/security_groups_tests.rb +0 -52
  104. data/tests/models/elasticache/subnet_groups_tests.rb +0 -43
  105. data/tests/models/elb/model_tests.rb +0 -360
  106. data/tests/models/elb/tagging_tests.rb +0 -15
  107. data/tests/models/glacier/model_tests.rb +0 -47
  108. data/tests/models/iam/access_keys_tests.rb +0 -53
  109. data/tests/models/iam/groups_tests.rb +0 -59
  110. data/tests/models/iam/instance_profile_tests.rb +0 -18
  111. data/tests/models/iam/managed_policies_tests.rb +0 -89
  112. data/tests/models/iam/policies_tests.rb +0 -57
  113. data/tests/models/iam/roles_tests.rb +0 -71
  114. data/tests/models/iam/users_tests.rb +0 -119
  115. data/tests/models/rds/cluster_tests.rb +0 -54
  116. data/tests/models/rds/clusters_tests.rb +0 -5
  117. data/tests/models/rds/event_subscription_tests.rb +0 -9
  118. data/tests/models/rds/event_subscriptions_tests.rb +0 -6
  119. data/tests/models/rds/helper.rb +0 -25
  120. data/tests/models/rds/instance_option_tests.rb +0 -14
  121. data/tests/models/rds/parameter_group_tests.rb +0 -24
  122. data/tests/models/rds/parameter_groups_tests.rb +0 -8
  123. data/tests/models/rds/security_group_tests.rb +0 -77
  124. data/tests/models/rds/security_groups_tests.rb +0 -5
  125. data/tests/models/rds/server_tests.rb +0 -131
  126. data/tests/models/rds/servers_tests.rb +0 -24
  127. data/tests/models/rds/snapshot_tests.rb +0 -12
  128. data/tests/models/rds/snapshots_tests.rb +0 -12
  129. data/tests/models/rds/tagging_tests.rb +0 -20
  130. data/tests/models/sns/topic_tests.rb +0 -15
  131. data/tests/models/sns/topics_tests.rb +0 -6
  132. data/tests/models/storage/directory_tests.rb +0 -91
  133. data/tests/models/storage/file_tests.rb +0 -129
  134. data/tests/models/storage/files_tests.rb +0 -90
  135. data/tests/models/storage/url_tests.rb +0 -25
  136. data/tests/models/storage/version_tests.rb +0 -52
  137. data/tests/models/storage/versions_tests.rb +0 -51
  138. data/tests/models/support/trusted_advisor_tests.rb +0 -25
  139. data/tests/parsers/compute/describe_images_tests.rb +0 -33
  140. data/tests/parsers/elb/describe_load_balancers.rb +0 -65
  141. data/tests/parsers/elbv2/create_load_balancer_tests.rb +0 -48
  142. data/tests/parsers/elbv2/describe_listeners_tests.rb +0 -76
  143. data/tests/parsers/elbv2/describe_load_balancers_tests.rb +0 -54
  144. data/tests/parsers/elbv2/describe_tags_tests.rb +0 -35
  145. data/tests/requests/auto_scaling/auto_scaling_tests.rb +0 -111
  146. data/tests/requests/auto_scaling/describe_types_tests.rb +0 -102
  147. data/tests/requests/auto_scaling/helper.rb +0 -229
  148. data/tests/requests/auto_scaling/model_tests.rb +0 -235
  149. data/tests/requests/auto_scaling/notification_configuration_tests.rb +0 -124
  150. data/tests/requests/auto_scaling/tag_tests.rb +0 -63
  151. data/tests/requests/beanstalk/application_tests.rb +0 -140
  152. data/tests/requests/beanstalk/solution_stack_tests.rb +0 -22
  153. data/tests/requests/cdn/cdn_tests.rb +0 -252
  154. data/tests/requests/cloud_formation/stack_tests.rb +0 -167
  155. data/tests/requests/cloud_watch/get_metric_statistics_tests.rb +0 -28
  156. data/tests/requests/cloud_watch/list_metrics_test.rb +0 -64
  157. data/tests/requests/cloud_watch/put_metric_data_tests.rb +0 -36
  158. data/tests/requests/compute/address_tests.rb +0 -144
  159. data/tests/requests/compute/assign_private_ip_tests.rb +0 -55
  160. data/tests/requests/compute/availability_zone_tests.rb +0 -25
  161. data/tests/requests/compute/client_tests.rb +0 -25
  162. data/tests/requests/compute/dhcp_options_tests.rb +0 -39
  163. data/tests/requests/compute/helper.rb +0 -27
  164. data/tests/requests/compute/image_tests.rb +0 -169
  165. data/tests/requests/compute/instance_attrib_tests.rb +0 -168
  166. data/tests/requests/compute/instance_tests.rb +0 -338
  167. data/tests/requests/compute/internet_gateway_tests.rb +0 -49
  168. data/tests/requests/compute/key_pair_tests.rb +0 -67
  169. data/tests/requests/compute/network_acl_tests.rb +0 -112
  170. data/tests/requests/compute/network_interface_tests.rb +0 -239
  171. data/tests/requests/compute/placement_group_tests.rb +0 -48
  172. data/tests/requests/compute/region_tests.rb +0 -52
  173. data/tests/requests/compute/route_tests.rb +0 -341
  174. data/tests/requests/compute/security_group_tests.rb +0 -446
  175. data/tests/requests/compute/snapshot_tests.rb +0 -77
  176. data/tests/requests/compute/spot_datafeed_subscription_tests.rb +0 -47
  177. data/tests/requests/compute/spot_instance_tests.rb +0 -55
  178. data/tests/requests/compute/spot_price_history_tests.rb +0 -23
  179. data/tests/requests/compute/subnet_tests.rb +0 -87
  180. data/tests/requests/compute/tag_tests.rb +0 -101
  181. data/tests/requests/compute/volume_tests.rb +0 -263
  182. data/tests/requests/compute/vpc_tests.rb +0 -222
  183. data/tests/requests/data_pipeline/helper.rb +0 -78
  184. data/tests/requests/data_pipeline/pipeline_tests.rb +0 -80
  185. data/tests/requests/dns/change_resource_record_sets_tests.rb +0 -34
  186. data/tests/requests/dns/dns_tests.rb +0 -240
  187. data/tests/requests/dns/health_check_tests.rb +0 -159
  188. data/tests/requests/dns/helper.rb +0 -21
  189. data/tests/requests/dynamodb/item_tests.rb +0 -137
  190. data/tests/requests/dynamodb/table_tests.rb +0 -99
  191. data/tests/requests/ecs/cluster_tests.rb +0 -112
  192. data/tests/requests/ecs/container_instance_tests.rb +0 -119
  193. data/tests/requests/ecs/helper.rb +0 -276
  194. data/tests/requests/ecs/sample_task_definition1.json +0 -56
  195. data/tests/requests/ecs/service_tests.rb +0 -132
  196. data/tests/requests/ecs/task_definitions_tests.rb +0 -97
  197. data/tests/requests/ecs/task_tests.rb +0 -145
  198. data/tests/requests/efs/file_system_tests.rb +0 -152
  199. data/tests/requests/efs/helper.rb +0 -44
  200. data/tests/requests/elasticache/cache_cluster_tests.rb +0 -137
  201. data/tests/requests/elasticache/describe_events.rb +0 -17
  202. data/tests/requests/elasticache/describe_reserved_cache_nodes.rb +0 -17
  203. data/tests/requests/elasticache/helper.rb +0 -103
  204. data/tests/requests/elasticache/parameter_group_tests.rb +0 -105
  205. data/tests/requests/elasticache/security_group_tests.rb +0 -108
  206. data/tests/requests/elasticache/subnet_group_tests.rb +0 -52
  207. data/tests/requests/elb/helper.rb +0 -91
  208. data/tests/requests/elb/listener_tests.rb +0 -68
  209. data/tests/requests/elb/load_balancer_tests.rb +0 -89
  210. data/tests/requests/elb/policy_tests.rb +0 -132
  211. data/tests/requests/elbv2/helper.rb +0 -66
  212. data/tests/requests/elbv2/load_balancer_tests.rb +0 -50
  213. data/tests/requests/emr/helper.rb +0 -167
  214. data/tests/requests/emr/instance_group_tests.rb +0 -106
  215. data/tests/requests/emr/job_flow_tests.rb +0 -88
  216. data/tests/requests/federation/get_signin_token_tests.rb +0 -11
  217. data/tests/requests/glacier/archive_tests.rb +0 -13
  218. data/tests/requests/glacier/multipart_upload_tests.rb +0 -29
  219. data/tests/requests/glacier/tree_hash_tests.rb +0 -91
  220. data/tests/requests/glacier/vault_tests.rb +0 -35
  221. data/tests/requests/iam/access_key_tests.rb +0 -53
  222. data/tests/requests/iam/account_policy_tests.rb +0 -20
  223. data/tests/requests/iam/account_tests.rb +0 -34
  224. data/tests/requests/iam/group_policy_tests.rb +0 -48
  225. data/tests/requests/iam/group_tests.rb +0 -44
  226. data/tests/requests/iam/helper.rb +0 -154
  227. data/tests/requests/iam/instance_profile_tests.rb +0 -44
  228. data/tests/requests/iam/login_profile_tests.rb +0 -62
  229. data/tests/requests/iam/managed_policy_tests.rb +0 -110
  230. data/tests/requests/iam/mfa_tests.rb +0 -23
  231. data/tests/requests/iam/role_tests.rb +0 -156
  232. data/tests/requests/iam/server_certificate_tests.rb +0 -130
  233. data/tests/requests/iam/user_policy_tests.rb +0 -45
  234. data/tests/requests/iam/user_tests.rb +0 -78
  235. data/tests/requests/iam/versioned_managed_policy_tests.rb +0 -105
  236. data/tests/requests/kinesis/helper.rb +0 -111
  237. data/tests/requests/kinesis/stream_tests.rb +0 -169
  238. data/tests/requests/kms/helper.rb +0 -27
  239. data/tests/requests/kms/key_tests.rb +0 -23
  240. data/tests/requests/lambda/function_sample_1.js +0 -9
  241. data/tests/requests/lambda/function_sample_2.js +0 -9
  242. data/tests/requests/lambda/function_tests.rb +0 -460
  243. data/tests/requests/lambda/helper.rb +0 -81
  244. data/tests/requests/rds/cluster_snapshot_tests.rb +0 -43
  245. data/tests/requests/rds/cluster_tests.rb +0 -37
  246. data/tests/requests/rds/db_engine_versions.rb +0 -7
  247. data/tests/requests/rds/db_snapshot_tests.rb +0 -62
  248. data/tests/requests/rds/describe_events.rb +0 -16
  249. data/tests/requests/rds/event_subscription_tests.rb +0 -30
  250. data/tests/requests/rds/helper.rb +0 -406
  251. data/tests/requests/rds/instance_option_tests.rb +0 -27
  252. data/tests/requests/rds/instance_tests.rb +0 -149
  253. data/tests/requests/rds/log_file_tests.rb +0 -19
  254. data/tests/requests/rds/parameter_group_tests.rb +0 -62
  255. data/tests/requests/rds/parameter_request_tests.rb +0 -32
  256. data/tests/requests/rds/security_group_tests.rb +0 -101
  257. data/tests/requests/rds/subnet_groups_tests.rb +0 -52
  258. data/tests/requests/rds/tagging_tests.rb +0 -78
  259. data/tests/requests/redshift/cluster_parameter_group_tests.rb +0 -76
  260. data/tests/requests/redshift/cluster_security_group_tests.rb +0 -42
  261. data/tests/requests/redshift/cluster_snapshot_tests.rb +0 -73
  262. data/tests/requests/redshift/cluster_tests.rb +0 -80
  263. data/tests/requests/ses/helper.rb +0 -9
  264. data/tests/requests/ses/verified_domain_identity_tests.rb +0 -16
  265. data/tests/requests/ses/verified_email_address_tests.rb +0 -27
  266. data/tests/requests/simpledb/attributes_tests.rb +0 -86
  267. data/tests/requests/simpledb/domain_tests.rb +0 -51
  268. data/tests/requests/simpledb/helper.rb +0 -10
  269. data/tests/requests/sns/helper.rb +0 -9
  270. data/tests/requests/sns/subscription_tests.rb +0 -86
  271. data/tests/requests/sns/topic_tests.rb +0 -53
  272. data/tests/requests/sqs/helper.rb +0 -9
  273. data/tests/requests/sqs/message_tests.rb +0 -51
  274. data/tests/requests/sqs/queue_tests.rb +0 -50
  275. data/tests/requests/storage/acl_utils_tests.rb +0 -209
  276. data/tests/requests/storage/bucket_tests.rb +0 -416
  277. data/tests/requests/storage/cors_utils_tests.rb +0 -108
  278. data/tests/requests/storage/delete_multiple_objects_tests.rb +0 -12
  279. data/tests/requests/storage/multipart_copy_tests.rb +0 -93
  280. data/tests/requests/storage/multipart_upload_tests.rb +0 -121
  281. data/tests/requests/storage/object_tests.rb +0 -269
  282. data/tests/requests/storage/versioning_tests.rb +0 -262
  283. data/tests/requests/sts/assume_role_tests.rb +0 -19
  284. data/tests/requests/sts/assume_role_with_saml_tests.rb +0 -18
  285. data/tests/requests/sts/assume_role_with_web_identity_tests.rb +0 -28
  286. data/tests/requests/sts/get_federation_token_tests.rb +0 -20
  287. data/tests/requests/sts/session_token_tests.rb +0 -16
  288. data/tests/requests/support/helper.rb +0 -43
  289. data/tests/requests/support/trusted_advisor_check_tests.rb +0 -16
  290. data/tests/signaturev4_tests.rb +0 -106
  291. data/tests/signed_params_tests.rb +0 -17
  292. data/tests/storage_tests.rb +0 -7
data/bin/console DELETED
@@ -1,14 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require "bundler/setup"
4
- require "fog-aws"
5
-
6
- # You can add fixtures and/or initialization code here to make experimenting
7
- # with your gem easier. You can also use a different console, if you like.
8
-
9
- # (If you use this, don't forget to add pry to your Gemfile!)
10
- # require "pry"
11
- # Pry.start
12
-
13
- require "irb"
14
- IRB.start(__FILE__)
data/bin/setup DELETED
@@ -1,8 +0,0 @@
1
- #!/usr/bin/env bash
2
- set -euo pipefail
3
- IFS=$'\n\t'
4
- set -vx
5
-
6
- bundle install
7
-
8
- # Do any other automated setup that you need to do here
@@ -1,14 +0,0 @@
1
- source "https://rubygems.org"
2
-
3
- # Shared components
4
- gem "fog-core", :github => "fog/fog-core"
5
- gem "fog-json", :github => "fog/fog-json"
6
-
7
- group :test, :default do
8
- gem 'pry-nav'
9
- gem 'mime-types', '~> 3.1'
10
- end
11
-
12
- gem "codeclimate-test-reporter", group: :test, require: nil
13
-
14
- gemspec :path => "../"
@@ -1,7 +0,0 @@
1
-
2
- source "https://rubygems.org"
3
-
4
- gem 'mime-types', '~> 3.1'
5
- gem 'nokogiri', '~> 1.6.8'
6
-
7
- gemspec :path => "../"
data/stale.yml DELETED
@@ -1,17 +0,0 @@
1
- # Number of days of inactivity before an issue becomes stale
2
- daysUntilStale: 60
3
- # Number of days of inactivity before a stale issue is closed
4
- daysUntilClose: 7
5
- # Issues with these labels will never be considered stale
6
- exemptLabels:
7
- - pinned
8
- - security
9
- # Label to use when marking an issue as stale
10
- staleLabel: wontfix
11
- # Comment to post when marking an issue as stale. Set to `false` to disable
12
- markComment: >
13
- This issue has been automatically marked stale due to inactivity.
14
- It will be closed if no further activity occurs.
15
- Thank you for your contributions.
16
- # Comment to post when closing a stale issue. Set to `false` to disable
17
- closeComment: false
@@ -1,149 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- Shindo.tests('AWS | credentials', ['aws']) do
4
- old_mock_value = Excon.defaults[:mock]
5
- fog_was_mocked = Fog.mocking?
6
- Excon.stubs.clear
7
- Fog.unmock!
8
- begin
9
- Excon.defaults[:mock] = true
10
- Excon.stub({ method: :put, path: '/latest/api/token' }, { status: 200, body: 'token1234' })
11
-
12
- Excon.stub({ method: :get, path: '/latest/meta-data/iam/security-credentials/' }, { status: 200, body: 'arole' })
13
- Excon.stub({ method: :get, path: '/latest/meta-data/placement/availability-zone/' }, { status: 200, body: 'us-west-1a' })
14
-
15
- expires_at = Time.at(Time.now.to_i + 500)
16
- credentials = {
17
- 'AccessKeyId' => 'dummykey',
18
- 'SecretAccessKey' => 'dummysecret',
19
- 'Token' => 'dummytoken',
20
- 'Expiration' => expires_at.xmlschema
21
- }
22
-
23
- Excon.stub({ method: :get, path: '/latest/meta-data/iam/security-credentials/arole' }, { status: 200, body: Fog::JSON.encode(credentials) })
24
-
25
- tests('#fetch_credentials') do
26
- returns(aws_access_key_id: 'dummykey',
27
- aws_secret_access_key: 'dummysecret',
28
- aws_session_token: 'dummytoken',
29
- region: 'us-west-1',
30
- aws_credentials_expire_at: expires_at) { Fog::AWS::Compute.fetch_credentials(use_iam_profile: true) }
31
- end
32
-
33
- tests('#fetch_credentials when the v2 token 404s') do
34
- Excon.stub({ method: :put, path: '/latest/api/token' }, { status: 404, body: 'not found' })
35
- returns(aws_access_key_id: 'dummykey',
36
- aws_secret_access_key: 'dummysecret',
37
- aws_session_token: 'dummytoken',
38
- region: 'us-west-1',
39
- aws_credentials_expire_at: expires_at) { Fog::AWS::Compute.fetch_credentials(use_iam_profile: true) }
40
- end
41
-
42
- tests('#fetch_credentials when the v2 disabled') do
43
- returns(aws_access_key_id: 'dummykey',
44
- aws_secret_access_key: 'dummysecret',
45
- aws_session_token: 'dummytoken',
46
- region: 'us-west-1',
47
- aws_credentials_expire_at: expires_at) { Fog::AWS::Compute.fetch_credentials(use_iam_profile: true, disable_imds_v2: true) }
48
- end
49
-
50
- ENV['AWS_CONTAINER_CREDENTIALS_RELATIVE_URI'] = '/v1/credentials?id=task_id'
51
- Excon.stub({ method: :get, path: '/v1/credentials?id=task_id' }, { status: 200, body: Fog::JSON.encode(credentials) })
52
-
53
- tests('#fetch_credentials') do
54
- returns(aws_access_key_id: 'dummykey',
55
- aws_secret_access_key: 'dummysecret',
56
- aws_session_token: 'dummytoken',
57
- region: 'us-west-1',
58
- aws_credentials_expire_at: expires_at) { Fog::AWS::Compute.fetch_credentials(use_iam_profile: true) }
59
- end
60
-
61
- ENV['AWS_CONTAINER_CREDENTIALS_RELATIVE_URI'] = nil
62
-
63
- ENV['AWS_WEB_IDENTITY_TOKEN_FILE'] = File.dirname(__FILE__) + '/lorem.txt'
64
- ENV['AWS_ROLE_ARN'] = "dummyrole"
65
- ENV['AWS_ROLE_SESSION_NAME'] = "dummyrolesessionname"
66
- document =
67
- '<AssumeRoleWithWebIdentityResponse xmlns="https://sts.amazonaws.com/doc/2011-06-15/">'\
68
- '<AssumeRoleWithWebIdentityResult>'\
69
- '<Credentials>'\
70
- '<SessionToken>dummytoken</SessionToken>'\
71
- '<SecretAccessKey>dummysecret</SecretAccessKey>'\
72
- "<Expiration>#{expires_at.xmlschema}</Expiration>"\
73
- '<AccessKeyId>dummykey</AccessKeyId>'\
74
- '</Credentials>'\
75
- '</AssumeRoleWithWebIdentityResult>'\
76
- '</AssumeRoleWithWebIdentityResponse>'
77
-
78
- Excon.stub({method: :get, path: "/", idempotent: true}, { status: 200, body: document})
79
-
80
- tests('#fetch_credentials token based') do
81
- returns(
82
- aws_access_key_id: 'dummykey',
83
- aws_secret_access_key: 'dummysecret',
84
- aws_session_token: 'dummytoken',
85
- region: 'us-west-1',
86
- aws_credentials_expire_at: expires_at
87
- ) { Fog::AWS::Compute.fetch_credentials(use_iam_profile: true) }
88
- end
89
-
90
- ENV['AWS_ROLE_SESSION_NAME'] = nil
91
-
92
- tests('#fetch_credentials token based without session name') do
93
- returns(
94
- aws_access_key_id: 'dummykey',
95
- aws_secret_access_key: 'dummysecret',
96
- aws_session_token: 'dummytoken',
97
- region: 'us-west-1',
98
- aws_credentials_expire_at: expires_at
99
- ) { Fog::AWS::Compute.fetch_credentials(use_iam_profile: true) }
100
- end
101
-
102
- ENV['AWS_WEB_IDENTITY_TOKEN_FILE'] = nil
103
-
104
- compute = Fog::AWS::Compute.new(use_iam_profile: true)
105
-
106
- tests('#refresh_credentials_if_expired') do
107
- returns(nil) { compute.refresh_credentials_if_expired }
108
- end
109
-
110
- credentials['AccessKeyId'] = 'newkey'
111
- credentials['SecretAccessKey'] = 'newsecret'
112
- credentials['Expiration'] = (expires_at + 10).xmlschema
113
-
114
- Excon.stub({ method: :get, path: '/latest/meta-data/iam/security-credentials/arole' }, { status: 200, body: Fog::JSON.encode(credentials) })
115
-
116
- Fog::Time.now = expires_at + 1
117
- tests('#refresh_credentials_if_expired') do
118
- returns(true) { compute.refresh_credentials_if_expired }
119
- returns('newkey') { compute.instance_variable_get(:@aws_access_key_id) }
120
- end
121
- Fog::Time.now = Time.now
122
-
123
- default_credentials = Fog::AWS::Compute.fetch_credentials({})
124
- tests('#fetch_credentials when the url 404s') do
125
- Excon.stub({ method: :put, path: '/latest/api/token' }, { status: 404, body: 'not found' })
126
- Excon.stub({ method: :get, path: '/latest/meta-data/iam/security-credentials/' }, { status: 404, body: 'not bound' })
127
- Excon.stub({ method: :get, path: '/latest/meta-data/placement/availability-zone/' }, { status: 400, body: 'not found' })
128
- returns(default_credentials) { Fog::AWS::Compute.fetch_credentials(use_iam_profile: true) }
129
- end
130
-
131
- mocked_credentials = {
132
- aws_access_key_id: 'access-key-id',
133
- aws_secret_access_key: 'secret-access-key',
134
- aws_session_token: 'session-token',
135
- aws_credentials_expire_at: Time.at(Time.now.to_i + 500).xmlschema
136
- }
137
- tests('#fetch_credentials when mocking') do
138
- Fog.mock!
139
- Fog::AWS::Compute::Mock.data[:iam_role_based_creds] = mocked_credentials
140
- returns(mocked_credentials) { Fog::AWS::Compute.fetch_credentials(use_iam_profile: true) }
141
- end
142
- ensure
143
- ENV['AWS_CONTAINER_CREDENTIALS_RELATIVE_URI'] = nil
144
- ENV['AWS_WEB_IDENTITY_TOKEN_FILE'] = nil
145
- Excon.stubs.clear
146
- Excon.defaults[:mock] = old_mock_value
147
- Fog.mock! if fog_was_mocked
148
- end
149
- end
data/tests/helper.rb DELETED
@@ -1,29 +0,0 @@
1
- begin
2
- require 'simplecov'
3
- SimpleCov.start
4
- SimpleCov.command_name 'Shindo'
5
- rescue LoadError => e
6
- $stderr.puts "not recording test coverage: #{e.inspect}"
7
- end
8
-
9
- require File.expand_path('../../lib/fog/aws', __FILE__)
10
-
11
- Bundler.require(:test)
12
-
13
- Excon.defaults.merge!(debug_request: true, debug_response: true)
14
-
15
- require File.expand_path(File.join(File.dirname(__FILE__), 'helpers', 'mock_helper'))
16
-
17
- # This overrides the default 600 seconds timeout during live test runs
18
- unless Fog.mocking?
19
- Fog.timeout = ENV['FOG_TEST_TIMEOUT'] || 2_000
20
- Fog::Logger.warning "Setting default fog timeout to #{Fog.timeout} seconds"
21
- end
22
-
23
- def lorem_file
24
- File.open(File.dirname(__FILE__) + '/lorem.txt', 'r')
25
- end
26
-
27
- def array_differences(array_a, array_b)
28
- (array_a - array_b) | (array_b - array_a)
29
- end
@@ -1,90 +0,0 @@
1
- def collection_tests(collection, params = {}, mocks_implemented = true)
2
- tests('success') do
3
- tests("#new(#{params.inspect})").succeeds do
4
- pending if Fog.mocking? && !mocks_implemented
5
- collection.new(params)
6
- end
7
-
8
- tests("#create(#{params.inspect})").succeeds do
9
- pending if Fog.mocking? && !mocks_implemented
10
- @instance = collection.create(params)
11
- end
12
- # FIXME: work around for timing issue on AWS describe_instances mocks
13
-
14
- if Fog.mocking? && @instance.respond_to?(:ready?)
15
- @instance.wait_for { ready? }
16
- end
17
-
18
- tests("#all").succeeds do
19
- pending if Fog.mocking? && !mocks_implemented
20
- collection.all
21
- end
22
-
23
- if !Fog.mocking? || mocks_implemented
24
- @identity = @instance.identity
25
- end
26
-
27
- tests("#get(#{@identity})").succeeds do
28
- pending if Fog.mocking? && !mocks_implemented
29
- collection.get(@identity)
30
- end
31
-
32
- tests('Enumerable') do
33
- pending if Fog.mocking? && !mocks_implemented
34
-
35
- methods = [
36
- 'all?', 'any?', 'find', 'detect', 'collect', 'map',
37
- 'find_index', 'flat_map', 'collect_concat', 'group_by',
38
- 'none?', 'one?'
39
- ]
40
-
41
- methods.each do |enum_method|
42
- if collection.respond_to?(enum_method)
43
- tests("##{enum_method}").succeeds do
44
- block_called = false
45
- collection.send(enum_method) { block_called = true }
46
- block_called
47
- end
48
- end
49
- end
50
-
51
- [
52
- 'max_by','min_by'
53
- ].each do |enum_method|
54
- if collection.respond_to?(enum_method)
55
- tests("##{enum_method}").succeeds do
56
- block_called = false
57
- collection.send(enum_method) { block_called = true; 0 }
58
- block_called
59
- end
60
- end
61
-
62
- end
63
-
64
- end
65
-
66
- if block_given?
67
- yield(@instance)
68
- end
69
-
70
- if !Fog.mocking? || mocks_implemented
71
- @instance.destroy
72
- end
73
- end
74
-
75
- tests('failure') do
76
-
77
- if !Fog.mocking? || mocks_implemented
78
- @identity = @identity.to_s
79
- @identity = @identity.gsub(/[a-zA-Z]/) { Fog::Mock.random_letters(1) }
80
- @identity = @identity.gsub(/\d/) { Fog::Mock.random_numbers(1) }
81
- @identity
82
- end
83
-
84
- tests("#get('#{@identity}')").returns(nil) do
85
- pending if Fog.mocking? && !mocks_implemented
86
- collection.get(@identity)
87
- end
88
-
89
- end
90
- end
@@ -1,28 +0,0 @@
1
- def flavors_tests(connection, params = {}, mocks_implemented = true)
2
- tests('success') do
3
- tests('#all').succeeds do
4
- pending if Fog.mocking? && !mocks_implemented
5
- connection.flavors.all
6
- end
7
-
8
- if !Fog.mocking? || mocks_implemented
9
- @identity = connection.flavors.first.identity
10
- end
11
-
12
- tests("#get('#{@identity}')").succeeds do
13
- pending if Fog.mocking? && !mocks_implemented
14
- connection.flavors.get(@identity)
15
- end
16
- end
17
-
18
- tests('failure') do
19
- if !Fog.mocking? || mocks_implemented
20
- invalid_flavor_identity = connection.flavors.first.identity.to_s.gsub(/\w/, '0')
21
- end
22
-
23
- tests("#get('#{invalid_flavor_identity}')").returns(nil) do
24
- pending if Fog.mocking? && !mocks_implemented
25
- connection.flavors.get(invalid_flavor_identity)
26
- end
27
- end
28
- end
@@ -1,23 +0,0 @@
1
- def server_tests(connection, params = {}, mocks_implemented = true)
2
- model_tests(connection.servers, params, mocks_implemented) do
3
- tests('#reload').returns(true) do
4
- pending if Fog.mocking? && !mocks_implemented
5
- @instance.wait_for { ready? }
6
- identity = @instance.identity
7
- !identity.nil? && identity == @instance.reload.identity
8
- end
9
-
10
- responds_to(%i[ready state])
11
- yield if block_given?
12
-
13
- tests('#reboot').succeeds do
14
- pending if Fog.mocking? && !mocks_implemented
15
- @instance.wait_for { ready? }
16
- @instance.reboot
17
- end
18
-
19
- if !Fog.mocking? || mocks_implemented
20
- @instance.wait_for { ready? }
21
- end
22
- end
23
- end
@@ -1,8 +0,0 @@
1
- def servers_tests(connection, params = {}, mocks_implemented = true)
2
- collection_tests(connection.servers, params, mocks_implemented) do
3
- if !Fog.mocking? || mocks_implemented
4
- @instance.wait_for { ready? }
5
- yield if block_given?
6
- end
7
- end
8
- end
@@ -1,56 +0,0 @@
1
- def dns_providers
2
- {
3
- aws: {
4
- mocked: false
5
- },
6
- bluebox: {
7
- mocked: false,
8
- zone_attributes: {
9
- ttl: 60
10
- }
11
- },
12
- dnsimple: {
13
- mocked: false
14
- },
15
- dnsmadeeasy: {
16
- mocked: false
17
- },
18
- dynect: {
19
- mocked: false,
20
- zone_attributes: {
21
- email: 'fog@example.com'
22
- }
23
- },
24
- linode: {
25
- mocked: false,
26
- zone_attributes: {
27
- email: 'fog@example.com'
28
- }
29
- },
30
- zerigo: {
31
- mocked: false
32
- },
33
- rackspace: {
34
- mocked: false,
35
- zone_attributes: {
36
- email: 'fog@example.com'
37
- }
38
- },
39
- rage4: {
40
- mocked: false
41
- }
42
- }
43
- end
44
-
45
- def generate_unique_domain(with_trailing_dot = false)
46
- # get time (with 1/100th of sec accuracy)
47
- # want unique domain name and if provider is fast,
48
- # this can be called more than once per second
49
- time = (Time.now.to_f * 100).to_i
50
- domain = 'test-' + time.to_s + '.com'
51
- if with_trailing_dot
52
- domain += '.'
53
- end
54
-
55
- domain
56
- end
@@ -1,100 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'fog/schema/data_validator'
4
-
5
- # format related hackery
6
- # allows both true.is_a?(Fog::Boolean) and false.is_a?(Fog::Boolean)
7
- # allows both nil.is_a?(Fog::Nullable::String) and ''.is_a?(Fog::Nullable::String)
8
- module Fog
9
- module Boolean; end
10
- module Nullable
11
- module Boolean; end
12
- module Integer; end
13
- module String; end
14
- module Time; end
15
- module Float; end
16
- module Hash; end
17
- module Array; end
18
- end
19
- end
20
- [FalseClass, TrueClass].each { |klass| klass.send(:include, Fog::Boolean) }
21
- [FalseClass, TrueClass, NilClass, Fog::Boolean].each { |klass| klass.send(:include, Fog::Nullable::Boolean) }
22
- [NilClass, String].each { |klass| klass.send(:include, Fog::Nullable::String) }
23
- [NilClass, Time].each { |klass| klass.send(:include, Fog::Nullable::Time) }
24
- [Integer, NilClass].each { |klass| klass.send(:include, Fog::Nullable::Integer) }
25
- [Float, NilClass].each { |klass| klass.send(:include, Fog::Nullable::Float) }
26
- [Hash, NilClass].each { |klass| klass.send(:include, Fog::Nullable::Hash) }
27
- [Array, NilClass].each { |klass| klass.send(:include, Fog::Nullable::Array) }
28
-
29
- module Shindo
30
- # Generates a Shindo test that compares a hash schema to the result
31
- # of the passed in block returning true if they match.
32
- #
33
- # The schema that is passed in is a Hash or Array of hashes that
34
- # have Classes in place of values. When checking the schema the
35
- # value should match the Class.
36
- #
37
- # Strict mode will fail if the data has additional keys. Setting
38
- # +strict+ to +false+ will allow additional keys to appear.
39
- #
40
- # @param [Hash] schema A Hash schema
41
- # @param [Hash] options Options to change validation rules
42
- # @option options [Boolean] :allow_extra_keys
43
- # If +true+ does not fail when keys are in the data that are
44
- # not specified in the schema. This allows new values to
45
- # appear in API output without breaking the check.
46
- # @option options [Boolean] :allow_optional_rules
47
- # If +true+ does not fail if extra keys are in the schema
48
- # that do not match the data. Not recommended!
49
- # @yield Data to check with schema
50
- #
51
- # @example Using in a test
52
- # Shindo.tests("comparing welcome data against schema") do
53
- # data = {:welcome => "Hello" }
54
- # data_matches_schema(:welcome => String) { data }
55
- # end
56
- #
57
- # comparing welcome data against schema
58
- # + data matches schema
59
- #
60
- # @example Example schema
61
- # {
62
- # "id" => String,
63
- # "ram" => Integer,
64
- # "disks" => [
65
- # {
66
- # "size" => Float
67
- # }
68
- # ],
69
- # "dns_name" => Fog::Nullable::String,
70
- # "active" => Fog::Boolean,
71
- # "created" => DateTime
72
- # }
73
- #
74
- # @return [Boolean]
75
- class Tests
76
- def data_matches_schema(schema, options = {})
77
- test('data matches schema') do
78
- validator = Fog::Schema::DataValidator.new
79
- valid = validator.validate(yield, schema, options)
80
- @message = validator.message unless valid
81
- valid
82
- end
83
- end
84
-
85
- # @deprecated #formats is deprecated. Use #data_matches_schema instead
86
- def formats(format, strict = true)
87
- test('has proper format') do
88
- if strict
89
- options = { allow_extra_keys: false, allow_optional_rules: true }
90
- else
91
- options = { allow_extra_keys: true, allow_optional_rules: true }
92
- end
93
- validator = Fog::Schema::DataValidator.new
94
- valid = validator.validate(yield, format, options)
95
- @message = validator.message unless valid
96
- valid
97
- end
98
- end
99
- end
100
- end
@@ -1,107 +0,0 @@
1
- Shindo.tests('test_helper', 'meta') do
2
-
3
- tests('comparing welcome data against schema') do
4
- data = { welcome: 'Hello' }
5
- data_matches_schema(welcome: String) { data }
6
- end
7
-
8
- tests('#data_matches_schema') do
9
- tests('when value matches schema expectation') do
10
- data_matches_schema('key' => String) { { 'key' => 'Value' } }
11
- end
12
-
13
- tests('when values within an array all match schema expectation') do
14
- data_matches_schema('key' => [Integer]) { { 'key' => [1, 2] } }
15
- end
16
-
17
- tests('when nested values match schema expectation') do
18
- data_matches_schema('key' => { nested_key: String }) { { 'key' => { nested_key: 'Value' } } }
19
- end
20
-
21
- tests('when collection of values all match schema expectation') do
22
- data_matches_schema([{ 'key' => String }]) { [{ 'key' => 'Value' }, { 'key' => 'Value' }] }
23
- end
24
-
25
- tests('when collection is empty although schema covers optional members') do
26
- data_matches_schema([{ 'key' => String }], allow_optional_rules: true) { [] }
27
- end
28
-
29
- tests('when additional keys are passed and not strict') do
30
- data_matches_schema({ 'key' => String }, allow_extra_keys: true) { { 'key' => 'Value', extra: 'Bonus' } }
31
- end
32
-
33
- tests('when value is nil and schema expects NilClass') do
34
- data_matches_schema('key' => NilClass) { { 'key' => nil } }
35
- end
36
-
37
- tests('when value and schema match as hashes') do
38
- data_matches_schema({}) { {} }
39
- end
40
-
41
- tests('when value and schema match as arrays') do
42
- data_matches_schema([]) { [] }
43
- end
44
-
45
- tests('when value is a Time') do
46
- data_matches_schema('time' => Time) { { 'time' => Time.now } }
47
- end
48
-
49
- tests('when key is missing but value should be NilClass (#1477)') do
50
- data_matches_schema({ 'key' => NilClass }, allow_optional_rules: true) { {} }
51
- end
52
-
53
- tests('when key is missing but value is nullable (#1477)') do
54
- data_matches_schema({ 'key' => Fog::Nullable::String }, allow_optional_rules: true) { {} }
55
- end
56
- end
57
-
58
- tests('#formats backwards compatible changes') do
59
- tests('when value matches schema expectation') do
60
- formats('key' => String) { { 'key' => 'Value' } }
61
- end
62
-
63
- tests('when values within an array all match schema expectation') do
64
- formats('key' => [Integer]) { { 'key' => [1, 2] } }
65
- end
66
-
67
- tests('when nested values match schema expectation') do
68
- formats('key' => { nested_key: String }) { { 'key' => { nested_key: 'Value' } } }
69
- end
70
-
71
- tests('when collection of values all match schema expectation') do
72
- formats([{ 'key' => String }]) { [{ 'key' => 'Value' }, { 'key' => 'Value' }] }
73
- end
74
-
75
- tests('when collection is empty although schema covers optional members') do
76
- formats([{ 'key' => String }]) { [] }
77
- end
78
-
79
- tests('when additional keys are passed and not strict') do
80
- formats({ 'key' => String }, false) { { 'key' => 'Value', :extra => 'Bonus' } }
81
- end
82
-
83
- tests('when value is nil and schema expects NilClass') do
84
- formats('key' => NilClass) { { 'key' => nil } }
85
- end
86
-
87
- tests('when value and schema match as hashes') do
88
- formats({}) { {} }
89
- end
90
-
91
- tests('when value and schema match as arrays') do
92
- formats([]) { [] }
93
- end
94
-
95
- tests('when value is a Time') do
96
- formats('time' => Time) { { 'time' => Time.now } }
97
- end
98
-
99
- tests('when key is missing but value should be NilClass (#1477)') do
100
- formats('key' => NilClass) { {} }
101
- end
102
-
103
- tests('when key is missing but value is nullable (#1477)') do
104
- formats('key' => Fog::Nullable::String) { {} }
105
- end
106
- end
107
- end