fog-aws 3.0.0 → 3.10.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (499) hide show
  1. checksums.yaml +4 -4
  2. data/.github/dependabot.yml +10 -0
  3. data/.github/workflows/ruby.yml +36 -0
  4. data/.github/workflows/stale.yml +23 -0
  5. data/.gitignore +1 -0
  6. data/CHANGELOG.md +354 -22
  7. data/Gemfile +1 -1
  8. data/LICENSE.md +1 -1
  9. data/README.md +60 -7
  10. data/Rakefile +6 -0
  11. data/bin/console +14 -0
  12. data/bin/setup +8 -0
  13. data/fog-aws.gemspec +5 -4
  14. data/lib/fog/aws.rb +27 -19
  15. data/lib/fog/aws/auto_scaling.rb +1 -0
  16. data/lib/fog/aws/cdn.rb +15 -2
  17. data/lib/fog/aws/compute.rb +36 -23
  18. data/lib/fog/aws/credential_fetcher.rb +62 -8
  19. data/lib/fog/aws/dns.rb +154 -5
  20. data/lib/fog/aws/efs.rb +1 -1
  21. data/lib/fog/aws/elasticache.rb +4 -2
  22. data/lib/fog/aws/elb.rb +3 -2
  23. data/lib/fog/aws/elbv2.rb +72 -0
  24. data/lib/fog/aws/glacier.rb +83 -21
  25. data/lib/fog/aws/kinesis.rb +23 -15
  26. data/lib/fog/aws/models/auto_scaling/group.rb +10 -0
  27. data/lib/fog/aws/models/cdn/distribution.rb +4 -4
  28. data/lib/fog/aws/models/cdn/distribution_helper.rb +2 -2
  29. data/lib/fog/aws/models/cdn/distributions.rb +4 -4
  30. data/lib/fog/aws/models/cdn/distributions_helper.rb +2 -2
  31. data/lib/fog/aws/models/cdn/invalidation.rb +2 -2
  32. data/lib/fog/aws/models/cdn/invalidations.rb +3 -3
  33. data/lib/fog/aws/models/cdn/streaming_distribution.rb +3 -3
  34. data/lib/fog/aws/models/cdn/streaming_distributions.rb +4 -4
  35. data/lib/fog/aws/models/compute/address.rb +3 -2
  36. data/lib/fog/aws/models/compute/addresses.rb +3 -3
  37. data/lib/fog/aws/models/compute/dhcp_option.rb +2 -2
  38. data/lib/fog/aws/models/compute/dhcp_options.rb +7 -7
  39. data/lib/fog/aws/models/compute/flavor.rb +2 -2
  40. data/lib/fog/aws/models/compute/flavors.rb +2719 -397
  41. data/lib/fog/aws/models/compute/image.rb +2 -2
  42. data/lib/fog/aws/models/compute/images.rb +3 -3
  43. data/lib/fog/aws/models/compute/internet_gateway.rb +2 -2
  44. data/lib/fog/aws/models/compute/internet_gateways.rb +7 -7
  45. data/lib/fog/aws/models/compute/key_pair.rb +2 -2
  46. data/lib/fog/aws/models/compute/key_pairs.rb +3 -3
  47. data/lib/fog/aws/models/compute/network_acl.rb +4 -4
  48. data/lib/fog/aws/models/compute/network_acls.rb +6 -6
  49. data/lib/fog/aws/models/compute/network_interface.rb +2 -2
  50. data/lib/fog/aws/models/compute/network_interfaces.rb +4 -4
  51. data/lib/fog/aws/models/compute/route_table.rb +2 -2
  52. data/lib/fog/aws/models/compute/route_tables.rb +7 -7
  53. data/lib/fog/aws/models/compute/security_group.rb +2 -2
  54. data/lib/fog/aws/models/compute/security_groups.rb +3 -3
  55. data/lib/fog/aws/models/compute/server.rb +6 -4
  56. data/lib/fog/aws/models/compute/servers.rb +13 -8
  57. data/lib/fog/aws/models/compute/snapshot.rb +9 -8
  58. data/lib/fog/aws/models/compute/snapshots.rb +3 -3
  59. data/lib/fog/aws/models/compute/spot_request.rb +2 -2
  60. data/lib/fog/aws/models/compute/spot_requests.rb +3 -3
  61. data/lib/fog/aws/models/compute/subnet.rb +2 -2
  62. data/lib/fog/aws/models/compute/subnets.rb +3 -3
  63. data/lib/fog/aws/models/compute/tag.rb +2 -2
  64. data/lib/fog/aws/models/compute/tags.rb +3 -3
  65. data/lib/fog/aws/models/compute/volume.rb +3 -3
  66. data/lib/fog/aws/models/compute/volumes.rb +3 -3
  67. data/lib/fog/aws/models/compute/vpc.rb +10 -4
  68. data/lib/fog/aws/models/compute/vpcs.rb +3 -3
  69. data/lib/fog/aws/models/dns/record.rb +2 -2
  70. data/lib/fog/aws/models/dns/records.rb +4 -4
  71. data/lib/fog/aws/models/dns/zone.rb +3 -3
  72. data/lib/fog/aws/models/dns/zones.rb +4 -4
  73. data/lib/fog/aws/models/efs/file_system.rb +4 -0
  74. data/lib/fog/aws/models/rds/cluster.rb +9 -1
  75. data/lib/fog/aws/models/rds/server.rb +66 -63
  76. data/lib/fog/aws/models/storage/directories.rb +3 -3
  77. data/lib/fog/aws/models/storage/directory.rb +40 -6
  78. data/lib/fog/aws/models/storage/file.rb +132 -7
  79. data/lib/fog/aws/models/storage/files.rb +36 -6
  80. data/lib/fog/aws/models/storage/version.rb +2 -2
  81. data/lib/fog/aws/models/storage/versions.rb +3 -3
  82. data/lib/fog/aws/parsers/cdn/distribution.rb +2 -2
  83. data/lib/fog/aws/parsers/cdn/get_distribution_list.rb +2 -2
  84. data/lib/fog/aws/parsers/cdn/get_invalidation.rb +2 -2
  85. data/lib/fog/aws/parsers/cdn/get_invalidation_list.rb +2 -2
  86. data/lib/fog/aws/parsers/cdn/get_streaming_distribution_list.rb +2 -2
  87. data/lib/fog/aws/parsers/cdn/post_invalidation.rb +2 -2
  88. data/lib/fog/aws/parsers/cdn/streaming_distribution.rb +1 -1
  89. data/lib/fog/aws/parsers/compute/allocate_address.rb +2 -2
  90. data/lib/fog/aws/parsers/compute/assign_private_ip_addresses.rb +2 -2
  91. data/lib/fog/aws/parsers/compute/associate_address.rb +2 -2
  92. data/lib/fog/aws/parsers/compute/associate_route_table.rb +2 -2
  93. data/lib/fog/aws/parsers/compute/attach_network_interface.rb +2 -2
  94. data/lib/fog/aws/parsers/compute/attach_volume.rb +2 -2
  95. data/lib/fog/aws/parsers/compute/basic.rb +2 -2
  96. data/lib/fog/aws/parsers/compute/cancel_spot_instance_requests.rb +2 -2
  97. data/lib/fog/aws/parsers/compute/copy_image.rb +2 -2
  98. data/lib/fog/aws/parsers/compute/copy_snapshot.rb +2 -2
  99. data/lib/fog/aws/parsers/compute/create_dhcp_options.rb +2 -2
  100. data/lib/fog/aws/parsers/compute/create_image.rb +2 -2
  101. data/lib/fog/aws/parsers/compute/create_internet_gateway.rb +2 -2
  102. data/lib/fog/aws/parsers/compute/create_key_pair.rb +2 -2
  103. data/lib/fog/aws/parsers/compute/create_network_acl.rb +2 -2
  104. data/lib/fog/aws/parsers/compute/create_network_interface.rb +2 -2
  105. data/lib/fog/aws/parsers/compute/create_route_table.rb +2 -2
  106. data/lib/fog/aws/parsers/compute/create_security_group.rb +2 -2
  107. data/lib/fog/aws/parsers/compute/create_snapshot.rb +3 -3
  108. data/lib/fog/aws/parsers/compute/create_subnet.rb +35 -8
  109. data/lib/fog/aws/parsers/compute/create_volume.rb +2 -2
  110. data/lib/fog/aws/parsers/compute/create_vpc.rb +2 -2
  111. data/lib/fog/aws/parsers/compute/deregister_image.rb +2 -2
  112. data/lib/fog/aws/parsers/compute/describe_account_attributes.rb +2 -2
  113. data/lib/fog/aws/parsers/compute/describe_addresses.rb +32 -11
  114. data/lib/fog/aws/parsers/compute/describe_availability_zones.rb +2 -2
  115. data/lib/fog/aws/parsers/compute/describe_classic_link_instances.rb +2 -2
  116. data/lib/fog/aws/parsers/compute/describe_dhcp_options.rb +2 -2
  117. data/lib/fog/aws/parsers/compute/describe_image_attribute.rb +122 -0
  118. data/lib/fog/aws/parsers/compute/describe_images.rb +2 -2
  119. data/lib/fog/aws/parsers/compute/describe_instance_attribute.rb +2 -2
  120. data/lib/fog/aws/parsers/compute/describe_instance_status.rb +2 -2
  121. data/lib/fog/aws/parsers/compute/describe_instances.rb +2 -2
  122. data/lib/fog/aws/parsers/compute/describe_internet_gateways.rb +2 -2
  123. data/lib/fog/aws/parsers/compute/describe_key_pairs.rb +2 -2
  124. data/lib/fog/aws/parsers/compute/describe_network_acls.rb +2 -2
  125. data/lib/fog/aws/parsers/compute/describe_network_interface_attribute.rb +2 -2
  126. data/lib/fog/aws/parsers/compute/describe_network_interfaces.rb +2 -2
  127. data/lib/fog/aws/parsers/compute/describe_placement_groups.rb +2 -2
  128. data/lib/fog/aws/parsers/compute/describe_regions.rb +2 -2
  129. data/lib/fog/aws/parsers/compute/describe_reserved_instances.rb +2 -2
  130. data/lib/fog/aws/parsers/compute/describe_reserved_instances_offerings.rb +2 -2
  131. data/lib/fog/aws/parsers/compute/describe_route_tables.rb +2 -2
  132. data/lib/fog/aws/parsers/compute/describe_security_groups.rb +3 -3
  133. data/lib/fog/aws/parsers/compute/describe_snapshots.rb +2 -2
  134. data/lib/fog/aws/parsers/compute/describe_spot_price_history.rb +2 -2
  135. data/lib/fog/aws/parsers/compute/describe_subnets.rb +35 -8
  136. data/lib/fog/aws/parsers/compute/describe_tags.rb +2 -2
  137. data/lib/fog/aws/parsers/compute/describe_volume_status.rb +2 -2
  138. data/lib/fog/aws/parsers/compute/describe_volumes.rb +2 -2
  139. data/lib/fog/aws/parsers/compute/describe_volumes_modifications.rb +2 -2
  140. data/lib/fog/aws/parsers/compute/describe_vpc_attribute.rb +2 -2
  141. data/lib/fog/aws/parsers/compute/describe_vpc_classic_link.rb +2 -2
  142. data/lib/fog/aws/parsers/compute/describe_vpc_classic_link_dns_support.rb +2 -2
  143. data/lib/fog/aws/parsers/compute/describe_vpcs.rb +2 -2
  144. data/lib/fog/aws/parsers/compute/detach_volume.rb +2 -2
  145. data/lib/fog/aws/parsers/compute/get_console_output.rb +2 -2
  146. data/lib/fog/aws/parsers/compute/get_password_data.rb +2 -2
  147. data/lib/fog/aws/parsers/compute/import_key_pair.rb +2 -2
  148. data/lib/fog/aws/parsers/compute/modify_subnet_attribute.rb +2 -2
  149. data/lib/fog/aws/parsers/compute/modify_volume.rb +2 -2
  150. data/lib/fog/aws/parsers/compute/monitor_unmonitor_instances.rb +2 -2
  151. data/lib/fog/aws/parsers/compute/move_address_to_vpc.rb +2 -2
  152. data/lib/fog/aws/parsers/compute/network_acl_parser.rb +2 -2
  153. data/lib/fog/aws/parsers/compute/network_interface_parser.rb +2 -2
  154. data/lib/fog/aws/parsers/compute/purchase_reserved_instances_offering.rb +2 -2
  155. data/lib/fog/aws/parsers/compute/register_image.rb +2 -2
  156. data/lib/fog/aws/parsers/compute/replace_network_acl_association.rb +2 -2
  157. data/lib/fog/aws/parsers/compute/restore_address_to_classic.rb +2 -2
  158. data/lib/fog/aws/parsers/compute/run_instances.rb +2 -2
  159. data/lib/fog/aws/parsers/compute/spot_datafeed_subscription.rb +2 -2
  160. data/lib/fog/aws/parsers/compute/spot_instance_requests.rb +2 -2
  161. data/lib/fog/aws/parsers/compute/start_stop_instances.rb +2 -2
  162. data/lib/fog/aws/parsers/compute/terminate_instances.rb +2 -2
  163. data/lib/fog/aws/parsers/dns/change_resource_record_sets.rb +2 -2
  164. data/lib/fog/aws/parsers/dns/create_hosted_zone.rb +3 -3
  165. data/lib/fog/aws/parsers/dns/delete_hosted_zone.rb +2 -2
  166. data/lib/fog/aws/parsers/dns/get_change.rb +2 -2
  167. data/lib/fog/aws/parsers/dns/get_hosted_zone.rb +5 -5
  168. data/lib/fog/aws/parsers/dns/health_check.rb +2 -2
  169. data/lib/fog/aws/parsers/dns/list_health_checks.rb +2 -2
  170. data/lib/fog/aws/parsers/dns/list_hosted_zones.rb +5 -3
  171. data/lib/fog/aws/parsers/dns/list_resource_record_sets.rb +2 -2
  172. data/lib/fog/aws/parsers/elb/describe_load_balancers.rb +3 -3
  173. data/lib/fog/aws/parsers/elbv2/create_load_balancer.rb +88 -0
  174. data/lib/fog/aws/parsers/elbv2/describe_listeners.rb +110 -0
  175. data/lib/fog/aws/parsers/elbv2/describe_load_balancers.rb +88 -0
  176. data/lib/fog/aws/parsers/elbv2/describe_tags.rb +53 -0
  177. data/lib/fog/aws/parsers/elbv2/empty.rb +10 -0
  178. data/lib/fog/aws/parsers/rds/db_parser.rb +41 -2
  179. data/lib/fog/aws/parsers/storage/access_control_list.rb +2 -2
  180. data/lib/fog/aws/parsers/storage/complete_multipart_upload.rb +2 -2
  181. data/lib/fog/aws/parsers/storage/copy_object.rb +2 -2
  182. data/lib/fog/aws/parsers/storage/cors_configuration.rb +2 -2
  183. data/lib/fog/aws/parsers/storage/delete_multiple_objects.rb +2 -2
  184. data/lib/fog/aws/parsers/storage/get_bucket.rb +2 -2
  185. data/lib/fog/aws/parsers/storage/get_bucket_lifecycle.rb +2 -2
  186. data/lib/fog/aws/parsers/storage/get_bucket_location.rb +2 -2
  187. data/lib/fog/aws/parsers/storage/get_bucket_logging.rb +2 -2
  188. data/lib/fog/aws/parsers/storage/get_bucket_notification.rb +2 -2
  189. data/lib/fog/aws/parsers/storage/get_bucket_object_versions.rb +2 -2
  190. data/lib/fog/aws/parsers/storage/get_bucket_tagging.rb +2 -2
  191. data/lib/fog/aws/parsers/storage/get_bucket_versioning.rb +2 -2
  192. data/lib/fog/aws/parsers/storage/get_bucket_website.rb +2 -2
  193. data/lib/fog/aws/parsers/storage/get_object_tagging.rb +33 -0
  194. data/lib/fog/aws/parsers/storage/get_request_payment.rb +2 -2
  195. data/lib/fog/aws/parsers/storage/get_service.rb +2 -2
  196. data/lib/fog/aws/parsers/storage/initiate_multipart_upload.rb +2 -2
  197. data/lib/fog/aws/parsers/storage/list_multipart_uploads.rb +2 -2
  198. data/lib/fog/aws/parsers/storage/list_parts.rb +2 -2
  199. data/lib/fog/aws/parsers/storage/upload_part_copy_object.rb +18 -0
  200. data/lib/fog/aws/parsers/sts/assume_role_with_web_identity.rb +1 -1
  201. data/lib/fog/aws/requests/auto_scaling/set_instance_protection.rb +67 -0
  202. data/lib/fog/aws/requests/cdn/delete_distribution.rb +6 -6
  203. data/lib/fog/aws/requests/cdn/delete_streaming_distribution.rb +6 -6
  204. data/lib/fog/aws/requests/cdn/get_distribution.rb +5 -5
  205. data/lib/fog/aws/requests/cdn/get_distribution_list.rb +3 -3
  206. data/lib/fog/aws/requests/cdn/get_invalidation.rb +5 -5
  207. data/lib/fog/aws/requests/cdn/get_invalidation_list.rb +4 -4
  208. data/lib/fog/aws/requests/cdn/get_streaming_distribution.rb +5 -5
  209. data/lib/fog/aws/requests/cdn/get_streaming_distribution_list.rb +3 -3
  210. data/lib/fog/aws/requests/cdn/post_distribution.rb +6 -6
  211. data/lib/fog/aws/requests/cdn/post_invalidation.rb +5 -5
  212. data/lib/fog/aws/requests/cdn/post_streaming_distribution.rb +6 -6
  213. data/lib/fog/aws/requests/cdn/put_distribution_config.rb +7 -7
  214. data/lib/fog/aws/requests/cdn/put_streaming_distribution_config.rb +7 -7
  215. data/lib/fog/aws/requests/cloud_watch/put_metric_alarm.rb +2 -2
  216. data/lib/fog/aws/requests/compute/allocate_address.rb +4 -4
  217. data/lib/fog/aws/requests/compute/assign_private_ip_addresses.rb +5 -5
  218. data/lib/fog/aws/requests/compute/associate_address.rb +7 -7
  219. data/lib/fog/aws/requests/compute/associate_dhcp_options.rb +4 -4
  220. data/lib/fog/aws/requests/compute/associate_route_table.rb +5 -5
  221. data/lib/fog/aws/requests/compute/attach_classic_link_vpc.rb +7 -7
  222. data/lib/fog/aws/requests/compute/attach_internet_gateway.rb +4 -4
  223. data/lib/fog/aws/requests/compute/attach_network_interface.rb +6 -6
  224. data/lib/fog/aws/requests/compute/attach_volume.rb +7 -7
  225. data/lib/fog/aws/requests/compute/authorize_security_group_egress.rb +6 -6
  226. data/lib/fog/aws/requests/compute/authorize_security_group_ingress.rb +11 -11
  227. data/lib/fog/aws/requests/compute/cancel_spot_instance_requests.rb +4 -4
  228. data/lib/fog/aws/requests/compute/copy_image.rb +3 -3
  229. data/lib/fog/aws/requests/compute/copy_snapshot.rb +3 -3
  230. data/lib/fog/aws/requests/compute/create_dhcp_options.rb +3 -3
  231. data/lib/fog/aws/requests/compute/create_image.rb +3 -3
  232. data/lib/fog/aws/requests/compute/create_internet_gateway.rb +3 -3
  233. data/lib/fog/aws/requests/compute/create_key_pair.rb +4 -4
  234. data/lib/fog/aws/requests/compute/create_network_acl.rb +4 -4
  235. data/lib/fog/aws/requests/compute/create_network_acl_entry.rb +5 -5
  236. data/lib/fog/aws/requests/compute/create_network_interface.rb +6 -6
  237. data/lib/fog/aws/requests/compute/create_placement_group.rb +3 -3
  238. data/lib/fog/aws/requests/compute/create_route.rb +10 -10
  239. data/lib/fog/aws/requests/compute/create_route_table.rb +4 -4
  240. data/lib/fog/aws/requests/compute/create_security_group.rb +4 -4
  241. data/lib/fog/aws/requests/compute/create_snapshot.rb +3 -3
  242. data/lib/fog/aws/requests/compute/create_spot_datafeed_subscription.rb +3 -3
  243. data/lib/fog/aws/requests/compute/create_subnet.rb +6 -6
  244. data/lib/fog/aws/requests/compute/create_tags.rb +3 -3
  245. data/lib/fog/aws/requests/compute/create_volume.rb +11 -11
  246. data/lib/fog/aws/requests/compute/create_vpc.rb +7 -7
  247. data/lib/fog/aws/requests/compute/delete_dhcp_options.rb +4 -4
  248. data/lib/fog/aws/requests/compute/delete_internet_gateway.rb +4 -4
  249. data/lib/fog/aws/requests/compute/delete_key_pair.rb +3 -3
  250. data/lib/fog/aws/requests/compute/delete_network_acl.rb +5 -5
  251. data/lib/fog/aws/requests/compute/delete_network_acl_entry.rb +5 -5
  252. data/lib/fog/aws/requests/compute/delete_network_interface.rb +5 -5
  253. data/lib/fog/aws/requests/compute/delete_placement_group.rb +3 -3
  254. data/lib/fog/aws/requests/compute/delete_route.rb +6 -6
  255. data/lib/fog/aws/requests/compute/delete_route_table.rb +5 -5
  256. data/lib/fog/aws/requests/compute/delete_security_group.rb +9 -9
  257. data/lib/fog/aws/requests/compute/delete_snapshot.rb +4 -4
  258. data/lib/fog/aws/requests/compute/delete_spot_datafeed_subscription.rb +3 -3
  259. data/lib/fog/aws/requests/compute/delete_subnet.rb +4 -4
  260. data/lib/fog/aws/requests/compute/delete_tags.rb +3 -3
  261. data/lib/fog/aws/requests/compute/delete_volume.rb +5 -5
  262. data/lib/fog/aws/requests/compute/delete_vpc.rb +4 -4
  263. data/lib/fog/aws/requests/compute/deregister_image.rb +4 -4
  264. data/lib/fog/aws/requests/compute/describe_account_attributes.rb +3 -3
  265. data/lib/fog/aws/requests/compute/describe_addresses.rb +3 -3
  266. data/lib/fog/aws/requests/compute/describe_availability_zones.rb +3 -3
  267. data/lib/fog/aws/requests/compute/describe_classic_link_instances.rb +3 -3
  268. data/lib/fog/aws/requests/compute/describe_dhcp_options.rb +3 -3
  269. data/lib/fog/aws/requests/compute/describe_image_attribute.rb +74 -0
  270. data/lib/fog/aws/requests/compute/describe_images.rb +3 -3
  271. data/lib/fog/aws/requests/compute/describe_instance_attribute.rb +4 -4
  272. data/lib/fog/aws/requests/compute/describe_instance_status.rb +3 -3
  273. data/lib/fog/aws/requests/compute/describe_instances.rb +4 -4
  274. data/lib/fog/aws/requests/compute/describe_internet_gateways.rb +3 -3
  275. data/lib/fog/aws/requests/compute/describe_key_pairs.rb +3 -3
  276. data/lib/fog/aws/requests/compute/describe_network_acls.rb +3 -3
  277. data/lib/fog/aws/requests/compute/describe_network_interface_attribute.rb +5 -5
  278. data/lib/fog/aws/requests/compute/describe_network_interfaces.rb +3 -3
  279. data/lib/fog/aws/requests/compute/describe_placement_groups.rb +3 -3
  280. data/lib/fog/aws/requests/compute/describe_regions.rb +3 -3
  281. data/lib/fog/aws/requests/compute/describe_reserved_instances.rb +3 -3
  282. data/lib/fog/aws/requests/compute/describe_reserved_instances_offerings.rb +3 -3
  283. data/lib/fog/aws/requests/compute/describe_route_tables.rb +3 -3
  284. data/lib/fog/aws/requests/compute/describe_security_groups.rb +15 -4
  285. data/lib/fog/aws/requests/compute/describe_snapshots.rb +3 -3
  286. data/lib/fog/aws/requests/compute/describe_spot_datafeed_subscription.rb +3 -3
  287. data/lib/fog/aws/requests/compute/describe_spot_instance_requests.rb +3 -3
  288. data/lib/fog/aws/requests/compute/describe_spot_price_history.rb +5 -5
  289. data/lib/fog/aws/requests/compute/describe_subnets.rb +3 -3
  290. data/lib/fog/aws/requests/compute/describe_tags.rb +3 -3
  291. data/lib/fog/aws/requests/compute/describe_volume_status.rb +3 -3
  292. data/lib/fog/aws/requests/compute/describe_volumes.rb +3 -3
  293. data/lib/fog/aws/requests/compute/describe_volumes_modifications.rb +3 -3
  294. data/lib/fog/aws/requests/compute/describe_vpc_attribute.rb +5 -5
  295. data/lib/fog/aws/requests/compute/describe_vpc_classic_link.rb +4 -4
  296. data/lib/fog/aws/requests/compute/describe_vpc_classic_link_dns_support.rb +3 -3
  297. data/lib/fog/aws/requests/compute/describe_vpcs.rb +3 -3
  298. data/lib/fog/aws/requests/compute/detach_classic_link_vpc.rb +5 -5
  299. data/lib/fog/aws/requests/compute/detach_internet_gateway.rb +4 -4
  300. data/lib/fog/aws/requests/compute/detach_network_interface.rb +4 -4
  301. data/lib/fog/aws/requests/compute/detach_volume.rb +5 -5
  302. data/lib/fog/aws/requests/compute/disable_vpc_classic_link.rb +4 -4
  303. data/lib/fog/aws/requests/compute/disable_vpc_classic_link_dns_support.rb +4 -4
  304. data/lib/fog/aws/requests/compute/disassociate_address.rb +5 -5
  305. data/lib/fog/aws/requests/compute/disassociate_route_table.rb +5 -5
  306. data/lib/fog/aws/requests/compute/enable_vpc_classic_link.rb +4 -4
  307. data/lib/fog/aws/requests/compute/enable_vpc_classic_link_dns_support.rb +4 -4
  308. data/lib/fog/aws/requests/compute/get_console_output.rb +4 -4
  309. data/lib/fog/aws/requests/compute/get_password_data.rb +4 -4
  310. data/lib/fog/aws/requests/compute/import_key_pair.rb +4 -4
  311. data/lib/fog/aws/requests/compute/modify_image_attribute.rb +4 -4
  312. data/lib/fog/aws/requests/compute/modify_instance_attribute.rb +3 -3
  313. data/lib/fog/aws/requests/compute/modify_instance_placement.rb +33 -0
  314. data/lib/fog/aws/requests/compute/modify_network_interface_attribute.rb +8 -8
  315. data/lib/fog/aws/requests/compute/modify_snapshot_attribute.rb +3 -3
  316. data/lib/fog/aws/requests/compute/modify_subnet_attribute.rb +3 -3
  317. data/lib/fog/aws/requests/compute/modify_volume.rb +5 -5
  318. data/lib/fog/aws/requests/compute/modify_volume_attribute.rb +4 -4
  319. data/lib/fog/aws/requests/compute/modify_vpc_attribute.rb +7 -7
  320. data/lib/fog/aws/requests/compute/monitor_instances.rb +4 -4
  321. data/lib/fog/aws/requests/compute/move_address_to_vpc.rb +4 -4
  322. data/lib/fog/aws/requests/compute/purchase_reserved_instances_offering.rb +3 -3
  323. data/lib/fog/aws/requests/compute/reboot_instances.rb +4 -4
  324. data/lib/fog/aws/requests/compute/register_image.rb +4 -4
  325. data/lib/fog/aws/requests/compute/release_address.rb +5 -5
  326. data/lib/fog/aws/requests/compute/replace_network_acl_association.rb +5 -5
  327. data/lib/fog/aws/requests/compute/replace_network_acl_entry.rb +5 -5
  328. data/lib/fog/aws/requests/compute/replace_route.rb +10 -10
  329. data/lib/fog/aws/requests/compute/request_spot_instances.rb +8 -8
  330. data/lib/fog/aws/requests/compute/reset_network_interface_attribute.rb +6 -6
  331. data/lib/fog/aws/requests/compute/restore_address_to_classic.rb +5 -5
  332. data/lib/fog/aws/requests/compute/revoke_security_group_egress.rb +4 -4
  333. data/lib/fog/aws/requests/compute/revoke_security_group_ingress.rb +4 -4
  334. data/lib/fog/aws/requests/compute/run_instances.rb +24 -4
  335. data/lib/fog/aws/requests/compute/start_instances.rb +4 -4
  336. data/lib/fog/aws/requests/compute/stop_instances.rb +15 -7
  337. data/lib/fog/aws/requests/compute/terminate_instances.rb +4 -4
  338. data/lib/fog/aws/requests/compute/unmonitor_instances.rb +4 -4
  339. data/lib/fog/aws/requests/dns/change_resource_record_sets.rb +6 -139
  340. data/lib/fog/aws/requests/dns/create_health_check.rb +3 -3
  341. data/lib/fog/aws/requests/dns/create_hosted_zone.rb +4 -4
  342. data/lib/fog/aws/requests/dns/delete_health_check.rb +2 -2
  343. data/lib/fog/aws/requests/dns/delete_hosted_zone.rb +4 -4
  344. data/lib/fog/aws/requests/dns/get_change.rb +4 -4
  345. data/lib/fog/aws/requests/dns/get_health_check.rb +3 -3
  346. data/lib/fog/aws/requests/dns/get_hosted_zone.rb +4 -4
  347. data/lib/fog/aws/requests/dns/list_health_checks.rb +3 -3
  348. data/lib/fog/aws/requests/dns/list_hosted_zones.rb +3 -3
  349. data/lib/fog/aws/requests/dns/list_resource_record_sets.rb +5 -5
  350. data/lib/fog/aws/requests/dynamodb/update_item.rb +6 -5
  351. data/lib/fog/aws/requests/efs/create_file_system.rb +15 -3
  352. data/lib/fog/aws/requests/elb/create_load_balancer.rb +7 -7
  353. data/lib/fog/aws/requests/elb/deregister_instances_from_load_balancer.rb +1 -1
  354. data/lib/fog/aws/requests/elb/describe_instance_health.rb +1 -1
  355. data/lib/fog/aws/requests/elb/describe_tags.rb +1 -1
  356. data/lib/fog/aws/requests/elb/register_instances_with_load_balancer.rb +1 -1
  357. data/lib/fog/aws/requests/elbv2/add_tags.rb +45 -0
  358. data/lib/fog/aws/requests/elbv2/create_load_balancer.rb +160 -0
  359. data/lib/fog/aws/requests/elbv2/describe_listeners.rb +38 -0
  360. data/lib/fog/aws/requests/elbv2/describe_load_balancers.rb +100 -0
  361. data/lib/fog/aws/requests/elbv2/describe_tags.rb +50 -0
  362. data/lib/fog/aws/requests/elbv2/remove_tags.rb +45 -0
  363. data/lib/fog/aws/requests/lambda/invoke.rb +7 -7
  364. data/lib/fog/aws/requests/rds/authorize_db_security_group_ingress.rb +1 -1
  365. data/lib/fog/aws/requests/rds/create_db_instance.rb +1 -1
  366. data/lib/fog/aws/requests/rds/create_db_subnet_group.rb +2 -2
  367. data/lib/fog/aws/requests/rds/modify_db_instance.rb +1 -1
  368. data/lib/fog/aws/requests/rds/revoke_db_security_group_ingress.rb +1 -1
  369. data/lib/fog/aws/requests/storage/abort_multipart_upload.rb +3 -3
  370. data/lib/fog/aws/requests/storage/acl_utils.rb +3 -3
  371. data/lib/fog/aws/requests/storage/complete_multipart_upload.rb +4 -4
  372. data/lib/fog/aws/requests/storage/copy_object.rb +3 -3
  373. data/lib/fog/aws/requests/storage/cors_utils.rb +3 -3
  374. data/lib/fog/aws/requests/storage/delete_bucket.rb +2 -2
  375. data/lib/fog/aws/requests/storage/delete_bucket_cors.rb +2 -2
  376. data/lib/fog/aws/requests/storage/delete_bucket_lifecycle.rb +2 -2
  377. data/lib/fog/aws/requests/storage/delete_bucket_policy.rb +2 -2
  378. data/lib/fog/aws/requests/storage/delete_bucket_tagging.rb +2 -2
  379. data/lib/fog/aws/requests/storage/delete_bucket_website.rb +2 -2
  380. data/lib/fog/aws/requests/storage/delete_multiple_objects.rb +21 -11
  381. data/lib/fog/aws/requests/storage/delete_object.rb +2 -2
  382. data/lib/fog/aws/requests/storage/delete_object_url.rb +2 -2
  383. data/lib/fog/aws/requests/storage/get_bucket.rb +3 -3
  384. data/lib/fog/aws/requests/storage/get_bucket_acl.rb +4 -4
  385. data/lib/fog/aws/requests/storage/get_bucket_cors.rb +4 -4
  386. data/lib/fog/aws/requests/storage/get_bucket_lifecycle.rb +3 -3
  387. data/lib/fog/aws/requests/storage/get_bucket_location.rb +5 -6
  388. data/lib/fog/aws/requests/storage/get_bucket_logging.rb +3 -3
  389. data/lib/fog/aws/requests/storage/get_bucket_notification.rb +3 -3
  390. data/lib/fog/aws/requests/storage/get_bucket_object_versions.rb +3 -3
  391. data/lib/fog/aws/requests/storage/get_bucket_policy.rb +2 -2
  392. data/lib/fog/aws/requests/storage/get_bucket_tagging.rb +3 -3
  393. data/lib/fog/aws/requests/storage/get_bucket_versioning.rb +3 -3
  394. data/lib/fog/aws/requests/storage/get_bucket_website.rb +3 -3
  395. data/lib/fog/aws/requests/storage/get_object.rb +2 -2
  396. data/lib/fog/aws/requests/storage/get_object_acl.rb +4 -4
  397. data/lib/fog/aws/requests/storage/get_object_http_url.rb +2 -2
  398. data/lib/fog/aws/requests/storage/get_object_https_url.rb +2 -2
  399. data/lib/fog/aws/requests/storage/get_object_tagging.rb +41 -0
  400. data/lib/fog/aws/requests/storage/get_object_torrent.rb +2 -2
  401. data/lib/fog/aws/requests/storage/get_object_url.rb +2 -2
  402. data/lib/fog/aws/requests/storage/get_request_payment.rb +3 -3
  403. data/lib/fog/aws/requests/storage/get_service.rb +5 -5
  404. data/lib/fog/aws/requests/storage/head_bucket.rb +2 -2
  405. data/lib/fog/aws/requests/storage/head_object.rb +2 -2
  406. data/lib/fog/aws/requests/storage/head_object_url.rb +2 -2
  407. data/lib/fog/aws/requests/storage/initiate_multipart_upload.rb +4 -4
  408. data/lib/fog/aws/requests/storage/list_multipart_uploads.rb +3 -3
  409. data/lib/fog/aws/requests/storage/list_parts.rb +3 -3
  410. data/lib/fog/aws/requests/storage/post_object_hidden_fields.rb +2 -2
  411. data/lib/fog/aws/requests/storage/post_object_restore.rb +2 -2
  412. data/lib/fog/aws/requests/storage/put_bucket.rb +2 -2
  413. data/lib/fog/aws/requests/storage/put_bucket_acl.rb +4 -4
  414. data/lib/fog/aws/requests/storage/put_bucket_cors.rb +4 -4
  415. data/lib/fog/aws/requests/storage/put_bucket_lifecycle.rb +2 -2
  416. data/lib/fog/aws/requests/storage/put_bucket_logging.rb +2 -2
  417. data/lib/fog/aws/requests/storage/put_bucket_notification.rb +2 -2
  418. data/lib/fog/aws/requests/storage/put_bucket_policy.rb +2 -2
  419. data/lib/fog/aws/requests/storage/put_bucket_tagging.rb +2 -2
  420. data/lib/fog/aws/requests/storage/put_bucket_versioning.rb +2 -2
  421. data/lib/fog/aws/requests/storage/put_bucket_website.rb +2 -2
  422. data/lib/fog/aws/requests/storage/put_object.rb +9 -7
  423. data/lib/fog/aws/requests/storage/put_object_acl.rb +4 -4
  424. data/lib/fog/aws/requests/storage/put_object_tagging.rb +42 -0
  425. data/lib/fog/aws/requests/storage/put_object_url.rb +2 -2
  426. data/lib/fog/aws/requests/storage/put_request_payment.rb +2 -2
  427. data/lib/fog/aws/requests/storage/shared_mock_methods.rb +4 -3
  428. data/lib/fog/aws/requests/storage/sync_clock.rb +2 -2
  429. data/lib/fog/aws/requests/storage/upload_part.rb +3 -3
  430. data/lib/fog/aws/requests/storage/upload_part_copy.rb +119 -0
  431. data/lib/fog/aws/requests/sts/assume_role_with_web_identity.rb +7 -6
  432. data/lib/fog/aws/service_mapper.rb +5 -5
  433. data/lib/fog/aws/storage.rb +50 -19
  434. data/lib/fog/aws/version.rb +1 -1
  435. data/tests/credentials_tests.rb +102 -39
  436. data/tests/helper.rb +2 -2
  437. data/tests/helpers/collection_helper.rb +3 -4
  438. data/tests/helpers/compute/flavors_helper.rb +1 -5
  439. data/tests/helpers/compute/server_helper.rb +1 -3
  440. data/tests/helpers/compute/servers_helper.rb +0 -2
  441. data/tests/helpers/dns_helper.rb +32 -31
  442. data/tests/helpers/formats_helper.rb +58 -56
  443. data/tests/helpers/formats_helper_tests.rb +22 -25
  444. data/tests/helpers/mock_helper.rb +96 -96
  445. data/tests/helpers/model_helper.rb +4 -5
  446. data/tests/helpers/responds_to_helper.rb +1 -1
  447. data/tests/helpers/schema_validator_tests.rb +21 -24
  448. data/tests/helpers/succeeds_helper.rb +2 -2
  449. data/tests/models/compute/address_tests.rb +1 -1
  450. data/tests/models/compute/network_acl_tests.rb +4 -4
  451. data/tests/models/compute/security_group_tests.rb +1 -1
  452. data/tests/models/compute/volume_tests.rb +1 -1
  453. data/tests/models/elb/model_tests.rb +1 -1
  454. data/tests/models/storage/directory_tests.rb +113 -2
  455. data/tests/models/storage/files_tests.rb +32 -0
  456. data/tests/parsers/compute/describe_images_tests.rb +2 -2
  457. data/tests/parsers/elb/describe_load_balancers.rb +1 -1
  458. data/tests/parsers/elbv2/create_load_balancer_tests.rb +48 -0
  459. data/tests/parsers/elbv2/describe_listeners_tests.rb +76 -0
  460. data/tests/parsers/elbv2/describe_load_balancers_tests.rb +54 -0
  461. data/tests/parsers/elbv2/describe_tags_tests.rb +35 -0
  462. data/tests/requests/auto_scaling/auto_scaling_tests.rb +8 -0
  463. data/tests/requests/compute/address_tests.rb +9 -9
  464. data/tests/requests/compute/assign_private_ip_tests.rb +3 -3
  465. data/tests/requests/compute/image_tests.rb +11 -2
  466. data/tests/requests/compute/instance_attrib_tests.rb +1 -1
  467. data/tests/requests/compute/instance_tests.rb +5 -5
  468. data/tests/requests/compute/internet_gateway_tests.rb +1 -1
  469. data/tests/requests/compute/key_pair_tests.rb +1 -1
  470. data/tests/requests/compute/network_acl_tests.rb +2 -2
  471. data/tests/requests/compute/network_interface_tests.rb +6 -6
  472. data/tests/requests/compute/placement_group_tests.rb +2 -2
  473. data/tests/requests/compute/region_tests.rb +4 -4
  474. data/tests/requests/compute/route_tests.rb +24 -24
  475. data/tests/requests/compute/security_group_tests.rb +14 -14
  476. data/tests/requests/compute/snapshot_tests.rb +1 -1
  477. data/tests/requests/compute/spot_datafeed_subscription_tests.rb +1 -1
  478. data/tests/requests/compute/subnet_tests.rb +3 -3
  479. data/tests/requests/compute/tag_tests.rb +3 -3
  480. data/tests/requests/compute/volume_tests.rb +11 -11
  481. data/tests/requests/compute/vpc_tests.rb +9 -3
  482. data/tests/requests/dns/change_resource_record_sets_tests.rb +3 -3
  483. data/tests/requests/efs/helper.rb +2 -0
  484. data/tests/requests/elbv2/helper.rb +66 -0
  485. data/tests/requests/elbv2/load_balancer_tests.rb +50 -0
  486. data/tests/requests/glacier/tree_hash_tests.rb +29 -0
  487. data/tests/requests/storage/acl_utils_tests.rb +24 -24
  488. data/tests/requests/storage/bucket_tests.rb +1 -1
  489. data/tests/requests/storage/cors_utils_tests.rb +14 -14
  490. data/tests/requests/storage/multipart_copy_tests.rb +93 -0
  491. data/tests/requests/storage/object_tests.rb +7 -0
  492. data/tests/requests/storage/versioning_tests.rb +38 -0
  493. data/tests/requests/sts/assume_role_with_web_identity_tests.rb +2 -0
  494. data/tests/signaturev4_tests.rb +21 -22
  495. data/tests/signed_params_tests.rb +7 -7
  496. data/tests/storage_tests.rb +1 -1
  497. metadata +61 -17
  498. data/.travis.yml +0 -55
  499. data/gemfiles/Gemfile-ruby-2.0 +0 -7
