fog 0.3.17 → 0.3.18

Sign up to get free protection for your applications and to get access to all the features.
Files changed (180) hide show
  1. data/Gemfile.lock +5 -5
  2. data/README.rdoc +16 -7
  3. data/fog.gemspec +102 -27
  4. data/lib/fog.rb +3 -2
  5. data/lib/fog/aws/cdn.rb +2 -1
  6. data/lib/fog/aws/compute.rb +3 -2
  7. data/lib/fog/aws/iam.rb +8 -0
  8. data/lib/fog/aws/models/compute/flavors.rb +2 -1
  9. data/lib/fog/aws/models/compute/server.rb +3 -0
  10. data/lib/fog/aws/models/compute/volume.rb +9 -8
  11. data/lib/fog/aws/models/storage/file.rb +24 -14
  12. data/lib/fog/aws/models/storage/files.rb +4 -14
  13. data/lib/fog/aws/parsers/cdn/distribution.rb +16 -1
  14. data/lib/fog/aws/parsers/cdn/get_distribution_list.rb +13 -0
  15. data/lib/fog/aws/parsers/compute/describe_volumes.rb +2 -0
  16. data/lib/fog/aws/parsers/iam/create_group.rb +2 -2
  17. data/lib/fog/aws/parsers/iam/create_user.rb +26 -0
  18. data/lib/fog/aws/parsers/iam/list_group_policies.rb +28 -0
  19. data/lib/fog/aws/parsers/iam/list_groups.rb +1 -1
  20. data/lib/fog/aws/parsers/storage/complete_multipart_upload.rb +24 -0
  21. data/lib/fog/aws/parsers/storage/initiate_multipart_upload.rb +24 -0
  22. data/lib/fog/aws/parsers/storage/list_multipart_uploads.rb +56 -0
  23. data/lib/fog/aws/parsers/storage/list_parts.rb +40 -0
  24. data/lib/fog/aws/requests/cdn/get_distribution.rb +11 -1
  25. data/lib/fog/aws/requests/cdn/get_distribution_list.rb +9 -1
  26. data/lib/fog/aws/requests/cdn/post_distribution.rb +16 -5
  27. data/lib/fog/aws/requests/cdn/put_distribution_config.rb +102 -0
  28. data/lib/fog/aws/requests/compute/describe_volumes.rb +1 -0
  29. data/lib/fog/aws/requests/compute/run_instances.rb +1 -1
  30. data/lib/fog/aws/requests/iam/add_user_to_group.rb +42 -0
  31. data/lib/fog/aws/requests/iam/create_group.rb +7 -3
  32. data/lib/fog/aws/requests/iam/create_user.rb +47 -0
  33. data/lib/fog/aws/requests/iam/delete_group.rb +5 -1
  34. data/lib/fog/aws/requests/iam/delete_group_policy.rb +42 -0
  35. data/lib/fog/aws/requests/iam/delete_user.rb +40 -0
  36. data/lib/fog/aws/requests/iam/list_group_policies.rb +47 -0
  37. data/lib/fog/aws/requests/iam/list_groups.rb +9 -4
  38. data/lib/fog/aws/requests/iam/put_group_policy.rb +44 -0
  39. data/lib/fog/aws/requests/iam/remove_user_from_group.rb +42 -0
  40. data/lib/fog/aws/requests/simpledb/put_attributes.rb +2 -2
  41. data/lib/fog/aws/requests/storage/abort_multipart_upload.rb +38 -0
  42. data/lib/fog/aws/requests/storage/complete_multipart_upload.rb +60 -0
  43. data/lib/fog/aws/requests/storage/get_service.rb +1 -1
  44. data/lib/fog/aws/requests/storage/initiate_multipart_upload.rb +55 -0
  45. data/lib/fog/aws/requests/storage/list_multipart_uploads.rb +68 -0
  46. data/lib/fog/aws/requests/storage/list_parts.rb +67 -0
  47. data/lib/fog/aws/requests/storage/put_object.rb +12 -5
  48. data/lib/fog/aws/requests/storage/upload_part.rb +51 -0
  49. data/lib/fog/aws/storage.rb +12 -6
  50. data/lib/fog/brightbox.rb +7 -0
  51. data/lib/fog/brightbox/bin.rb +23 -0
  52. data/lib/fog/brightbox/compute.rb +134 -0
  53. data/lib/fog/brightbox/models/compute/account.rb +51 -0
  54. data/lib/fog/brightbox/models/compute/cloud_ip.rb +43 -0
  55. data/lib/fog/brightbox/models/compute/cloud_ips.rb +34 -0
  56. data/lib/fog/brightbox/models/compute/flavor.rb +33 -0
  57. data/lib/fog/brightbox/models/compute/flavors.rb +28 -0
  58. data/lib/fog/brightbox/models/compute/image.rb +52 -0
  59. data/lib/fog/brightbox/models/compute/images.rb +28 -0
  60. data/lib/fog/brightbox/models/compute/server.rb +94 -0
  61. data/lib/fog/brightbox/models/compute/servers.rb +29 -0
  62. data/lib/fog/brightbox/models/compute/user.rb +39 -0
  63. data/lib/fog/brightbox/models/compute/users.rb +29 -0
  64. data/lib/fog/brightbox/models/compute/zone.rb +21 -0
  65. data/lib/fog/brightbox/models/compute/zones.rb +29 -0
  66. data/lib/fog/brightbox/requests/compute/create_api_client.rb +27 -0
  67. data/lib/fog/brightbox/requests/compute/create_cloud_ip.rb +27 -0
  68. data/lib/fog/brightbox/requests/compute/create_image.rb +27 -0
  69. data/lib/fog/brightbox/requests/compute/create_server.rb +27 -0
  70. data/lib/fog/brightbox/requests/compute/destroy_api_client.rb +28 -0
  71. data/lib/fog/brightbox/requests/compute/destroy_cloud_ip.rb +28 -0
  72. data/lib/fog/brightbox/requests/compute/destroy_image.rb +28 -0
  73. data/lib/fog/brightbox/requests/compute/destroy_server.rb +28 -0
  74. data/lib/fog/brightbox/requests/compute/get_account.rb +27 -0
  75. data/lib/fog/brightbox/requests/compute/get_api_client.rb +28 -0
  76. data/lib/fog/brightbox/requests/compute/get_cloud_ip.rb +28 -0
  77. data/lib/fog/brightbox/requests/compute/get_image.rb +28 -0
  78. data/lib/fog/brightbox/requests/compute/get_interface.rb +28 -0
  79. data/lib/fog/brightbox/requests/compute/get_server.rb +28 -0
  80. data/lib/fog/brightbox/requests/compute/get_server_type.rb +28 -0
  81. data/lib/fog/brightbox/requests/compute/get_user.rb +28 -0
  82. data/lib/fog/brightbox/requests/compute/get_zone.rb +28 -0
  83. data/lib/fog/brightbox/requests/compute/list_api_clients.rb +27 -0
  84. data/lib/fog/brightbox/requests/compute/list_cloud_ips.rb +27 -0
  85. data/lib/fog/brightbox/requests/compute/list_images.rb +27 -0
  86. data/lib/fog/brightbox/requests/compute/list_server_types.rb +27 -0
  87. data/lib/fog/brightbox/requests/compute/list_servers.rb +27 -0
  88. data/lib/fog/brightbox/requests/compute/list_users.rb +27 -0
  89. data/lib/fog/brightbox/requests/compute/list_zones.rb +27 -0
  90. data/lib/fog/brightbox/requests/compute/map_cloud_ip.rb +28 -0
  91. data/lib/fog/brightbox/requests/compute/reset_ftp_password_account.rb +27 -0
  92. data/lib/fog/brightbox/requests/compute/resize_server.rb +27 -0
  93. data/lib/fog/brightbox/requests/compute/shutdown_server.rb +28 -0
  94. data/lib/fog/brightbox/requests/compute/snapshot_server.rb +28 -0
  95. data/lib/fog/brightbox/requests/compute/start_server.rb +28 -0
  96. data/lib/fog/brightbox/requests/compute/stop_server.rb +28 -0
  97. data/lib/fog/brightbox/requests/compute/unmap_cloud_ip.rb +28 -0
  98. data/lib/fog/brightbox/requests/compute/update_account.rb +28 -0
  99. data/lib/fog/brightbox/requests/compute/update_api_client.rb +29 -0
  100. data/lib/fog/brightbox/requests/compute/update_image.rb +29 -0
  101. data/lib/fog/brightbox/requests/compute/update_server.rb +29 -0
  102. data/lib/fog/brightbox/requests/compute/update_user.rb +29 -0
  103. data/lib/fog/core/attributes.rb +3 -3
  104. data/lib/fog/core/bin.rb +2 -0
  105. data/lib/fog/core/compute.rb +5 -2
  106. data/lib/fog/core/credentials.rb +2 -0
  107. data/lib/fog/core/service.rb +24 -12
  108. data/lib/fog/google/models/storage/file.rb +23 -14
  109. data/lib/fog/google/models/storage/files.rb +4 -14
  110. data/lib/fog/google/requests/storage/get_bucket.rb +0 -1
  111. data/lib/fog/google/requests/storage/put_object.rb +9 -2
  112. data/lib/fog/rackspace/models/storage/file.rb +3 -3
  113. data/lib/fog/rackspace/models/storage/files.rb +5 -13
  114. data/spec/aws/models/compute/server_spec.rb +0 -3
  115. data/spec/aws/requests/simpledb/get_attributes_spec.rb +11 -0
  116. data/spec/core/attributes_spec.rb +52 -0
  117. data/spec/vcloud/bin_spec.rb +1 -1
  118. data/spec/vcloud/vcloud_spec.rb +1 -1
  119. data/tests/aws/models/compute/flavors_tests.rb +5 -0
  120. data/tests/aws/models/compute/server_tests.rb +6 -0
  121. data/tests/aws/models/compute/servers_tests.rb +6 -0
  122. data/tests/aws/requests/storage/bucket_tests.rb +1 -1
  123. data/tests/aws/requests/storage/multipart_upload_tests.rb +135 -0
  124. data/tests/bluebox/models/compute/flavors_tests.rb +5 -0
  125. data/tests/bluebox/models/compute/server_tests.rb +5 -0
  126. data/tests/bluebox/models/compute/servers_tests.rb +6 -0
  127. data/tests/brightbox/helper.rb +0 -0
  128. data/tests/brightbox/models/compute/flavors_tests.rb +5 -0
  129. data/tests/brightbox/models/compute/server_tests.rb +6 -0
  130. data/tests/brightbox/models/compute/servers_tests.rb +6 -0
  131. data/tests/google/requests/storage/bucket_tests.rb +78 -0
  132. data/tests/google/requests/storage/object_tests.rb +81 -0
  133. data/tests/helper.rb +19 -4
  134. data/tests/helpers/collection_tests.rb +51 -0
  135. data/tests/helpers/compute/flavors_tests.rb +34 -0
  136. data/tests/helpers/compute/server_tests.rb +19 -0
  137. data/tests/helpers/compute/servers_tests.rb +11 -0
  138. data/tests/helpers/model_tests.rb +28 -0
  139. data/tests/helpers/storage/directories_tests.rb +4 -36
  140. data/tests/helpers/storage/directory_tests.rb +8 -22
  141. data/tests/helpers/storage/file_tests.rb +8 -25
  142. data/tests/helpers/storage/files_tests.rb +5 -39
  143. data/tests/local/models/storage/directories_tests.rb +1 -1
  144. data/tests/local/models/storage/directory_tests.rb +1 -1
  145. data/tests/local/models/storage/file_tests.rb +1 -1
  146. data/tests/local/models/storage/files_tests.rb +1 -1
  147. data/tests/rackspace/models/compute/flavors_tests.rb +5 -0
  148. data/tests/rackspace/models/compute/server_tests.rb +6 -0
  149. data/tests/rackspace/models/compute/servers_tests.rb +6 -0
  150. data/tests/rackspace/models/storage/directories_tests.rb +1 -1
  151. data/tests/rackspace/models/storage/directory_tests.rb +1 -1
  152. data/tests/rackspace/models/storage/file_tests.rb +1 -1
  153. data/tests/rackspace/models/storage/files_tests.rb +1 -1
  154. data/tests/slicehost/models/compute/flavors_tests.rb +5 -0
  155. data/tests/slicehost/models/compute/server_tests.rb +6 -0
  156. data/tests/slicehost/models/compute/servers_tests.rb +6 -0
  157. metadata +108 -31
  158. data/spec/aws/models/compute/flavors_spec.rb +0 -14
  159. data/spec/aws/models/compute/servers_spec.rb +0 -21
  160. data/spec/bluebox/models/compute/flavors_spec.rb +0 -17
  161. data/spec/bluebox/models/compute/server_spec.rb +0 -29
  162. data/spec/bluebox/models/compute/servers_spec.rb +0 -31
  163. data/spec/google/requests/storage/copy_object_spec.rb +0 -61
  164. data/spec/google/requests/storage/delete_bucket_spec.rb +0 -35
  165. data/spec/google/requests/storage/delete_object_spec.rb +0 -38
  166. data/spec/google/requests/storage/get_bucket_spec.rb +0 -110
  167. data/spec/google/requests/storage/get_object_spec.rb +0 -58
  168. data/spec/google/requests/storage/get_service_spec.rb +0 -32
  169. data/spec/google/requests/storage/head_object_spec.rb +0 -26
  170. data/spec/google/requests/storage/put_bucket_spec.rb +0 -21
  171. data/spec/google/requests/storage/put_object_spec.rb +0 -43
  172. data/spec/rackspace/models/compute/flavors_spec.rb +0 -18
  173. data/spec/rackspace/models/compute/server_spec.rb +0 -55
  174. data/spec/rackspace/models/compute/servers_spec.rb +0 -22
  175. data/spec/shared_examples/flavors_examples.rb +0 -16
  176. data/spec/shared_examples/server_examples.rb +0 -43
  177. data/spec/shared_examples/servers_examples.rb +0 -37
  178. data/spec/slicehost/models/compute/flavors_spec.rb +0 -18
  179. data/spec/slicehost/models/compute/server_spec.rb +0 -55
  180. data/spec/slicehost/models/compute/servers_spec.rb +0 -26
