cloudfiles 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +5 -0
- data/COPYING +12 -0
- data/Manifest +16 -0
- data/README.rdoc +61 -0
- data/Rakefile +33 -0
- data/TODO +0 -0
- data/VERSION +1 -0
- data/cloudfiles.gemspec +62 -0
- data/lib/cloudfiles.rb +74 -0
- data/lib/cloudfiles/authentication.rb +42 -0
- data/lib/cloudfiles/connection.rb +284 -0
- data/lib/cloudfiles/container.rb +275 -0
- data/lib/cloudfiles/storage_object.rb +257 -0
- data/test/cf-testunit.rb +157 -0
- data/test/cloudfiles_authentication_test.rb +37 -0
- data/test/cloudfiles_connection_test.rb +279 -0
- data/test/cloudfiles_container_test.rb +198 -0
- data/test/cloudfiles_storage_object_test.rb +209 -0
- data/test/test_helper.rb +5 -0
- metadata +79 -0
@@ -0,0 +1,198 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/test_helper'
|
2
|
+
|
3
|
+
class CloudfilesContainerTest < Test::Unit::TestCase
|
4
|
+
|
5
|
+
def test_object_creation
|
6
|
+
connection = mock(:storagehost => 'test.storage.example', :storagepath => '/dummy/path', :storageport => 443, :storagescheme => 'https', :cdnmgmthost => 'cdm.test.example', :cdnmgmtpath => '/dummy/path', :cdnmgmtport => 443, :cdnmgmtscheme => 'https')
|
7
|
+
response = {'x-container-bytes-used' => '42', 'x-container-object-count' => '5'}
|
8
|
+
response.stubs(:code).returns('204')
|
9
|
+
connection.stubs(:cfreq => response)
|
10
|
+
@container = CloudFiles::Container.new(connection, 'test_container')
|
11
|
+
assert_equal @container.name, 'test_container'
|
12
|
+
assert_equal @container.class, CloudFiles::Container
|
13
|
+
assert_equal @container.public?, false
|
14
|
+
assert_equal @container.cdn_url, false
|
15
|
+
assert_equal @container.cdn_ttl, false
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_object_creation_no_such_container
|
19
|
+
connection = mock(:storagehost => 'test.storage.example', :storagepath => '/dummy/path', :storageport => 443, :storagescheme => 'https', :cdnmgmthost => 'cdm.test.example', :cdnmgmtpath => '/dummy/path', :cdnmgmtport => 443, :cdnmgmtscheme => 'https')
|
20
|
+
response = {'x-container-bytes-used' => '42', 'x-container-object-count' => '5'}
|
21
|
+
response.stubs(:code).returns('999')
|
22
|
+
connection.stubs(:cfreq => response)
|
23
|
+
assert_raise(NoSuchContainerException) do
|
24
|
+
@container = CloudFiles::Container.new(connection, 'test_container')
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_object_creation_with_cdn
|
29
|
+
connection = mock(:storagehost => 'test.storage.example', :storagepath => '/dummy/path', :storageport => 443, :storagescheme => 'https', :cdnmgmthost => 'cdm.test.example', :cdnmgmtpath => '/dummy/path', :cdnmgmtport => 443, :cdnmgmtscheme => 'https')
|
30
|
+
response = {'x-container-bytes-used' => '42', 'x-container-object-count' => '5', 'x-cdn-enabled' => 'True', 'x-cdn-uri' => 'http://cdn.test.example/container', 'x-ttl' => '86400'}
|
31
|
+
response.stubs(:code).returns('204')
|
32
|
+
connection.stubs(:cfreq => response)
|
33
|
+
@container = CloudFiles::Container.new(connection, 'test_container')
|
34
|
+
assert_equal @container.name, 'test_container'
|
35
|
+
assert_equal @container.cdn_enabled, true
|
36
|
+
assert_equal @container.public?, true
|
37
|
+
assert_equal @container.cdn_url, 'http://cdn.test.example/container'
|
38
|
+
assert_equal @container.cdn_ttl, '86400'
|
39
|
+
end
|
40
|
+
|
41
|
+
def test_to_s
|
42
|
+
build_net_http_object
|
43
|
+
assert_equal @container.to_s, 'test_container'
|
44
|
+
end
|
45
|
+
|
46
|
+
def test_make_private_succeeds
|
47
|
+
build_net_http_object(:code => '201')
|
48
|
+
assert_nothing_raised do
|
49
|
+
@container.make_private
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
def test_make_private_fails
|
54
|
+
build_net_http_object(:code => '999')
|
55
|
+
assert_raises(NoSuchContainerException) do
|
56
|
+
@container.make_private
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
def test_make_public_succeeds
|
61
|
+
build_net_http_object(:code => '201')
|
62
|
+
assert_nothing_raised do
|
63
|
+
@container.make_public
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
def test_make_public_fails
|
68
|
+
build_net_http_object(:code => '999')
|
69
|
+
assert_raises(NoSuchContainerException) do
|
70
|
+
@container.make_public
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
def test_empty_is_false
|
75
|
+
connection = mock(:storagehost => 'test.storage.example', :storagepath => '/dummy/path', :storageport => 443, :storagescheme => 'https', :cdnmgmthost => 'cdm.test.example', :cdnmgmtpath => '/dummy/path', :cdnmgmtport => 443, :cdnmgmtscheme => 'https')
|
76
|
+
response = {'x-container-bytes-used' => '42', 'x-container-object-count' => '5'}
|
77
|
+
response.stubs(:code).returns('204')
|
78
|
+
connection.stubs(:cfreq => response)
|
79
|
+
@container = CloudFiles::Container.new(connection, 'test_container')
|
80
|
+
assert_equal @container.empty?, false
|
81
|
+
end
|
82
|
+
|
83
|
+
def test_empty_is_true
|
84
|
+
connection = mock(:storagehost => 'test.storage.example', :storagepath => '/dummy/path', :storageport => 443, :storagescheme => 'https', :cdnmgmthost => 'cdm.test.example', :cdnmgmtpath => '/dummy/path', :cdnmgmtport => 443, :cdnmgmtscheme => 'https')
|
85
|
+
response = {'x-container-bytes-used' => '0', 'x-container-object-count' => '0'}
|
86
|
+
response.stubs(:code).returns('204')
|
87
|
+
connection.stubs(:cfreq => response)
|
88
|
+
@container = CloudFiles::Container.new(connection, 'test_container')
|
89
|
+
assert_equal @container.empty?, true
|
90
|
+
end
|
91
|
+
|
92
|
+
def test_log_retention_is_true
|
93
|
+
connection = mock(:storagehost => 'test.storage.example', :storagepath => '/dummy/path', :storageport => 443, :storagescheme => 'https', :cdnmgmthost => 'cdm.test.example', :cdnmgmtpath => '/dummy/path', :cdnmgmtport => 443, :cdnmgmtscheme => 'https')
|
94
|
+
response = {'x-container-bytes-used' => '0', 'x-container-object-count' => '0', 'x-cdn-enabled' => 'True', 'x-log-retention' => 'True'}
|
95
|
+
response.stubs(:code).returns('204')
|
96
|
+
connection.stubs(:cfreq => response)
|
97
|
+
@container = CloudFiles::Container.new(connection, 'test_container')
|
98
|
+
assert_equal @container.log_retention?, true
|
99
|
+
end
|
100
|
+
|
101
|
+
def test_object_fetch
|
102
|
+
build_net_http_object(:code => '204', :response => {'last-modified' => 'Wed, 28 Jan 2009 16:16:26 GMT'})
|
103
|
+
object = @container.object('good_object')
|
104
|
+
assert_equal object.class, CloudFiles::StorageObject
|
105
|
+
end
|
106
|
+
|
107
|
+
def test_create_object
|
108
|
+
build_net_http_object()
|
109
|
+
object = @container.create_object('new_object')
|
110
|
+
assert_equal object.class, CloudFiles::StorageObject
|
111
|
+
end
|
112
|
+
|
113
|
+
def test_object_exists_true
|
114
|
+
build_net_http_object
|
115
|
+
assert_equal @container.object_exists?('good_object'), true
|
116
|
+
end
|
117
|
+
|
118
|
+
def test_object_exists_false
|
119
|
+
build_net_http_object(:code => '999')
|
120
|
+
assert_equal @container.object_exists?('bad_object'), false
|
121
|
+
end
|
122
|
+
|
123
|
+
def test_delete_object_succeeds
|
124
|
+
build_net_http_object
|
125
|
+
assert_nothing_raised do
|
126
|
+
@container.delete_object('good_object')
|
127
|
+
end
|
128
|
+
end
|
129
|
+
|
130
|
+
def test_delete_invalid_object_fails
|
131
|
+
build_net_http_object(:code => '404')
|
132
|
+
assert_raise(NoSuchObjectException) do
|
133
|
+
@container.delete_object('nonexistent_object')
|
134
|
+
end
|
135
|
+
end
|
136
|
+
|
137
|
+
def test_delete_invalid_response_code_fails
|
138
|
+
build_net_http_object(:code => '999')
|
139
|
+
assert_raise(InvalidResponseException) do
|
140
|
+
@container.delete_object('broken_object')
|
141
|
+
end
|
142
|
+
end
|
143
|
+
|
144
|
+
def test_fetch_objects
|
145
|
+
build_net_http_object(:code => '200', :body => "foo\nbar\nbaz")
|
146
|
+
objects = @container.objects
|
147
|
+
assert_equal objects.class, Array
|
148
|
+
assert_equal objects.size, 3
|
149
|
+
assert_equal objects.first, 'foo'
|
150
|
+
end
|
151
|
+
|
152
|
+
def test_fetch_object_detail
|
153
|
+
body = %{<?xml version="1.0" encoding="UTF-8"?>
|
154
|
+
<container name="video">
|
155
|
+
<object><name>kisscam.mov</name><hash>96efd5a0d78b74cfe2a911c479b98ddd</hash><bytes>9196332</bytes><content_type>video/quicktime</content_type><last_modified>2008-12-18T10:34:43.867648</last_modified></object>
|
156
|
+
<object><name>penaltybox.mov</name><hash>d2a4c0c24d8a7b4e935bee23080e0685</hash><bytes>24944966</bytes><content_type>video/quicktime</content_type><last_modified>2008-12-18T10:35:19.273927</last_modified></object>
|
157
|
+
</container>
|
158
|
+
}
|
159
|
+
build_net_http_object(:code => '200', :body => body)
|
160
|
+
details = @container.objects_detail
|
161
|
+
assert_equal details.size, 2
|
162
|
+
assert_equal details['kisscam.mov'][:bytes], '9196332'
|
163
|
+
end
|
164
|
+
|
165
|
+
def test_fetch_object_detail_empty
|
166
|
+
build_net_http_object
|
167
|
+
details = @container.objects_detail
|
168
|
+
assert_equal details, {}
|
169
|
+
end
|
170
|
+
|
171
|
+
def test_fetch_object_detail_error
|
172
|
+
build_net_http_object(:code => '999')
|
173
|
+
assert_raise(InvalidResponseException) do
|
174
|
+
details = @container.objects_detail
|
175
|
+
end
|
176
|
+
end
|
177
|
+
|
178
|
+
def test_setting_log_retention
|
179
|
+
build_net_http_object(:code => '201')
|
180
|
+
assert(@container.log_retention='false')
|
181
|
+
end
|
182
|
+
|
183
|
+
private
|
184
|
+
|
185
|
+
def build_net_http_object(args={:code => '204' })
|
186
|
+
CloudFiles::Container.any_instance.stubs(:populate).returns(true)
|
187
|
+
connection = stub(:storagehost => 'test.storage.example', :storagepath => '/dummy/path', :storageport => 443, :storagescheme => 'https', :cdnmgmthost => 'cdm.test.example', :cdnmgmtpath => '/dummy/path', :cdnmgmtport => 443, :cdnmgmtscheme => 'https')
|
188
|
+
args[:response] = {} unless args[:response]
|
189
|
+
response = {'x-cdn-management-url' => 'http://cdn.example.com/path', 'x-storage-url' => 'http://cdn.example.com/storage', 'authtoken' => 'dummy_token', 'last-modified' => Time.now.to_s}.merge(args[:response])
|
190
|
+
response.stubs(:code).returns(args[:code])
|
191
|
+
response.stubs(:body).returns args[:body] || nil
|
192
|
+
connection.stubs(:cfreq => response)
|
193
|
+
@container = CloudFiles::Container.new(connection, 'test_container')
|
194
|
+
@container.stubs(:connection).returns(connection)
|
195
|
+
end
|
196
|
+
|
197
|
+
|
198
|
+
end
|
@@ -0,0 +1,209 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/test_helper'
|
2
|
+
|
3
|
+
class CloudfilesStorageObjectTest < Test::Unit::TestCase
|
4
|
+
|
5
|
+
def test_object_creation
|
6
|
+
connection = stub(:storagehost => 'test.storage.example', :storagepath => '/dummy/path', :storageport => 443, :storagescheme => 'https', :cdnmgmthost => 'cdm.test.example', :cdnmgmtpath => '/dummy/path', :cdnmgmtport => 443, :cdnmgmtscheme => 'https')
|
7
|
+
response = {'x-container-bytes-used' => '42', 'x-container-object-count' => '5', 'last-modified' => Time.now.to_s}
|
8
|
+
response.stubs(:code).returns('204')
|
9
|
+
connection.stubs(:cfreq => response)
|
10
|
+
container = CloudFiles::Container.new(connection, 'test_container')
|
11
|
+
@object = CloudFiles::StorageObject.new(container, 'test_object')
|
12
|
+
assert_equal @object.name, 'test_object'
|
13
|
+
assert_equal @object.class, CloudFiles::StorageObject
|
14
|
+
assert_equal @object.to_s, 'test_object'
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_object_creation_with_invalid_name
|
18
|
+
connection = stub(:storagehost => 'test.storage.example', :storagepath => '/dummy/path', :storageport => 443, :storagescheme => 'https', :cdnmgmthost => 'cdm.test.example', :cdnmgmtpath => '/dummy/path', :cdnmgmtport => 443, :cdnmgmtscheme => 'https')
|
19
|
+
response = {'x-container-bytes-used' => '42', 'x-container-object-count' => '5', 'last-modified' => Time.now.to_s}
|
20
|
+
response.stubs(:code).returns('204')
|
21
|
+
connection.stubs(:cfreq => response)
|
22
|
+
container = CloudFiles::Container.new(connection, 'test_container')
|
23
|
+
assert_raises SyntaxException do
|
24
|
+
@object = CloudFiles::StorageObject.new(container, 'test_object?')
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
|
29
|
+
def test_public_url_exists
|
30
|
+
build_net_http_object(:public => true, :name => 'test object')
|
31
|
+
assert_equal @object.public_url, "http://cdn.test.example/test%20object"
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_public_url_does_not_exist
|
35
|
+
build_net_http_object
|
36
|
+
assert_equal @object.public_url, nil
|
37
|
+
end
|
38
|
+
|
39
|
+
def test_data_succeeds
|
40
|
+
build_net_http_object(:code => '200', :body => 'This is good data')
|
41
|
+
assert_equal @object.data, 'This is good data'
|
42
|
+
end
|
43
|
+
|
44
|
+
def test_data_with_offset_succeeds
|
45
|
+
build_net_http_object(:code => '200', :body => 'Thi')
|
46
|
+
assert_equal @object.data(3), 'Thi'
|
47
|
+
end
|
48
|
+
|
49
|
+
def test_data_fails
|
50
|
+
build_net_http_object(:code => '999', :body => 'This is bad data')
|
51
|
+
assert_raise(NoSuchObjectException) do
|
52
|
+
@object.data
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
def test_data_stream_succeeds
|
57
|
+
build_net_http_object(:code => '200', :body => 'This is good data')
|
58
|
+
data = ""
|
59
|
+
assert_nothing_raised do
|
60
|
+
@object.data_stream { |chunk|
|
61
|
+
data += chunk
|
62
|
+
}
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
def test_data_stream_with_offset_succeeds
|
67
|
+
build_net_http_object(:code => '200', :body => 'This ')
|
68
|
+
data = ""
|
69
|
+
assert_nothing_raised do
|
70
|
+
@object.data_stream(5) { |chunk|
|
71
|
+
data += chunk
|
72
|
+
}
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
# Need to find a way to simulate this properly
|
77
|
+
def data_stream_fails
|
78
|
+
build_net_http_object(:code => '999', :body => 'This is bad data')
|
79
|
+
data = ""
|
80
|
+
assert_raise(NoSuchObjectException) do
|
81
|
+
@object.data_stream { |chunk|
|
82
|
+
data += chunk
|
83
|
+
}
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
def test_set_metadata_succeeds
|
88
|
+
CloudFiles::StorageObject.any_instance.stubs(:populate).returns(true)
|
89
|
+
build_net_http_object(:code => '202')
|
90
|
+
assert_nothing_raised do
|
91
|
+
@object.set_metadata({'Foo' =>'bar'})
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
def test_set_metadata_invalid_object
|
96
|
+
build_net_http_object(:code => '404')
|
97
|
+
assert_raise(NoSuchObjectException) do
|
98
|
+
@object.set_metadata({'Foo' =>'bar'})
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
def test_set_metadata_fails
|
103
|
+
build_net_http_object(:code => '999')
|
104
|
+
assert_raise(InvalidResponseException) do
|
105
|
+
@object.set_metadata({'Foo' =>'bar'})
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
def test_read_metadata_succeeds
|
110
|
+
connection = stub(:storagehost => 'test.storage.example', :storagepath => '/dummy/path', :storageport => 443, :storagescheme => 'https', :cdnmgmthost => 'cdm.test.example', :cdnmgmtpath => '/dummy/path', :cdnmgmtport => 443, :cdnmgmtscheme => 'https')
|
111
|
+
response = {'x-container-bytes-used' => '42', 'x-container-object-count' => '5', 'x-object-meta-foo' => 'Bar', 'last-modified' => Time.now.to_s}
|
112
|
+
response.stubs(:code).returns('204')
|
113
|
+
connection.stubs(:cfreq => response)
|
114
|
+
container = CloudFiles::Container.new(connection, 'test_container')
|
115
|
+
@object = CloudFiles::StorageObject.new(container, 'test_object')
|
116
|
+
assert_equal @object.metadata, {'foo' => 'Bar'}
|
117
|
+
end
|
118
|
+
|
119
|
+
def test_write_succeeds
|
120
|
+
CloudFiles::StorageObject.any_instance.stubs(:populate).returns(true)
|
121
|
+
CloudFiles::Container.any_instance.stubs(:populate).returns(true)
|
122
|
+
build_net_http_object(:code => '201')
|
123
|
+
assert_nothing_raised do
|
124
|
+
@object.write("This is test data")
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
128
|
+
def test_write_with_make_path
|
129
|
+
connection = stub(:storagehost => 'test.storage.example', :storagepath => '/dummy/path', :storageport => 443, :storagescheme => 'https', :cdnmgmthost => 'cdm.test.example', :cdnmgmtpath => '/dummy/path', :cdnmgmtport => 443, :cdnmgmtscheme => 'https')
|
130
|
+
response = {'x-container-bytes-used' => '42', 'x-container-object-count' => '5', 'last-modified' => Time.now.to_s}
|
131
|
+
response.stubs(:code).returns('204').then.returns('204').then.returns('201').then.returns('204')
|
132
|
+
connection.stubs(:cfreq => response)
|
133
|
+
CloudFiles::Container.any_instance.stubs(:populate).returns(true)
|
134
|
+
container = CloudFiles::Container.new(connection, 'test_container')
|
135
|
+
@object = CloudFiles::StorageObject.new(container, 'path/to/my/test_object', false, true)
|
136
|
+
assert_nothing_raised do
|
137
|
+
@object.write("This is path test data")
|
138
|
+
end
|
139
|
+
end
|
140
|
+
|
141
|
+
def test_load_from_filename_succeeds
|
142
|
+
require 'tempfile'
|
143
|
+
out = Tempfile.new('test')
|
144
|
+
out.write("This is test data")
|
145
|
+
out.close
|
146
|
+
CloudFiles::StorageObject.any_instance.stubs(:populate).returns(true)
|
147
|
+
CloudFiles::Container.any_instance.stubs(:populate).returns(true)
|
148
|
+
build_net_http_object(:code => '201')
|
149
|
+
assert_nothing_raised do
|
150
|
+
@object.load_from_filename(out.path)
|
151
|
+
end
|
152
|
+
end
|
153
|
+
|
154
|
+
def test_write_sets_mime_type
|
155
|
+
CloudFiles::StorageObject.any_instance.stubs(:populate).returns(true)
|
156
|
+
CloudFiles::Container.any_instance.stubs(:populate).returns(true)
|
157
|
+
build_net_http_object(:name => 'myfile.xml', :code => '201')
|
158
|
+
assert_nothing_raised do
|
159
|
+
@object.write("This is test data")
|
160
|
+
end
|
161
|
+
end
|
162
|
+
|
163
|
+
def test_write_with_no_data_dies
|
164
|
+
build_net_http_object
|
165
|
+
assert_raise(SyntaxException) do
|
166
|
+
@object.write
|
167
|
+
end
|
168
|
+
end
|
169
|
+
|
170
|
+
def test_write_with_invalid_content_length_dies
|
171
|
+
build_net_http_object(:code => '412')
|
172
|
+
assert_raise(InvalidResponseException) do
|
173
|
+
@object.write('Test Data')
|
174
|
+
end
|
175
|
+
end
|
176
|
+
|
177
|
+
def test_write_with_mismatched_md5_dies
|
178
|
+
build_net_http_object(:code => '422')
|
179
|
+
assert_raise(MisMatchedChecksumException) do
|
180
|
+
@object.write('Test Data')
|
181
|
+
end
|
182
|
+
end
|
183
|
+
|
184
|
+
def test_write_with_invalid_response_dies
|
185
|
+
build_net_http_object(:code => '999')
|
186
|
+
assert_raise(InvalidResponseException) do
|
187
|
+
@object.write('Test Data')
|
188
|
+
end
|
189
|
+
end
|
190
|
+
|
191
|
+
private
|
192
|
+
|
193
|
+
def build_net_http_object(args={:code => '204' })
|
194
|
+
CloudFiles::Container.any_instance.stubs(:populate).returns(true)
|
195
|
+
connection = stub(:storagehost => 'test.storage.example', :storagepath => '/dummy/path', :storageport => 443, :storagescheme => 'https', :cdnmgmthost => 'cdm.test.example', :cdnmgmtpath => '/dummy/path', :cdnmgmtport => 443, :cdnmgmtscheme => 'https')
|
196
|
+
args[:response] = {} unless args[:response]
|
197
|
+
response = {'x-cdn-management-url' => 'http://cdn.example.com/path', 'x-storage-url' => 'http://cdn.example.com/storage', 'authtoken' => 'dummy_token', 'last-modified' => Time.now.to_s}.merge(args[:response])
|
198
|
+
response.stubs(:code).returns(args[:code])
|
199
|
+
response.stubs(:body).returns args[:body] || nil
|
200
|
+
connection.stubs(:cfreq => response)
|
201
|
+
container = CloudFiles::Container.new(connection, 'test_container')
|
202
|
+
container.stubs(:connection).returns(connection)
|
203
|
+
container.stubs(:public?).returns(args[:public] || false)
|
204
|
+
container.stubs(:cdn_url).returns('http://cdn.test.example')
|
205
|
+
@object = CloudFiles::StorageObject.new(container, args[:name] || 'test_object')
|
206
|
+
end
|
207
|
+
|
208
|
+
|
209
|
+
end
|
data/test/test_helper.rb
ADDED
metadata
ADDED
@@ -0,0 +1,79 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: cloudfiles
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.4.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- H. Wade Minter
|
8
|
+
- Rackspace Hosting
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
|
13
|
+
date: 2009-10-08 00:00:00 -05:00
|
14
|
+
default_executable:
|
15
|
+
dependencies: []
|
16
|
+
|
17
|
+
description: A Ruby version of the Rackspace Cloud Files API.
|
18
|
+
email: wade.minter@rackspace.com
|
19
|
+
executables: []
|
20
|
+
|
21
|
+
extensions: []
|
22
|
+
|
23
|
+
extra_rdoc_files:
|
24
|
+
- README.rdoc
|
25
|
+
files:
|
26
|
+
- .gitignore
|
27
|
+
- COPYING
|
28
|
+
- Manifest
|
29
|
+
- README.rdoc
|
30
|
+
- Rakefile
|
31
|
+
- TODO
|
32
|
+
- VERSION
|
33
|
+
- cloudfiles.gemspec
|
34
|
+
- lib/cloudfiles.rb
|
35
|
+
- lib/cloudfiles/authentication.rb
|
36
|
+
- lib/cloudfiles/connection.rb
|
37
|
+
- lib/cloudfiles/container.rb
|
38
|
+
- lib/cloudfiles/storage_object.rb
|
39
|
+
- test/cf-testunit.rb
|
40
|
+
- test/cloudfiles_authentication_test.rb
|
41
|
+
- test/cloudfiles_connection_test.rb
|
42
|
+
- test/cloudfiles_container_test.rb
|
43
|
+
- test/cloudfiles_storage_object_test.rb
|
44
|
+
- test/test_helper.rb
|
45
|
+
has_rdoc: true
|
46
|
+
homepage: http://www.rackspacecloud.com/cloud_hosting_products/files
|
47
|
+
licenses: []
|
48
|
+
|
49
|
+
post_install_message:
|
50
|
+
rdoc_options:
|
51
|
+
- --charset=UTF-8
|
52
|
+
require_paths:
|
53
|
+
- lib
|
54
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
55
|
+
requirements:
|
56
|
+
- - ">="
|
57
|
+
- !ruby/object:Gem::Version
|
58
|
+
version: "0"
|
59
|
+
version:
|
60
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
61
|
+
requirements:
|
62
|
+
- - ">="
|
63
|
+
- !ruby/object:Gem::Version
|
64
|
+
version: "0"
|
65
|
+
version:
|
66
|
+
requirements: []
|
67
|
+
|
68
|
+
rubyforge_project:
|
69
|
+
rubygems_version: 1.3.5
|
70
|
+
signing_key:
|
71
|
+
specification_version: 3
|
72
|
+
summary: A Ruby API into Rackspace Cloud Files
|
73
|
+
test_files:
|
74
|
+
- test/cf-testunit.rb
|
75
|
+
- test/cloudfiles_authentication_test.rb
|
76
|
+
- test/cloudfiles_connection_test.rb
|
77
|
+
- test/cloudfiles_container_test.rb
|
78
|
+
- test/cloudfiles_storage_object_test.rb
|
79
|
+
- test/test_helper.rb
|