@@ -10,6 +10,8 @@ class AWS
10
10
  "NumberOfMountTargets" => Integer,
11
11
  "OwnerId" => String,
12
12
  "PerformanceMode" => String,
13
+ "Encrypted" => Fog::Nullable::Boolean,
14
+ "KmsKeyId" => Fog::Nullable::String,
13
15
  "SizeInBytes" => {
14
16
  "Timestamp" => Fog::Nullable::Float,
15
17
  "Value" => Integer
@@ -0,0 +1,66 @@
1
+ class AWS
2
+ module ELBV2
3
+ module Formats
4
+ BASIC = {
5
+ 'ResponseMetadata' => {'RequestId' => String}
6
+ }
7
+
8
+ LOAD_BALANCER = {
9
+ "AvailabilityZones" => [{
10
+ "SubnetId" => String, "ZoneName" => String,
11
+ "LoadBalancerAddresses" => [Fog::Nullable::Hash]
12
+ }],
13
+ "LoadBalancerArn" => String,
14
+ "DNSName" => String,
15
+ "CreatedTime" => Time,
16
+ "LoadBalancerName" => String,
17
+ "VpcId" => String,
18
+ "CanonicalHostedZoneId" => String,
19
+ "Scheme" => String,
20
+ "Type" => String,
21
+ "State" => {"Code" => String},
22
+ "SecurityGroups" => [Fog::Nullable::String]
23
+ }
24
+
25
+ DESCRIBE_LOAD_BALANCERS = BASIC.merge({
26
+ 'DescribeLoadBalancersResult' => {'LoadBalancers' => [LOAD_BALANCER], 'NextMarker' => Fog::Nullable::String}
27
+ })
28
+
29
+ CREATE_LOAD_BALANCER = BASIC.merge({
30
+ 'CreateLoadBalancerResult' => {'LoadBalancers' => [LOAD_BALANCER]}
31
+ })
32
+
33
+ LISTENER_DEFAULT_ACTIONS = [{
34
+ "Type" => String,
35
+ "Order" => String,
36
+ "TargetGroupArn" => String,
37
+ "RedirectConfig" => Fog::Nullable::Hash,
38
+ "ForwardConfig" => Fog::Nullable::Hash,
39
+ "FixedResponseConfig" => Fog::Nullable::Hash
40
+ }]
41
+
42
+ LISTENER = {
43
+ "LoadBalancerArn" => String,
44
+ "Protocol" => String,
45
+ "Port" => String,
46
+ "ListenerArn" => String,
47
+ "SslPolicy" => String,
48
+ "DefaultActions" => LISTENER_DEFAULT_ACTIONS,
49
+ "Certificates" => [{"CertificateArn" => String}]
50
+ }
51
+
52
+ DESCRIBE_LISTENERS = BASIC.merge({
53
+ 'DescribeListenersResult' => {'Listeners' => [LISTENER], 'NextMarker' => Fog::Nullable::String}
54
+ })
55
+
56
+ TAG_DESCRIPTIONS = [{
57
+ "Tags" => Hash,
58
+ "ResourceArn" => String
59
+ }]
60
+
61
+ DESCRIBE_TAGS = BASIC.merge({
62
+ 'DescribeTagsResult' => {'TagDescriptions' => TAG_DESCRIPTIONS}
63
+ })
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,50 @@
1
+ Shindo.tests('AWS::ELBV2 | load_balancer_tests', ['aws', 'elb']) do
2
+ @load_balancer_id = 'fog-test-elb'
3
+ @key_name = 'fog-test'
4
+ vpc = Fog::Compute[:aws].create_vpc('10.255.254.64/28').body['vpcSet'].first
5
+ @subnet_id = Fog::Compute[:aws].create_subnet(vpc['vpcId'], vpc['cidrBlock']).body['subnet']['subnetId']
6
+ @tags = { 'test1' => 'Value1', 'test2' => 'Value2' }
7
+
8
+ tests('success') do
9
+ tests('#create_load_balancer').formats(AWS::ELBV2::Formats::CREATE_LOAD_BALANCER) do
10
+ options = {
11
+ subnets: [@subnet_id]
12
+ }
13
+ load_balancer = Fog::AWS[:elbv2].create_load_balancer(@load_balancer_id, options).body
14
+ @load_balancer_arn = load_balancer['CreateLoadBalancerResult']['LoadBalancers'].first['LoadBalancerArn']
15
+ load_balancer
16
+ end
17
+
18
+ tests('#describe_load_balancers').formats(AWS::ELBV2::Formats::DESCRIBE_LOAD_BALANCERS) do
19
+ Fog::AWS[:elbv2].describe_load_balancers.body
20
+ end
21
+
22
+ tests('#describe_load_balancers with bad name') do
23
+ raises(Fog::AWS::ELBV2::NotFound) { Fog::AWS[:elbv2].describe_load_balancers('LoadBalancerNames' => 'none-such-lb') }
24
+ end
25
+
26
+ tests("#add_tags('#{@load_balancer_arn}', #{@tags})").formats(AWS::ELBV2::Formats::BASIC) do
27
+ Fog::AWS[:elbv2].add_tags(@load_balancer_arn, @tags).body
28
+ end
29
+
30
+ tests('#describe_tags').formats(AWS::ELBV2::Formats::DESCRIBE_TAGS) do
31
+ Fog::AWS[:elbv2].describe_tags(@load_balancer_arn).body
32
+ end
33
+
34
+ tests('#describe_tags with at least one wrong arn') do
35
+ raises(Fog::AWS::ELBV2::NotFound) { Fog::AWS[:elbv2].describe_tags([@load_balancer_arn, 'wrong_arn']) }
36
+ end
37
+
38
+ tests("#describe_tags(#{@load_balancer_arn})").returns(@tags) do
39
+ Fog::AWS[:elbv2].describe_tags(@load_balancer_arn).body['DescribeTagsResult']['TagDescriptions'].first['Tags']
40
+ end
41
+
42
+ tests("#remove_tags('#{@load_balancer_arn}', #{@tags.keys})").formats(AWS::ELBV2::Formats::BASIC) do
43
+ Fog::AWS[:elbv2].remove_tags(@load_balancer_arn, @tags.keys).body
44
+ end
45
+
46
+ tests("#describe_tags(#{@load_balancer_arn})").returns({}) do
47
+ Fog::AWS[:elbv2].describe_tags(@load_balancer_arn).body['DescribeTagsResult']['TagDescriptions'].first['Tags']
48
+ end
49
+ end
50
+ end
@@ -59,4 +59,33 @@ Shindo.tests('AWS::Glacier | glacier tree hash calcuation', ['aws']) do
59
59
 
60
60
  end
61
61
 
62
+ # Aligned is used in general sense of https://en.wikipedia.org/wiki/Data_structure_alignment
63
+ # except we are not dealing with data in memory, but with parts in "virtual" space of whole file.
64
+ # Tests for https://github.com/fog/fog-aws/issues/520 and https://github.com/fog/fog-aws/issues/521
65
+ tests('multipart with unaligned parts') do
66
+ tree_hash = Fog::AWS::Glacier::TreeHash.new
67
+ part = ('x' * 512*1024)
68
+ returns(Fog::AWS::Glacier::TreeHash.digest(part)) { tree_hash.add_part part }
69
+
70
+ # At this point, we have 0.5MB in tree_hash. That means that the next part we add will not be aligned,
71
+ # because it will start on 0.5MB which is not 1MB boundary.
72
+ part2 = ('x' * 512*1024) + ('y'*1024*1024) + ('z'* 512*1024)
73
+ returns(Fog::AWS::Glacier::TreeHash.digest(part + part2)) { tree_hash.add_part part2 ; tree_hash.hexdigest }
74
+
75
+ # Here we are adding another 1.5MB to tree_hash which has size of 3.5MB. Again, 3.5MB is not on 1MB boundary,
76
+ # so this is another unaligned part. It does test different part of code, though.
77
+ tree_hash.add_part('z'* 512*1024 + 't'*1024*1024)
78
+
79
+ expected = OpenSSL::Digest::SHA256.hexdigest(
80
+ OpenSSL::Digest::SHA256.digest(
81
+ OpenSSL::Digest::SHA256.digest('x' * 1024*1024) + OpenSSL::Digest::SHA256.digest('y' * 1024*1024)
82
+ ) +
83
+ OpenSSL::Digest::SHA256.digest(
84
+ OpenSSL::Digest::SHA256.digest('z' * 1024*1024) + OpenSSL::Digest::SHA256.digest('t' * 1024*1024)
85
+ )
86
+ )
87
+ returns(expected) { tree_hash.hexdigest}
88
+
89
+ end
90
+
62
91
  end
@@ -1,44 +1,44 @@
1
1
  require 'fog/aws/requests/storage/acl_utils'
2
2
 
3
- Shindo.tests('Fog::Storage::AWS | ACL utils', ["aws"]) do
3
+ Shindo.tests('Fog::AWS::Storage | ACL utils', ["aws"]) do
4
4
  tests(".hash_to_acl") do
5
5
  tests(".hash_to_acl({}) at xpath //AccessControlPolicy").returns("", "has an empty AccessControlPolicy") do
6
- xml = Fog::Storage::AWS.hash_to_acl({})
6
+ xml = Fog::AWS::Storage.hash_to_acl({})
7
7
  Nokogiri::XML(xml).xpath("//AccessControlPolicy").first.content.chomp
8
8
  end
9
9
 
10
10
  tests(".hash_to_acl({}) at xpath //AccessControlPolicy/Owner").returns(nil, "does not have an Owner element") do
11
- xml = Fog::Storage::AWS.hash_to_acl({})
11
+ xml = Fog::AWS::Storage.hash_to_acl({})
12
12
  Nokogiri::XML(xml).xpath("//AccessControlPolicy/Owner").first
13
13
  end
14
14
 
15
15
  tests(".hash_to_acl('Owner' => {}) at xpath //AccessControlPolicy/Owner").returns(nil, "does not have an Owner element") do
16
- xml = Fog::Storage::AWS.hash_to_acl('Owner' => {})
16
+ xml = Fog::AWS::Storage.hash_to_acl('Owner' => {})
17
17
  Nokogiri::XML(xml).xpath("//AccessControlPolicy/Owner").first
18
18
  end
19
19
 
20
20
  tests(".hash_to_acl('Owner' => {'ID' => 'abcdef0123456789'}) at xpath //AccessControlPolicy/Owner/ID").returns("abcdef0123456789", "returns the Owner ID") do
21
- xml = Fog::Storage::AWS.hash_to_acl('Owner' => {'ID' => 'abcdef0123456789'})
21
+ xml = Fog::AWS::Storage.hash_to_acl('Owner' => {'ID' => 'abcdef0123456789'})
22
22
  Nokogiri::XML(xml).xpath("//AccessControlPolicy/Owner/ID").first.content
23
23
  end
24
24
 
25
25
  tests(".hash_to_acl('Owner' => {'DisplayName' => 'bob'}) at xpath //AccessControlPolicy/Owner/ID").returns(nil, "does not have an Owner ID element") do
26
- xml = Fog::Storage::AWS.hash_to_acl('Owner' => {'DisplayName' => 'bob'})
26
+ xml = Fog::AWS::Storage.hash_to_acl('Owner' => {'DisplayName' => 'bob'})
27
27
  Nokogiri::XML(xml).xpath("//AccessControlPolicy/Owner/ID").first
28
28
  end
29
29
 
30
30
  tests(".hash_to_acl('Owner' => {'DisplayName' => 'bob'}) at xpath //AccessControlPolicy/Owner/DisplayName").returns("bob", "returns the Owner DisplayName") do
31
- xml = Fog::Storage::AWS.hash_to_acl('Owner' => {'DisplayName' => 'bob'})
31
+ xml = Fog::AWS::Storage.hash_to_acl('Owner' => {'DisplayName' => 'bob'})
32
32
  Nokogiri::XML(xml).xpath("//AccessControlPolicy/Owner/DisplayName").first.content
33
33
  end
34
34
 
35
35
  tests(".hash_to_acl('Owner' => {'ID' => 'abcdef0123456789'}) at xpath //AccessControlPolicy/Owner/DisplayName").returns(nil, "does not have an Owner DisplayName element") do
36
- xml = Fog::Storage::AWS.hash_to_acl('Owner' => {'ID' => 'abcdef0123456789'})
36
+ xml = Fog::AWS::Storage.hash_to_acl('Owner' => {'ID' => 'abcdef0123456789'})
37
37
  Nokogiri::XML(xml).xpath("//AccessControlPolicy/Owner/DisplayName").first
38
38
  end
39
39
 
40
40
  tests(".hash_to_acl({}) at xpath //AccessControlPolicy/AccessControlList").returns(nil, "has no AccessControlList") do
41
- xml = Fog::Storage::AWS.hash_to_acl({})
41
+ xml = Fog::AWS::Storage.hash_to_acl({})
42
42
  Nokogiri::XML(xml).xpath("//AccessControlPolicy/AccessControlPolicy").first
43
43
  end
44
44
 
@@ -55,22 +55,22 @@ Shindo.tests('Fog::Storage::AWS | ACL utils', ["aws"]) do
55
55
  }
