2012-11-02 16:24:12 -07:00
|
|
|
Shindo.tests('Fog::Rackspace::Storage | file', ['rackspace']) do
|
|
|
|
|
2012-11-12 10:55:37 -06:00
|
|
|
pending if Fog.mocking?
|
|
|
|
|
2012-11-15 21:40:58 -08:00
|
|
|
def object_meta_attributes
|
2013-02-11 09:37:05 -06:00
|
|
|
@instance.service.head_object(@directory.key, @instance.key).headers.reject {|k, v| !(k =~ /X-Object-Meta-/)}
|
2012-11-15 21:40:58 -08:00
|
|
|
end
|
|
|
|
|
|
|
|
def clear_metadata
|
|
|
|
@instance.metadata.tap do |metadata|
|
|
|
|
metadata.each_pair {|k, v| metadata[k] = nil }
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2012-11-02 16:24:12 -07:00
|
|
|
file_attributes = {
|
|
|
|
:key => 'fog_file_tests',
|
|
|
|
:body => lorem_file
|
|
|
|
}
|
|
|
|
|
|
|
|
directory_attributes = {
|
|
|
|
# Add a random suffix to prevent collision
|
|
|
|
:key => "fogfilestests-#{rand(65536)}"
|
|
|
|
}
|
|
|
|
|
|
|
|
@directory = Fog::Storage[:rackspace].
|
|
|
|
directories.
|
|
|
|
create(directory_attributes)
|
|
|
|
|
2012-12-17 10:08:19 -08:00
|
|
|
model_tests(@directory.files, file_attributes.merge(:etag => 'foo'), Fog.mocking?) do
|
|
|
|
tests('#save should not blow up with etag') do
|
|
|
|
@instance.save
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2012-11-02 16:24:12 -07:00
|
|
|
model_tests(@directory.files, file_attributes, Fog.mocking?) do
|
|
|
|
|
2012-11-16 14:58:29 -08:00
|
|
|
tests("#metadata should load empty metadata").returns({}) do
|
|
|
|
@instance.metadata
|
|
|
|
end
|
2012-11-02 16:24:12 -07:00
|
|
|
|
2012-11-16 14:58:29 -08:00
|
|
|
tests('#save') do
|
2012-11-02 16:24:12 -07:00
|
|
|
|
2012-11-16 14:58:29 -08:00
|
|
|
tests('#metadata') do
|
2012-11-02 16:24:12 -07:00
|
|
|
|
2012-11-16 14:58:29 -08:00
|
|
|
before do
|
|
|
|
@instance.metadata[:foo] = 'bar'
|
|
|
|
@instance.save
|
|
|
|
end
|
|
|
|
|
|
|
|
after do
|
|
|
|
clear_metadata
|
|
|
|
@instance.save
|
|
|
|
end
|
2012-11-02 16:24:12 -07:00
|
|
|
|
2012-11-16 14:58:29 -08:00
|
|
|
tests("should update metadata").returns('bar') do
|
|
|
|
object_meta_attributes['X-Object-Meta-Foo']
|
|
|
|
end
|
2012-11-02 16:24:12 -07:00
|
|
|
|
2012-11-16 14:58:29 -08:00
|
|
|
tests('should cache metadata').returns('bar') do
|
|
|
|
@instance.metadata[:foo]
|
|
|
|
end
|
2012-11-02 16:24:12 -07:00
|
|
|
|
2012-11-16 14:58:29 -08:00
|
|
|
tests('should remove empty metadata').returns({}) do
|
|
|
|
@instance.metadata[:foo] = nil
|
|
|
|
@instance.save
|
|
|
|
object_meta_attributes
|
2013-02-11 09:37:05 -06:00
|
|
|
end
|
2012-11-02 16:24:12 -07:00
|
|
|
|
2013-02-11 09:37:05 -06:00
|
|
|
tests("removes one key while leaving the other") do
|
|
|
|
@instance.metadata[:color] = "green"
|
|
|
|
@instance.save
|
|
|
|
returns({"X-Object-Meta-Foo"=>"bar", "X-Object-Meta-Color"=>"green"}) { object_meta_attributes }
|
|
|
|
|
|
|
|
tests("set metadata[:color] = nil").returns({"X-Object-Meta-Foo"=>"bar"}) do
|
|
|
|
@instance.metadata[:color] = nil
|
|
|
|
@instance.save
|
|
|
|
|
|
|
|
object_meta_attributes
|
|
|
|
end
|
|
|
|
end
|
2012-11-16 14:58:29 -08:00
|
|
|
end
|
2013-02-15 13:01:17 -06:00
|
|
|
|
|
|
|
tests('urls') do
|
|
|
|
tests('no CDN') do
|
|
|
|
|
|
|
|
tests('#public_url') do
|
|
|
|
|
|
|
|
tests('http').returns(nil) do
|
|
|
|
@instance.public_url
|
|
|
|
end
|
|
|
|
|
|
|
|
@directory.cdn_cname = "my_cname.com"
|
|
|
|
tests('cdn_cname').returns(nil) do
|
|
|
|
@instance.public_url
|
|
|
|
end
|
|
|
|
|
|
|
|
@directory.cdn_cname = nil
|
|
|
|
@directory.service.instance_variable_set "@rackspace_cdn_ssl", true
|
|
|
|
tests('ssl').returns(nil) do
|
|
|
|
@instance.public_url
|
|
|
|
end
|
|
|
|
@directory.service.instance_variable_set "@rackspace_cdn_ssl", nil
|
|
|
|
end
|
|
|
|
|
|
|
|
tests('#ios_url').returns(nil) do
|
|
|
|
@instance.ios_url
|
|
|
|
end
|
|
|
|
|
|
|
|
tests('#streaming_url').returns(nil) do
|
|
|
|
@instance.streaming_url
|
|
|
|
end
|
|
|
|
end
|
|
|
|
tests('With CDN') do
|
|
|
|
tests('#public_url') do
|
|
|
|
@directory.public = true
|
|
|
|
@directory.save
|
|
|
|
|
|
|
|
tests('http').returns(0) do
|
|
|
|
@instance.public_url =~ /http:\/\/.*#{@instance.key}/
|
|
|
|
end
|
|
|
|
|
|
|
|
@directory.cdn_cname = "my_cname.com"
|
|
|
|
tests('cdn_cname').returns(0) do
|
|
|
|
@instance.public_url =~ /my_cname\.com.*#{@instance.key}/
|
|
|
|
end
|
|
|
|
|
|
|
|
@directory.cdn_cname = nil
|
|
|
|
@directory.service.instance_variable_set "@rackspace_cdn_ssl", true
|
|
|
|
tests('ssl').returns(0) do
|
|
|
|
@instance.public_url =~ /https:\/\/.+\.ssl\..*#{@instance.key}/
|
|
|
|
end
|
|
|
|
@directory.service.instance_variable_set "@rackspace_cdn_ssl", nil
|
|
|
|
end
|
|
|
|
|
|
|
|
tests('#ios_url').returns(0) do
|
|
|
|
@instance.ios_url =~ /http:\/\/.+\.iosr\..*#{@instance.key}/
|
|
|
|
end
|
|
|
|
|
|
|
|
tests('#streaming_url').returns(0) do
|
|
|
|
@instance.streaming_url =~ /http:\/\/.+\.stream\..*#{@instance.key}/
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
2012-11-16 14:58:29 -08:00
|
|
|
|
|
|
|
tests('#metadata keys') do
|
|
|
|
|
|
|
|
after do
|
|
|
|
clear_metadata
|
|
|
|
@instance.save
|
|
|
|
end
|
2012-11-02 16:24:12 -07:00
|
|
|
|
2012-11-16 14:58:29 -08:00
|
|
|
@instance.metadata[:foo_bar] = 'baz'
|
|
|
|
tests("should support compound key names").returns('baz') do
|
|
|
|
@instance.save
|
|
|
|
object_meta_attributes['X-Object-Meta-Foo-Bar']
|
2012-11-15 21:40:58 -08:00
|
|
|
end
|
|
|
|
|
2012-11-16 14:58:29 -08:00
|
|
|
@instance.metadata['foo'] = 'bar'
|
|
|
|
tests("should support string keys").returns('bar') do
|
|
|
|
@instance.save
|
|
|
|
object_meta_attributes['X-Object-Meta-Foo']
|
2012-11-15 21:40:58 -08:00
|
|
|
end
|
2012-11-02 16:24:12 -07:00
|
|
|
|
2012-11-16 14:58:29 -08:00
|
|
|
@instance.metadata['foo_bar'] = 'baz'
|
|
|
|
tests("should support compound string key names").returns('baz') do
|
|
|
|
@instance.save
|
|
|
|
object_meta_attributes['X-Object-Meta-Foo-Bar']
|
|
|
|
end
|
|
|
|
|
|
|
|
@instance.metadata['foo-bar'] = 'baz'
|
|
|
|
tests("should support hyphenated keys").returns('baz') do
|
|
|
|
@instance.save
|
|
|
|
object_meta_attributes['X-Object-Meta-Foo-Bar']
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
end
|
|
|
|
|
2012-11-07 23:14:48 -06:00
|
|
|
tests("#access_control_allow_origin") do
|
|
|
|
|
|
|
|
tests("#access_control_allow_origin should default to nil").returns(nil) do
|
|
|
|
@instance.access_control_allow_origin
|
|
|
|
end
|
|
|
|
|
|
|
|
@instance.access_control_allow_origin = 'http://example.com'
|
2012-11-09 14:22:10 -06:00
|
|
|
@instance.save
|
2012-11-07 23:14:48 -06:00
|
|
|
tests("#access_control_allow_origin should return access control attribute").returns('http://example.com') do
|
|
|
|
@instance.access_control_allow_origin
|
|
|
|
end
|
|
|
|
|
|
|
|
@instance.access_control_allow_origin = 'foo'
|
2012-11-09 14:22:10 -06:00
|
|
|
@instance.save
|
2012-11-07 23:14:48 -06:00
|
|
|
tests("#access_control_allow_origin= should update access_control_allow_origin").returns('bar') do
|
|
|
|
@instance.access_control_allow_origin = 'bar'
|
2012-11-09 14:22:10 -06:00
|
|
|
@instance.save
|
2012-11-07 23:14:48 -06:00
|
|
|
@instance.access_control_allow_origin
|
2012-11-15 21:40:58 -08:00
|
|
|
end
|
2012-11-02 16:24:12 -07:00
|
|
|
|
2012-11-07 23:14:48 -06:00
|
|
|
tests("#access_control_allow_origin= should not blow up on nil") do
|
|
|
|
@instance.access_control_allow_origin = nil
|
2012-11-09 14:22:10 -06:00
|
|
|
@instance.save
|
2012-11-07 23:14:48 -06:00
|
|
|
end
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
model_tests(@directory.files, file_attributes, Fog.mocking?) do
|
|
|
|
|
|
|
|
tests("#origin") do
|
|
|
|
|
|
|
|
tests("#origin should default to nil").returns(nil) do
|
2012-11-09 14:22:10 -06:00
|
|
|
@instance.save
|
2012-11-07 23:14:48 -06:00
|
|
|
@instance.origin
|
|
|
|
end
|
|
|
|
|
|
|
|
@instance.origin = 'http://example.com'
|
2012-11-09 14:22:10 -06:00
|
|
|
@instance.save
|
2012-11-07 23:14:48 -06:00
|
|
|
tests("#origin should return access control attributes").returns('http://example.com') do
|
|
|
|
@instance.origin
|
|
|
|
end
|
|
|
|
@instance.attributes.delete('Origin')
|
|
|
|
|
2012-11-09 14:22:10 -06:00
|
|
|
@instance.origin = 'foo'
|
|
|
|
@instance.save
|
2012-11-07 23:14:48 -06:00
|
|
|
tests("#origin= should update origin").returns('bar') do
|
|
|
|
@instance.origin = 'bar'
|
2012-11-09 14:22:10 -06:00
|
|
|
@instance.save
|
2012-11-07 23:14:48 -06:00
|
|
|
@instance.origin
|
|
|
|
end
|
|
|
|
|
|
|
|
tests("#origin= should not blow up on nil") do
|
|
|
|
@instance.origin = nil
|
2012-11-09 14:22:10 -06:00
|
|
|
@instance.save
|
2012-11-07 23:14:48 -06:00
|
|
|
end
|
|
|
|
|
|
|
|
end
|
|
|
|
|
2012-11-02 16:24:12 -07:00
|
|
|
end
|
|
|
|
|
|
|
|
@directory.destroy
|
2012-11-16 14:58:29 -08:00
|
|
|
|
2012-11-07 23:14:48 -06:00
|
|
|
end
|