require "securerandom" Shindo.tests("Fog::Storage[:google] | object requests", ["google"]) do random_string = SecureRandom.hex @directory = Fog::Storage[:google].directories.create(:key => "fog-test-object-#{random_string}") tests("success") do tests("#put_object('#{@directory.identity}', 'fog_object', lorem_file)").succeeds do Fog::Storage[:google].put_object(@directory.identity, "fog_object", lorem_file) end tests("#copy_object('#{@directory.identity}', 'fog_object', '#{@directory.identity}', 'fog_other_object')").succeeds do Fog::Storage[:google].copy_object(@directory.identity, "fog_object", @directory.identity, "fog_other_object") end Fog::Storage[:google].delete_object(@directory.identity, "fog_other_object") tests("#get_object('#{@directory.identity}', 'fog_object')").returns(lorem_file.read) do Fog::Storage[:google].get_object(@directory.identity, "fog_object").body end tests("#get_object('#{@directory.identity}', 'fog_object', &block)").returns(lorem_file.read) do data = "" Fog::Storage[:google].get_object(@directory.identity, "fog_object") do |chunk, _remaining_bytes, _total_bytes| data << chunk end data end tests("#head_object('#{@directory.identity}', 'fog_object')").succeeds do Fog::Storage[:google].head_object(@directory.identity, "fog_object") end tests("#delete_object('#{@directory.identity}', 'fog_object')").succeeds do Fog::Storage[:google].delete_object(@directory.identity, "fog_object") end end tests("failure") do tests("#put_object('fognonbucket', 'fog_non_object', lorem_file)").raises(Excon::Errors::NotFound) do Fog::Storage[:google].put_object("fognonbucket", "fog_non_object", lorem_file) end tests("#copy_object('fognonbucket', 'fog_object', '#{@directory.identity}', 'fog_other_object')").raises(Excon::Errors::NotFound) do Fog::Storage[:google].copy_object("fognonbucket", "fog_object", @directory.identity, "fog_other_object") end tests("#copy_object('#{@directory.identity}', 'fog_non_object', '#{@directory.identity}', 'fog_other_object')").raises(Excon::Errors::NotFound) do Fog::Storage[:google].copy_object(@directory.identity, "fog_non_object", @directory.identity, "fog_other_object") end tests("#copy_object('#{@directory.identity}', 'fog_object', 'fognonbucket', 'fog_other_object')").raises(Excon::Errors::NotFound) do Fog::Storage[:google].copy_object(@directory.identity, "fog_object", "fognonbucket", "fog_other_object") end tests("#get_object('fognonbucket', 'fog_non_object')").raises(Excon::Errors::NotFound) do Fog::Storage[:google].get_object("fognonbucket", "fog_non_object") end tests("#get_object('#{@directory.identity}', 'fog_non_object')").raises(Excon::Errors::NotFound) do Fog::Storage[:google].get_object(@directory.identity, "fog_non_object") end tests("#head_object('fognonbucket', 'fog_non_object')").raises(Excon::Errors::NotFound) do Fog::Storage[:google].head_object("fognonbucket", "fog_non_object") end tests("#head_object('#{@directory.identity}', 'fog_non_object')").raises(Excon::Errors::NotFound) do Fog::Storage[:google].head_object(@directory.identity, "fog_non_object") end tests("#delete_object('fognonbucket', 'fog_non_object')").raises(Excon::Errors::NotFound) do Fog::Storage[:google].delete_object("fognonbucket", "fog_non_object") end end @directory.destroy end