56
56
 
57
57
  tests(".hash_to_acl(#{acl.inspect}) at xpath //AccessControlPolicy/AccessControlList/Grant/Grantee").returns("CanonicalUser", "has an xsi:type of CanonicalUser") do
58
- xml = Fog::Storage::AWS.hash_to_acl(acl)
58
+ xml = Fog::AWS::Storage.hash_to_acl(acl)
59
59
  Nokogiri::XML(xml).xpath("//AccessControlPolicy/AccessControlList/Grant/Grantee").first.attributes["type"].value
60
60
  end
61
61
 
62
62
  tests(".hash_to_acl(#{acl.inspect}) at xpath //AccessControlPolicy/AccessControlList/Grant/Grantee/ID").returns("abcdef0123456789", "returns the Grantee ID") do
63
- xml = Fog::Storage::AWS.hash_to_acl(acl)
63
+ xml = Fog::AWS::Storage.hash_to_acl(acl)
64
64
  Nokogiri::XML(xml).xpath("//AccessControlPolicy/AccessControlList/Grant/Grantee/ID").first.content
65
65
  end
66
66
 
67
67
  tests(".hash_to_acl(#{acl.inspect}) at xpath //AccessControlPolicy/AccessControlList/Grant/Grantee/DisplayName").returns("bob", "returns the Grantee DisplayName") do