@@ -1,4 +1,4 @@
1
- require 'spec/vcloud/spec_helper'
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
2
 
3
3
  describe Vcloud do
4
4
  it { should be_initialized }
@@ -1,4 +1,4 @@
1
- require 'spec/vcloud/spec_helper.rb'
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
2
 
3
3
  if Fog.mocking?
4
4
  describe Fog::Vcloud, :type => :mock_vcloud_request do
@@ -0,0 +1,5 @@
1
+ Shindo.tests('AWS::Compute | flavors collection', ['aws']) do
2
+
3
+ flavors_tests(AWS[:compute])
4
+
5
+ end
@@ -0,0 +1,6 @@
1
+ Shindo.tests('AWS::Compute | server model', ['aws']) do
2
+
3
+ # image ami-1a837773 = Ubuntu
4
+ server_tests(AWS[:compute], {:image_id => 'ami-1a837773'})
5
+
6
+ end
@@ -0,0 +1,6 @@
1
+ Shindo.tests('AWS::Compute | servers collection', ['aws']) do
2
+
3
+ # image ami-1a837773 = Ubuntu
4
+ servers_tests(AWS[:compute], {:image_id => 'ami-1a837773'})
5
+
6
+ end
@@ -90,7 +90,7 @@ Shindo.tests('AWS::Storage | bucket requests', ['aws']) do
90
90
  AWS[:storage].get_bucket_location('fognonbucket')
