1
0
Fork 0
mirror of https://github.com/fog/fog.git synced 2022-11-09 13:51:43 -05:00
fog--fog/tests/rackspace/models/storage/metadata_tests.rb

174 lines
No EOL
6.1 KiB
Ruby

require 'fog/rackspace/models/storage/metadata'
require 'fog/rackspace/models/storage/directory'
require 'fog/rackspace/models/storage/file'
Shindo.tests('Fog::Rackspace::Storage | metadata', ['rackspace']) do
def assert_directory(obj, assert_value)
metadata = Fog::Storage::Rackspace::Metadata.new obj
returns(assert_value) { metadata.send :directory? }
end
def assert_file(obj, assert_value)
metadata = Fog::Storage::Rackspace::Metadata.new obj
returns(assert_value) { metadata.send :file? }
end
tests('Directory') do
@directory = Fog::Storage::Rackspace::Directory.new
tests('#to_key') do
tests('valid key').returns(:image_size) do
metadata = Fog::Storage::Rackspace::Metadata.new @directory
metadata.send(:to_key, "X-Container-Meta-Image-Size")
end
tests('invalid key').returns(nil) do
metadata = Fog::Storage::Rackspace::Metadata.new @directory
metadata.send(:to_key, "bad-key")
end
end
tests('#to_header_key') do
metadata = Fog::Storage::Rackspace::Metadata.new @directory
tests('key to add').returns("X-Container-Meta-Thumbnail-Image") do
metadata.send(:to_header_key, :thumbnail_image, true)
end
tests('key to remove').returns("X-Remove-Container-Meta-Thumbnail-Image") do
metadata.send(:to_header_key, :thumbnail_image, nil)
end
end
tests('#to_headers').returns({"X-Container-Meta-Preview"=>true, "X-Remove-Container-Meta-Delete-Me"=>1}) do
metadata = Fog::Storage::Rackspace::Metadata.new @directory
metadata[:preview] = true
metadata[:delete_me] = nil
metadata.to_headers
end
tests("#from_headers").returns({:my_boolean=>"true", :my_integer=>"42", :my_string=>"I am a string"}) do
headers = {
"X-Container-Meta-My-Integer"=> "42",
"X-Container-Meta-My-Boolean"=> "true",
"X-Container-Meta-My-String"=> "I am a string"
}
metadata = Fog::Storage::Rackspace::Metadata.from_headers @directory, headers
metadata.data
end
tests("#delete").returns({"X-Remove-Container-Meta-Delete-Me"=>1}) do
metadata = Fog::Storage::Rackspace::Metadata.new @directory
metadata.delete(:delete_me)
metadata.to_headers
end
end
tests('File') do
@file = Fog::Storage::Rackspace::File.new
tests('#to_key') do
tests('valid key').returns(:image_size) do
metadata = Fog::Storage::Rackspace::Metadata.new @file
metadata.send(:to_key, "X-Object-Meta-Image-Size")
end
tests('invalid key').returns(nil) do
metadata = Fog::Storage::Rackspace::Metadata.new @file
metadata.send(:to_key, "bad-key")
end
end
tests('#to_header_key') do
metadata = Fog::Storage::Rackspace::Metadata.new @file
tests('key to add').returns("X-Object-Meta-Thumbnail-Image") do
metadata.send(:to_header_key, :thumbnail_image, true)
end
tests('key to remove').returns("X-Remove-Object-Meta-Thumbnail-Image") do
metadata.send(:to_header_key, :thumbnail_image, nil)
end
end
tests('#to_headers').returns({"X-Object-Meta-Preview"=>true, "X-Remove-Object-Meta-Delete-Me"=>1}) do
metadata = Fog::Storage::Rackspace::Metadata.new @file
metadata[:preview] = true
metadata[:delete_me] = nil
metadata.to_headers
end
tests("#from_headers").returns({:my_boolean=>"true", :my_integer=>"42", :my_string=>"I am a string"}) do
headers = {
"X-Object-Meta-My-Integer"=> "42",
"X-Object-Meta-My-Boolean"=> "true",
"X-Object-Meta-My-String"=> "I am a string"
}
metadata = Fog::Storage::Rackspace::Metadata.from_headers @file, headers
metadata.data
end
tests("#delete").returns({"X-Remove-Object-Meta-Delete-Me"=>1}) do
metadata = Fog::Storage::Rackspace::Metadata.new @file
metadata.delete(:delete_me)
metadata.to_headers
end
end
tests("#respond_to?") do
tests('Should respond to all of the methods in Hash class').returns(true) do
metadata = Fog::Storage::Rackspace::Metadata.new @file
Hash.instance_methods.all? {|method| metadata.respond_to?(method)}
end
tests('Should respond to all of the methods in the Metadata class').returns(true) do
metadata = Fog::Storage::Rackspace::Metadata.new @file
metadata.methods.all? {|method| metadata.respond_to?(method)}
end
end
tests("#method_missing").returns(true) do
metadata = Fog::Storage::Rackspace::Metadata.new @file
metadata[:test] = true
metadata[:test]
end
tests('#directory?') do
assert_directory Fog::Storage::Rackspace::Directories, true
assert_directory Fog::Storage::Rackspace::Directory, true
assert_directory Fog::Storage::Rackspace::Directory.new, true
assert_directory nil, false
assert_directory Fog::Storage::Rackspace::Files, false
assert_directory Fog::Storage::Rackspace::File, false
assert_directory Fog::Storage::Rackspace::File.new, false
assert_directory "I am a string!", false
end
tests('#file?') do
assert_file Fog::Storage::Rackspace::Directories, false
assert_file Fog::Storage::Rackspace::Directory, false
assert_file Fog::Storage::Rackspace::Directory.new, false
assert_file nil, false
assert_file Fog::Storage::Rackspace::Files, true
assert_file Fog::Storage::Rackspace::File, true
assert_file Fog::Storage::Rackspace::File.new, true
assert_file "I am a string!", false
end
tests('#parent_class') do
tests('Fog::Storage::Rackspace::Directory object') do
metadata = Fog::Storage::Rackspace::Metadata.new Fog::Storage::Rackspace::Directory.new
returns(Fog::Storage::Rackspace::Directory) { metadata.send :parent_class }
end
tests('Fog::Storage::Rackspace::Directory class') do
metadata = Fog::Storage::Rackspace::Metadata.new Fog::Storage::Rackspace::Directory
returns(Fog::Storage::Rackspace::Directory) { metadata.send :parent_class }
end
end
end