68
- xml = Fog::Storage::AWS.hash_to_acl(acl)
68
+ xml = Fog::AWS::Storage.hash_to_acl(acl)
69
69
  Nokogiri::XML(xml).xpath("//AccessControlPolicy/AccessControlList/Grant/Grantee/DisplayName").first.content
70
70
  end
71
71
 
72
72
  tests(".hash_to_acl(#{acl.inspect}) at xpath //AccessControlPolicy/AccessControlList/Grant/Permission").returns("READ", "returns the Grantee Permission") do
73
- xml = Fog::Storage::AWS.hash_to_acl(acl)
73
+ xml = Fog::AWS::Storage.hash_to_acl(acl)
74
74
  Nokogiri::XML(xml).xpath("//AccessControlPolicy/AccessControlList/Grant/Permission").first.content
75
75
  end
76
76
 
@@ -86,17 +86,17 @@ Shindo.tests('Fog::Storage::AWS | ACL utils', ["aws"]) do
86
86
  }
87
87
 
88
88
  tests(".hash_to_acl(#{acl.inspect}) at xpath //AccessControlPolicy/AccessControlList/Grant/Grantee").returns("AmazonCustomerByEmail", "has an xsi:type of AmazonCustomerByEmail") do
89
- xml = Fog::Storage::AWS.hash_to_acl(acl)
89
+ xml = Fog::AWS::Storage.hash_to_acl(acl)
90
90
  Nokogiri::XML(xml).xpath("//AccessControlPolicy/AccessControlList/Grant/Grantee").first.attributes["type"].value