91
91
  end
92
92
 
93
- tests("#gett_request_payment('fognonbucket')").raises(Excon::Errors::NotFound) do
93
+ tests("#get_request_payment('fognonbucket')").raises(Excon::Errors::NotFound) do
94
94
  AWS[:storage].get_request_payment('fognonbucket')
95
95
  end
96
96
 
@@ -0,0 +1,135 @@
1
+ Shindo.tests('AWS::Storage | object requests', ['aws']) do
2
+
3
+ @directory = AWS[:storage].directories.create(:key => 'fogmultipartuploadtests')
4
+
5
+ tests('success') do
6
+
7
+ @initiate_multipart_upload_format = {
8
+ 'Bucket' => String,
9
+ 'Key' => String,
10
+ 'UploadId' => String
11
+ }
12
+
13
+ tests("#initiate_multipart_upload('#{@directory.identity}')", 'fog_multipart_upload').formats(@initiate_multipart_upload_format) do
14
+ pending if Fog.mocking?
15
+ data = AWS[:storage].initiate_multipart_upload(@directory.identity, 'fog_multipart_upload').body
16
+ @upload_id = data['UploadId']
17
+ data
18
+ end
19
+
20
+ @list_multipart_uploads_format = {
21
+ 'Bucket' => String,
22
+ 'IsTruncated' => Fog::Boolean,
23
+ 'MaxUploads' => Integer,
24
+ 'KeyMarker' => NilClass,
25
+ 'NextKeyMarker' => String,
26
+ 'NextUploadIdMarker' => String,
27
+ 'Upload' => [{
28
+ 'Initiated' => Time,
29
+ 'Initiator' => {
30
+ 'DisplayName' => String,
31
+ 'ID' => String
32
+ },
33
+ 'Key' => String,
34
+ 'Owner' => {
35
+ 'DisplayName' => String,
36
+ 'ID' => String
37
+ },
38
+ 'StorageClass' => String,
39
+ 'UploadId' => String
40
+ }],
41
+ 'UploadIdMarker' => NilClass,
42
+ }
43
+
44
+ tests("#list_multipart_uploads('#{@directory.identity})").formats(@list_multipart_uploads_format) do
45
+ pending if Fog.mocking?
46
+ AWS[:storage].list_multipart_uploads(@directory.identity).body
47
+ end
48
+
49
+ @parts = []
50
+
51
+ tests("#upload_part('#{@directory.identity}', 'fog_multipart_upload', '#{@upload_id}', 1, ('x' * 6 * 1024 * 1024))").succeeds do
52
+ pending if Fog.mocking?
53
+ data = AWS[:storage].upload_part(@directory.identity, 'fog_multipart_upload', @upload_id, 1, ('x' * 6 * 1024 * 1024))
54
+ @parts << data.headers['ETag']
55
+ end
56
+
57
+ @list_parts_format = {
58
+ 'Bucket' => String,
59
+ 'Initiator' => {
60
+ 'DisplayName' => String,
61
+ 'ID' => String
62
+ },
63
+ 'IsTruncated' => Fog::Boolean,
64
+ 'Key' => String,
65
+ 'MaxParts' => Integer,
66
+ 'NextPartNumberMarker' => String,
67
+ 'Part' => [{
68
+ 'ETag' => String,
69
+ 'LastModified' => Time,
70
+ 'PartNumber' => Integer,
71
+ 'Size' => Integer
72
+ }],
73
+ 'PartNumberMarker' => String,
74
+ 'StorageClass' => String,
75
+ 'UploadId' => String
76
+ }
77
+
78
+ tests("#list_parts('#{@directory.identity}', 'fog_multipart_upload', '#{@upload_id}')").formats(@list_parts_format) do
79
+ pending if Fog.mocking?
80
+ AWS[:storage].list_parts(@directory.identity, 'fog_multipart_upload', @upload_id).body
81
+ end
82
+
83
+ if !Fog.mocking?
84
+ @parts << AWS[:storage].upload_part(@directory.identity, 'fog_multipart_upload', @upload_id, 2, ('x' * 4 * 1024 * 1024)).headers['ETag']
85
+ end
86
+
87
+ @complete_multipart_upload_format = {
88
+ 'Bucket' => String,
89
+ 'ETag' => String,
90
+ 'Key' => String,
91
+ 'Location' => String
92
+ }
93
+
94
+ tests("#complete_multipart_upload('#{@directory.identity}', 'fog_multipart_upload', '#{@upload_id}', #{@parts.inspect})").formats(@complete_multipart_upload_format) do
95
+ pending if Fog.mocking?
96
+ AWS[:storage].complete_multipart_upload(@directory.identity, 'fog_multipart_upload', @upload_id, @parts).body
97
+ end
98
+
99
+ tests("#get_object('#{@directory.identity}', 'fog_multipart_upload').body").succeeds do
100
+ pending if Fog.mocking?
101
+ data = AWS[:storage].get_object(@directory.identity, 'fog_multipart_upload').body
102
+ unless data == ('x' * 10 * 1024 * 1024)
103
+ raise 'content mismatch'
104
+ end
105
+ end
106
+
107
+ if !Fog.mocking?
108
+ @directory.files.new(:key => 'fog_multipart_upload').destroy
109
+ end
110
+
111
+ if !Fog.mocking?
112
+ @upload_id = AWS[:storage].initiate_multipart_upload(@directory.identity, 'fog_multipart_abort').body['UploadId']
113
+ end
114
+
115
+ tests("#abort_multipart_upload('#{@directory.identity}', 'fog_multipart_abort', '#{@upload_id}')").succeeds do
116
+ pending if Fog.mocking?
117
+ AWS[:storage].abort_multipart_upload(@directory.identity, 'fog_multipart_abort', @upload_id)
118
+ end
119
+
120
+ end
121
+
122
+ tests('failure') do
123
+
124
+ tests("initiate_multipart_upload")
125
+ tests("list_multipart_uploads")
126
+ tests("upload_part")
127
+ tests("list_parts")
128
+ tests("complete_multipart_upload")
129
+ tests("abort_multipart_upload")
130
+
131
+ end
132
+
133
+ @directory.destroy
134
+
135
+ end
@@ -0,0 +1,5 @@
1
+ Shindo.tests('Bluebox::Compute | flavors collection', ['bluebox']) do
2
+
3
+ flavors_tests(Bluebox[:compute], {}, false)
4
+
5
+ end
@@ -0,0 +1,5 @@
1
+ Shindo.tests('Bluebox::Compute | server model', ['bluebox']) do
2
+
3
+ server_tests(Bluebox[:compute], {:image_id => 'a00baa8f-b5d0-4815-8238-b471c4c4bf72'}, false)
4
+
5
+ end
@@ -0,0 +1,6 @@
1
+ Shindo.tests('Bluebox::Compute | servers collection', ['bluebox']) do
2
+
3
+ # Ubuntu 9.10 64bit
4
+ servers_tests(Bluebox[:compute], {:image_id => 'a00baa8f-b5d0-4815-8238-b471c4c4bf72'}, false)
5
+
6
+ end
File without changes
@@ -0,0 +1,5 @@
1
+ Shindo.tests('Brightbox::Compute | flavors collection', ['brightbox']) do
2
+
3
+ flavors_tests(Brightbox[:compute], {}, false)
4
+
5
+ end
@@ -0,0 +1,6 @@
1
+ Shindo.tests('Brightbox::Compute | server model', ['brightbox']) do
2
+
3
+ # image img-t4p09 = Ubuntu Maverick 10.10 server
4
+ server_tests(Brightbox[:compute], {:image_id => 'img-t4p09'}, false)
5
+
6
+ end
@@ -0,0 +1,6 @@
1
+ Shindo.tests('Brightbox::Compute | servers collection', ['brightbox']) do
2
+
3
+ # image img-t4p09 = Ubuntu Maverick 10.10 server
4
+ servers_tests(Brightbox[:compute], {:image_id => 'img-t4p09'}, false)
5
+
6
+ end
@@ -0,0 +1,78 @@
1
+ Shindo.tests('Google::Storage | bucket requests', ['google']) do
2
+
3
+ tests('success') do
4
+
5
+ @bucket_format = {
6
+ 'IsTruncated' => Fog::Boolean,
7
+ 'Marker' => NilClass,
8
+ 'Name' => String,
9
+ 'Prefix' => NilClass,
10
+ 'Contents' => [{
11
+ 'ETag' => String,
12
+ 'Key' => String,
13
+ 'LastModified' => Time,
14
+ 'Owner' => {
15
+ 'DisplayName' => String,
16
+ 'ID' => String
17
+ },
18
+ 'Size' => Integer,
19
+ 'StorageClass' => String
20
+ }]
21
+ }
22
+
23
+ @service_format = {
24
+ 'Buckets' => [{
25
+ 'CreationDate' => Time,
26
+ 'Name' => String,
27
+ }],
28
+ 'Owner' => {
29
+ 'DisplayName' => String,
30
+ 'ID' => String
31
+ }
32
+ }
33
+
34
+ tests("#put_bucket('fogbuckettests')").succeeds do
35
+ Google[:storage].put_bucket('fogbuckettests')
36
+ end
37
+
38
+ tests("#get_service").formats(@service_format) do
39
+ Google[:storage].get_service.body
40
+ end
41
+
42
+ file = Google[:storage].directories.get('fogbuckettests').files.create(:body => 'y', :key => 'x')
43
+
44
+ tests("#get_bucket('fogbuckettests)").formats(@bucket_format) do
45
+ Google[:storage].get_bucket('fogbuckettests').body
46
+ end
47
+
48
+ file.destroy
49
+
50
+ tests("#delete_bucket('fogbuckettests')").succeeds do
51
+ Google[:storage].delete_bucket('fogbuckettests')
52
+ end
53
+
54
+ end
55
+
56
+ tests('failure') do
57
+
58
+ tests("#delete_bucket('fognonbucket')").raises(Excon::Errors::NotFound) do
59
+ Google[:storage].delete_bucket('fognonbucket')
60
+ end
61
+
62
+ @bucket = Google[:storage].directories.create(:key => 'fognonempty')
63
+ @file = @bucket.files.create(:key => 'foo', :body => 'bar')
64
+
65
+ tests("#delete_bucket('fognonempty')").raises(Excon::Errors::Conflict) do
66
+ Google[:storage].delete_bucket('fognonempty')
67
+ end
68
+
69
+ @file.destroy
70
+ @bucket.destroy
71
+
72
+ tests("#get_bucket('fognonbucket')").raises(Excon::Errors::NotFound) do
73
+ Google[:storage].get_bucket('fognonbucket')
74
+ end
75
+
76
+ end
77
+
78
+ end
@@ -0,0 +1,81 @@
1
+ Shindo.tests('Google::Storage | object requests', ['google']) do
2
+
3
+ @directory = Google[:storage].directories.create(:key => 'fogobjecttests')
4
+
5
+ tests('success') do
6
+
7
+ tests("#put_object('#{@directory.identity}', 'fog_object', lorem_file)").succeeds do
8
+ Google[:storage].put_object(@directory.identity, 'fog_object', lorem_file)
9
+ end
10
+
11
+ tests("#copy_object('#{@directory.identity}', 'fog_object', '#{@directory.identity}', 'fog_other_object')").succeeds do
12
+ Google[:storage].copy_object(@directory.identity, 'fog_object', @directory.identity, 'fog_other_object')
13
+ end
14
+
15
+ @directory.files.get('fog_other_object').destroy
16
+
17
+ tests("#get_object('#{@directory.identity}', 'fog_object')").returns(lorem_file.read) do
18
+ Google[:storage].get_object(@directory.identity, 'fog_object').body
19
+ end
20
+
21
+ tests("#get_object('#{@directory.identity}', 'fog_object', &block)").returns(lorem_file.read) do
22
+ data = ''
23
+ Google[:storage].get_object(@directory.identity, 'fog_object') do |chunk|
24
+ data << chunk
25
+ end
26
+ data
27
+ end
28
+
29
+ tests("#head_object('#{@directory.identity}', 'fog_object')").succeeds do
30
+ Google[:storage].head_object(@directory.identity, 'fog_object')
31
+ end
32
+
33
+ tests("#delete_object('#{@directory.identity}', 'fog_object')").succeeds do
34
+ Google[:storage].delete_object(@directory.identity, 'fog_object')
35
+ end
36
+
37
+ end
38
+
39
+ tests('failure') do
40
+
41
+ tests("#put_object('fognonbucket', 'fog_non_object', lorem_file)").raises(Excon::Errors::NotFound) do
42
+ Google[:storage].put_object('fognonbucket', 'fog_non_object', lorem_file)
43
+ end
44
+
45
+ tests("#copy_object('fognonbucket', 'fog_object', '#{@directory.identity}', 'fog_other_object')").raises(Excon::Errors::NotFound) do
46
+ Google[:storage].copy_object('fognonbucket', 'fog_object', @directory.identity, 'fog_other_object')
47
+ end
48
+
49
+ tests("#copy_object('#{@directory.identity}', 'fog_non_object', '#{@directory.identity}', 'fog_other_object')").raises(Excon::Errors::NotFound) do
50
+ Google[:storage].copy_object(@directory.identity, 'fog_non_object', @directory.identity, 'fog_other_object')
51
+ end
52
+
53
+ tests("#copy_object('#{@directory.identity}', 'fog_object', 'fognonbucket', 'fog_other_object')").raises(Excon::Errors::NotFound) do
54
+ Google[:storage].copy_object(@directory.identity, 'fog_object', 'fognonbucket', 'fog_other_object')
55
+ end
56
+
57
+ tests("#get_object('fognonbucket', 'fog_non_object')").raises(Excon::Errors::NotFound) do
58
+ Google[:storage].get_object('fognonbucket', 'fog_non_object')
59
+ end
60
+
61
+ tests("#get_object('#{@directory.identity}', 'fog_non_object')").raises(Excon::Errors::NotFound) do
62
+ Google[:storage].get_object(@directory.identity, 'fog_non_object')
63
+ end
64
+
65
+ tests("#head_object('fognonbucket', 'fog_non_object')").raises(Excon::Errors::NotFound) do
66
+ Google[:storage].head_object('fognonbucket', 'fog_non_object')
67
+ end
68
+
69
+ tests("#head_object('#{@directory.identity}', 'fog_non_object')").raises(Excon::Errors::NotFound) do
70
+ Google[:storage].head_object(@directory.identity, 'fog_non_object')
71
+ end
72
+
73
+ tests("#delete_object('fognonbucket', 'fog_non_object')").raises(Excon::Errors::NotFound) do
74
+ Google[:storage].delete_object('fognonbucket', 'fog_non_object')
75
+ end
76
+
77
+ end
78
+
79
+ @directory.destroy
80
+
81
+ end
@@ -8,6 +8,13 @@ $LOAD_PATH.unshift __DIR__ unless
8
8
  $LOAD_PATH.include?(__DIR__) ||