91
91
  end
92
92
 
93
93
  tests(".hash_to_acl(#{acl.inspect}) at xpath //AccessControlPolicy/AccessControlList/Grant/Grantee/EmailAddress").returns("user@example.com", "returns the Grantee EmailAddress") do
94
- xml = Fog::Storage::AWS.hash_to_acl(acl)
94
+ xml = Fog::AWS::Storage.hash_to_acl(acl)
95
95
  Nokogiri::XML(xml).xpath("//AccessControlPolicy/AccessControlList/Grant/Grantee/EmailAddress").first.content
96
96
  end
97
97
 
98
98
  tests(".hash_to_acl(#{acl.inspect}) at xpath //AccessControlPolicy/AccessControlList/Grant/Permission").returns("FULL_CONTROL", "returns the Grantee Permission") do
99
- xml = Fog::Storage::AWS.hash_to_acl(acl)
99
+ xml = Fog::AWS::Storage.hash_to_acl(acl)
100
100
  Nokogiri::XML(xml).xpath("//AccessControlPolicy/AccessControlList/Grant/Permission").first.content
101
101
  end
102
102
 
@@ -112,17 +112,17 @@ Shindo.tests('Fog::Storage::AWS | ACL utils', ["aws"]) do
112
112
  }
113
113
 