9
9
  $LOAD_PATH.include?(File.expand_path(__DIR__))
10
10
 
11
+ require 'tests/helpers/collection_tests'
12
+ require 'tests/helpers/model_tests'
13
+
14
+ require 'tests/helpers/compute/flavors_tests'
15
+ require 'tests/helpers/compute/server_tests'
16
+ require 'tests/helpers/compute/servers_tests'
17
+
11
18
  require 'tests/helpers/storage/directory_tests'
12
19
  require 'tests/helpers/storage/directories_tests'
13
20
  require 'tests/helpers/storage/file_tests'
@@ -32,15 +39,23 @@ end
32
39
  module Shindo
33
40
  class Tests
34
41
 
35
- def formats(format, &block)
42
+ def responds_to(method_names)
43
+ for method_name in [*method_names]
44
+ tests("#respond_to?(:#{method_name})").succeeds do
45
+ @instance.respond_to?(method_name)
46
+ end
47
+ end
48
+ end
49
+
50
+ def formats(format)
36
51
  test('has proper format') do
37
- formats_kernel(instance_eval(&block), format)
52
+ formats_kernel(instance_eval(&Proc.new), format)
38
53
  end
39
54
  end
40
55
 
41
- def succeeds(&block)
56
+ def succeeds
42
57
  test('succeeds') do