114
114
  tests(".hash_to_acl(#{acl.inspect}) at xpath //AccessControlPolicy/AccessControlList/Grant/Grantee").returns("Group", "has an xsi:type of Group") do
115
- xml = Fog::Storage::AWS.hash_to_acl(acl)
115
+ xml = Fog::AWS::Storage.hash_to_acl(acl)
116
116
  Nokogiri::XML(xml).xpath("//AccessControlPolicy/AccessControlList/Grant/Grantee").first.attributes["type"].value
117
117
  end
118
118
 
119
119
  tests(".hash_to_acl(#{acl.inspect}) at xpath //AccessControlPolicy/AccessControlList/Grant/Grantee/URI").returns("http://acs.amazonaws.com/groups/global/AllUsers", "returns the Grantee URI") do
120
- xml = Fog::Storage::AWS.hash_to_acl(acl)
120
+ xml = Fog::AWS::Storage.hash_to_acl(acl)
121
121
  Nokogiri::XML(xml).xpath("//AccessControlPolicy/AccessControlList/Grant/Grantee/URI").first.content
122
122
  end
123
123
 
124
124
  tests(".hash_to_acl(#{acl.inspect}) at xpath //AccessControlPolicy/AccessControlList/Grant/Permission").returns("WRITE", "returns the Grantee Permission") do
125
- xml = Fog::Storage::AWS.hash_to_acl(acl)
125
+ xml = Fog::AWS::Storage.hash_to_acl(acl)
126
126
  Nokogiri::XML(xml).xpath("//AccessControlPolicy/AccessControlList/Grant/Permission").first.content
127
127
  end
128
128
 
@@ -151,22 +151,22 @@ Shindo.tests('Fog::Storage::AWS | ACL utils', ["aws"]) do
151
151
  }
152
152
 
153
153
  tests(".hash_to_acl(#{acl.inspect}) at xpath //AccessControlPolicy/AccessControlList/Grant").returns(3, "has three elements") do
154
- xml = Fog::Storage::AWS.hash_to_acl(acl)
154
+ xml = Fog::AWS::Storage.hash_to_acl(acl)
155
155
  Nokogiri::XML(xml).xpath("//AccessControlPolicy/AccessControlList/Grant").size
156
156
  end
157
157
 
158
158
  tests(".hash_to_acl(#{acl.inspect}) at xpath //AccessControlPolicy/AccessControlList/Grant/Grantee/ID").returns("abcdef0123456789", "returns the first Grant's Grantee ID") do
159
- xml = Fog::Storage::AWS.hash_to_acl(acl)
159
+ xml = Fog::AWS::Storage.hash_to_acl(acl)
160
160
  Nokogiri::XML(xml).xpath("//AccessControlPolicy/AccessControlList/Grant/Grantee/ID").first.content
161
161
  end
162
162
 
163
163
  tests(".hash_to_acl(#{acl.inspect}) at xpath //AccessControlPolicy/AccessControlList/Grant/Grantee/EmailAddress").returns("user@example.com", "returns the second Grant's Grantee EmailAddress") do
164
- xml = Fog::Storage::AWS.hash_to_acl(acl)
164
+ xml = Fog::AWS::Storage.hash_to_acl(acl)
165
165
  Nokogiri::XML(xml).xpath("//AccessControlPolicy/AccessControlList/Grant/Grantee/EmailAddress").first.content
166
166
  end
167
167
 
168
168
  tests(".hash_to_acl(#{acl.inspect}) at xpath //AccessControlPolicy/AccessControlList/Grant/Grantee/URI").returns("http://acs.amazonaws.com/groups/global/AllUsers", "returns the third Grant's Grantee URI") do
169
- xml = Fog::Storage::AWS.hash_to_acl(acl)
169
+ xml = Fog::AWS::Storage.hash_to_acl(acl)
170
170
  Nokogiri::XML(xml).xpath("//AccessControlPolicy/AccessControlList/Grant/Grantee/URI").first.content
171
171
  end
172
172
  end
@@ -203,7 +203,7 @@ XML
203
203
  "Permission" => "FULL_CONTROL"
204
204
  }]
205
205
  }, 'returns hash of ACL XML') do
206
- Fog::Storage::AWS.acl_to_hash(acl_xml)
206
+ Fog::AWS::Storage.acl_to_hash(acl_xml)
207
207
  end
208
208
  end
209
209
  end
@@ -158,7 +158,7 @@ Shindo.tests('Fog::Storage[:aws] | bucket requests', ["aws"]) do
158
158
  Fog::Storage[:aws].put_bucket_website(@aws_bucket_name, :IndexDocument => 'index.html')
159
159
  end
160
160
 
161
- tests("#put_bucket_website('#{@aws_bucket_name}', :RedirectAllRequestsTo => 'redirect.example..com')").succeeds do
161
+ tests("#put_bucket_website('#{@aws_bucket_name}', :RedirectAllRequestsTo => 'redirect.example.com')").succeeds do
162
162
  Fog::Storage[:aws].put_bucket_website(@aws_bucket_name, :RedirectAllRequestsTo => 'redirect.example.com')
163
163
  end
164
164
 
@@ -1,14 +1,14 @@
1
1
  require 'fog/aws/requests/storage/cors_utils'
2
2
 
3
- Shindo.tests('Fog::Storage::AWS | CORS utils', ["aws"]) do
3
+ Shindo.tests('Fog::AWS::Storage | CORS utils', ["aws"]) do
4
4
  tests(".hash_to_cors") do
5
5
  tests(".hash_to_cors({}) at xpath //CORSConfiguration").returns("", "has an empty CORSConfiguration") do
6
- xml = Fog::Storage::AWS.hash_to_cors({})
6
+ xml = Fog::AWS::Storage.hash_to_cors({})
7
7
  Nokogiri::XML(xml).xpath("//CORSConfiguration").first.content.chomp
8
8
  end
9
9
 
10
10
  tests(".hash_to_cors({}) at xpath //CORSConfiguration/CORSRule").returns(nil, "has no CORSRules") do
11
- xml = Fog::Storage::AWS.hash_to_cors({})
11
+ xml = Fog::AWS::Storage.hash_to_cors({})
12
12
  Nokogiri::XML(xml).xpath("//CORSConfiguration/CORSRule").first
13
13
  end
14
14
 
@@ -26,52 +26,52 @@ Shindo.tests('Fog::Storage::AWS | CORS utils', ["aws"]) do
26
26
  }
27
27
 
28
28
  tests(".hash_to_cors(#{cors.inspect}) at xpath //CORSConfiguration/CORSRule/AllowedOrigin").returns("origin_123", "returns the CORSRule AllowedOrigin") do
29
- xml = Fog::Storage::AWS.hash_to_cors(cors)
29
+ xml = Fog::AWS::Storage.hash_to_cors(cors)
30
30
  Nokogiri::XML(xml).xpath("//CORSConfiguration/CORSRule/AllowedOrigin")[0].content
31
31
  end
32
32
 
33
33
  tests(".hash_to_cors(#{cors.inspect}) at xpath //CORSConfiguration/CORSRule/AllowedOrigin").returns("origin_456", "returns the CORSRule AllowedOrigin") do
34
- xml = Fog::Storage::AWS.hash_to_cors(cors)
34
+ xml = Fog::AWS::Storage.hash_to_cors(cors)
35
35
  Nokogiri::XML(xml).xpath("//CORSConfiguration/CORSRule/AllowedOrigin")[1].content