43
- instance_eval(&block)
58
+ instance_eval(&Proc.new)
44
59
  true
45
60
  end
46
61
  end
@@ -0,0 +1,51 @@
1
+ def collection_tests(collection, params = {}, mocks_implemented = true)
2
+
3
+ tests('success') do
4
+
5
+ tests("#new(#{params.inspect})").succeeds do
6
+ pending if Fog.mocking? && !mocks_implemented
7
+ collection.new(params)
8
+ end
9
+
10
+ tests("#create(#{params.inspect})").succeeds do
11
+ pending if Fog.mocking? && !mocks_implemented
12
+ @instance = collection.create(params)
13
+ end
14
+
15
+ tests("#all").succeeds do
16
+ pending if Fog.mocking? && !mocks_implemented
17
+ collection.all
18
+ end
19
+
20
+ if !Fog.mocking? || mocks_implemented
21
+ @identity = @instance.identity
22
+ end
23
+
24
+ tests("#get(#{@identity})").succeeds do
25
+ pending if Fog.mocking? && !mocks_implemented
26
+ collection.get(@identity)
27
+ end
28
+
29
+ if block_given?
30
+ yield
31
+ end
32
+
33
+ if !Fog.mocking? || mocks_implemented
34
+ @instance.destroy
35
+ end
36
+ end
37
+
38
+ tests('failure') do
39
+
40
+ if !Fog.mocking? || mocks_implemented
41
+ @identity = @identity.to_s.gsub(/\w/, '0')
42
+ end
43
+
44
+ tests("#get('#{@identity}')").returns(nil) do
45
+ pending if Fog.mocking? && !mocks_implemented
46
+ collection.get(@identity)
47
+ end
48
+
49
+ end
50
+
51
+ end