36
36
  end
37
37
 
38
38
  tests(".hash_to_cors(#{cors.inspect}) at xpath //CORSConfiguration/CORSRule/AllowedMethod").returns("GET", "returns the CORSRule AllowedMethod") do
39
- xml = Fog::Storage::AWS.hash_to_cors(cors)
39
+ xml = Fog::AWS::Storage.hash_to_cors(cors)
40
40
  Nokogiri::XML(xml).xpath("//CORSConfiguration/CORSRule/AllowedMethod")[0].content
41
41
  end
42
42
 
43
43
  tests(".hash_to_cors(#{cors.inspect}) at xpath //CORSConfiguration/CORSRule/AllowedMethod").returns("POST", "returns the CORSRule AllowedMethod") do
44
- xml = Fog::Storage::AWS.hash_to_cors(cors)
44
+ xml = Fog::AWS::Storage.hash_to_cors(cors)
45
45
  Nokogiri::XML(xml).xpath("//CORSConfiguration/CORSRule/AllowedMethod")[1].content
46
46
  end
47
47
 
48
48
  tests(".hash_to_cors(#{cors.inspect}) at xpath //CORSConfiguration/CORSRule/AllowedHeader").returns("Accept", "returns the CORSRule AllowedHeader") do
49
- xml = Fog::Storage::AWS.hash_to_cors(cors)
49
+ xml = Fog::AWS::Storage.hash_to_cors(cors)
50
50
  Nokogiri::XML(xml).xpath("//CORSConfiguration/CORSRule/AllowedHeader")[0].content
51
51
  end
52
52
 
53
53
  tests(".hash_to_cors(#{cors.inspect}) at xpath //CORSConfiguration/CORSRule/AllowedHeader").returns("Content-Type", "returns the CORSRule AllowedHeader") do
54
- xml = Fog::Storage::AWS.hash_to_cors(cors)
54
+ xml = Fog::AWS::Storage.hash_to_cors(cors)
55
55
  Nokogiri::XML(xml).xpath("//CORSConfiguration/CORSRule/AllowedHeader")[1].content
56
56
  end
57
57
 
58
58
  tests(".hash_to_cors(#{cors.inspect}) at xpath //CORSConfiguration/CORSRule/ID").returns("blah-888", "returns the CORSRule ID") do
59
- xml = Fog::Storage::AWS.hash_to_cors(cors)
59
+ xml = Fog::AWS::Storage.hash_to_cors(cors)
60
60
  Nokogiri::XML(xml).xpath("//CORSConfiguration/CORSRule/ID")[0].content
61
61
  end
62
62
 
63
63
  tests(".hash_to_cors(#{cors.inspect}) at xpath //CORSConfiguration/CORSRule/MaxAgeSeconds").returns("2500", "returns the CORSRule MaxAgeSeconds") do
64
- xml = Fog::Storage::AWS.hash_to_cors(cors)
64
+ xml = Fog::AWS::Storage.hash_to_cors(cors)
65
65
  Nokogiri::XML(xml).xpath("//CORSConfiguration/CORSRule/MaxAgeSeconds")[0].content
66
66
  end
67
67
 
68
68
  tests(".hash_to_cors(#{cors.inspect}) at xpath //CORSConfiguration/CORSRule/ExposeHeader").returns("x-some-header", "returns the CORSRule ExposeHeader") do
69
- xml = Fog::Storage::AWS.hash_to_cors(cors)
69
+ xml = Fog::AWS::Storage.hash_to_cors(cors)
70
70
  Nokogiri::XML(xml).xpath("//CORSConfiguration/CORSRule/ExposeHeader")[0].content
71
71
  end
72
72
 
73
73
  tests(".hash_to_cors(#{cors.inspect}) at xpath //CORSConfiguration/CORSRule/ExposeHeader").returns("x-other-header", "returns the CORSRule ExposeHeader") do
74
- xml = Fog::Storage::AWS.hash_to_cors(cors)
74
+ xml = Fog::AWS::Storage.hash_to_cors(cors)
75
75
  Nokogiri::XML(xml).xpath("//CORSConfiguration/CORSRule/ExposeHeader")[1].content
76
76
  end
77
77
  end
@@ -102,7 +102,7 @@ XML
102
102
  "ExposeHeader" => ["x-amz-server-side-encryption", "x-amz-balls"]
103
103
  }]
104
104
  }, 'returns hash of CORS XML') do
105
- Fog::Storage::AWS.cors_to_hash(cors_xml)
105
+ Fog::AWS::Storage.cors_to_hash(cors_xml)
106
106
  end
107
107
  end
108
108
  end
@@ -0,0 +1,93 @@
1
+ require 'securerandom'
2
+
3
+ Shindo.tests('Fog::Storage[:aws] | copy requests', ["aws"]) do
4
+
5
+ @directory = Fog::Storage[:aws].directories.create(:key => uniq_id('fogmultipartcopytests'))
6
+ @large_data = SecureRandom.hex * 600000
7
+ @large_blob = Fog::Storage[:aws].put_object(@directory.identity, 'large_object', @large_data)
8
+
9
+ tests('copies an empty object') do
10
+ Fog::Storage[:aws].put_object(@directory.identity, 'empty_object', '')
11
+
12
+ file = Fog::Storage[:aws].directories.new(key: @directory.identity).files.get('empty_object')
13
+ file.multipart_chunk_size = Fog::AWS::Storage::File::MIN_MULTIPART_CHUNK_SIZE
14
+
15
+ tests("#copy_object('#{@directory.identity}', 'empty_copied_object'").succeeds do
16
+ file.copy(@directory.identity, 'empty_copied_object')
17
+ end
18
+
19
+ copied = Fog::Storage[:aws].directories.new(key: @directory.identity).files.get('empty_copied_object')
20
+ test("copied is the same") { copied.body == file.body }
21
+ end
22
+
23
+ tests('copies a small object') do
24
+ Fog::Storage[:aws].put_object(@directory.identity, 'fog_object', lorem_file)
25
+
26
+ file = Fog::Storage[:aws].directories.new(key: @directory.identity).files.get('fog_object')
27
+
28
+ tests("#copy_object('#{@directory.identity}', 'copied_object'").succeeds do
29
+ file.copy(@directory.identity, 'copied_object')
30
+ end
31
+
32
+ copied = Fog::Storage[:aws].directories.new(key: @directory.identity).files.get('copied_object')
33
+ test("copied is the same") { copied.body == file.body }
34
+ end
35
+
36
+ tests('copies a file needing a single part') do
37
+ data = '*' * Fog::AWS::Storage::File::MIN_MULTIPART_CHUNK_SIZE
38
+ Fog::Storage[:aws].put_object(@directory.identity, '1_part_object', data)
39
+
40
+ file = Fog::Storage[:aws].directories.new(key: @directory.identity).files.get('1_part_object')
41
+ file.multipart_chunk_size = Fog::AWS::Storage::File::MIN_MULTIPART_CHUNK_SIZE
42
+
43
+ tests("#copy_object('#{@directory.identity}', '1_part_copied_object'").succeeds do
44
+ file.copy(@directory.identity, '1_part_copied_object')
45
+ end
46
+
47
+ copied = Fog::Storage[:aws].directories.new(key: @directory.identity).files.get('1_part_copied_object')
48
+ test("copied is the same") { copied.body == file.body }
49
+ end
50
+
51
+ tests('copies a file with many parts') do
52
+ file = Fog::Storage[:aws].directories.new(key: @directory.identity).files.get('large_object')
53
+ file.multipart_chunk_size = Fog::AWS::Storage::File::MIN_MULTIPART_CHUNK_SIZE
54
+
55
+ tests("#copy_object('#{@directory.identity}', 'large_copied_object'").succeeds do
56
+ file.copy(@directory.identity, 'large_copied_object')
57
+ end
58
+
59
+ copied = Fog::Storage[:aws].directories.new(key: @directory.identity).files.get('large_copied_object')
60
+
61
+ test("concurrency defaults to 1") { file.concurrency == 1 }
62
+ test("copied is the same") { copied.body == file.body }
63
+ end
64
+
65
+ tests('copies a file with many parts with 10 threads') do
66
+ file = Fog::Storage[:aws].directories.new(key: @directory.identity).files.get('large_object')
67
+ file.multipart_chunk_size = Fog::AWS::Storage::File::MIN_MULTIPART_CHUNK_SIZE
68
+ file.concurrency = 10
69
+
70
+ test("concurrency is set to 10") { file.concurrency == 10 }
71
+
72
+ tests("#copy_object('#{@directory.identity}', 'copied_object_with_10_threads'").succeeds do
73
+ file.copy(@directory.identity, 'copied_object_with_10_threads')
74
+ end
75
+
76
+ copied = Fog::Storage[:aws].directories.new(key: @directory.identity).files.get('copied_object_with_10_threads')
77
+
78
+ test("copied is the same") { copied.body == file.body }
79
+ end
80
+
81
+ tests('copies an object with unknown headers') do
82
+ file = Fog::Storage[:aws].directories.new(key: @directory.identity).files.get('large_object')
83
+ file.multipart_chunk_size = Fog::AWS::Storage::File::MIN_MULTIPART_CHUNK_SIZE
84
+ file.concurrency = 10
85
+
86
+ tests("#copy_object('#{@directory.identity}', 'copied_object'").succeeds do
87
+ file.copy(@directory.identity, 'copied_object', { unknown: 1 } )
88
+ end
89
+
90
+ copied = Fog::Storage[:aws].directories.new(key: @directory.identity).files.get('copied_object')
91
+ test("copied is the same") { copied.body == file.body }
92
+ end
93
+ end