From 442ae6e4cd8a5dfd090c7df7a6a7275b4b554e77 Mon Sep 17 00:00:00 2001 From: Jonas Pfenniger Date: Thu, 27 Oct 2011 20:19:29 +0100 Subject: [PATCH 1/3] Fixes Fog::AWS::Storage#put_(bucket|object)_acl The EmailAddress and URI variants where generating invalid XML --- lib/fog/aws/requests/storage/hash_to_acl.rb | 21 +++-- tests/aws/requests/storage/bucket_tests.rb | 96 ++++++++++++++++----- tests/aws/requests/storage/object_tests.rb | 74 +++++++++++++--- 3 files changed, 152 insertions(+), 39 deletions(-) diff --git a/lib/fog/aws/requests/storage/hash_to_acl.rb b/lib/fog/aws/requests/storage/hash_to_acl.rb index e9699bf2d..31431f5dd 100644 --- a/lib/fog/aws/requests/storage/hash_to_acl.rb +++ b/lib/fog/aws/requests/storage/hash_to_acl.rb @@ -15,18 +15,21 @@ DATA acl['AccessControlList'].each do |grant| data << " \n" - type = case grant['Grantee'].keys.sort + case grant['Grantee'].keys.sort when ['DisplayName', 'ID'] - 'CanonicalUser' + data << " \n" + data << " #{grant['Grantee']['ID']}\n" + data << " #{grant['Grantee']['DisplayName']}\n" + data << " \n" when ['EmailAddress'] - 'AmazonCustomerByEmail' + data << " \n" + data << " #{grant['Grantee']['EmailAddress']}\n" + data << " \n" when ['URI'] - 'Group' + data << " \n" + data << " #{grant['Grantee']['URI']}\n" + data << " \n" end - data << " \n" - data << " #{grant['Grantee']['ID']}\n" - data << " #{grant['Grantee']['DisplayName']}\n" - data << " \n" data << " #{grant['Permission']}\n" data << " \n" end @@ -39,6 +42,6 @@ DATA data end end - end + end end diff --git a/tests/aws/requests/storage/bucket_tests.rb b/tests/aws/requests/storage/bucket_tests.rb index ce12067ce..92d07fb4c 100644 --- a/tests/aws/requests/storage/bucket_tests.rb +++ b/tests/aws/requests/storage/bucket_tests.rb @@ -119,30 +119,11 @@ Shindo.tests('Fog::Storage[:aws] | bucket requests', [:aws]) do Fog::Storage[:aws].put_bucket_website('fogbuckettests', 'index.html') end - tests("#delete_bucket_website('fogbuckettests')").succeeds do - pending if Fog.mocking? - Fog::Storage[:aws].delete_bucket_website('fogbuckettests') - end - - tests("#delete_bucket('fogbuckettests')").succeeds do - Fog::Storage[:aws].delete_bucket('fogbuckettests') - end - tests("#put_bucket_acl('fogbuckettests', 'private')").succeeds do Fog::Storage[:aws].put_bucket_acl('fogbuckettests', 'private') end - tests("#put_bucket_acl('fogbuckettests', hash)").returns(true) do - Fog::Storage[:aws].put_bucket_acl('fogbuckettests', { - 'Owner' => { 'ID' => "8a6925ce4adf5f21c32aa379004fef", 'DisplayName' => "mtd@amazon.com" }, - 'AccessControlList' => [ - { - 'Grantee' => { 'ID' => "8a6925ce4adf588a4532142d3f74dd8c71fa124b1ddee97f21c32aa379004fef", 'DisplayName' => "mtd@amazon.com" }, - 'Permission' => "FULL_CONTROL" - } - ] - }) - Fog::Storage[:aws].get_bucket_acl('fogbuckettests').body == <<-BODY + tests("#put_bucket_acl('fogbuckettests', hash with id)").returns(<<-BODY) do 8a6925ce4adf5f21c32aa379004fef @@ -159,6 +140,81 @@ Shindo.tests('Fog::Storage[:aws] | bucket requests', [:aws]) do BODY + Fog::Storage[:aws].put_bucket_acl('fogbuckettests', { + 'Owner' => { 'ID' => "8a6925ce4adf5f21c32aa379004fef", 'DisplayName' => "mtd@amazon.com" }, + 'AccessControlList' => [ + { + 'Grantee' => { 'ID' => "8a6925ce4adf588a4532142d3f74dd8c71fa124b1ddee97f21c32aa379004fef", 'DisplayName' => "mtd@amazon.com" }, + 'Permission' => "FULL_CONTROL" + } + ] + }) + Fog::Storage[:aws].get_bucket_acl('fogbuckettests').body + end + + tests("#put_bucket_acl('fogbuckettests', hash with email)").returns(<<-BODY) do + + + 8a6925ce4adf5f21c32aa379004fef + mtd@amazon.com + + + + + mtd@amazon.com + + FULL_CONTROL + + + +BODY + Fog::Storage[:aws].put_bucket_acl('fogbuckettests', { + 'Owner' => { 'ID' => "8a6925ce4adf5f21c32aa379004fef", 'DisplayName' => "mtd@amazon.com" }, + 'AccessControlList' => [ + { + 'Grantee' => { 'EmailAddress' => 'mtd@amazon.com' }, + 'Permission' => "FULL_CONTROL" + } + ] + }) + Fog::Storage[:aws].get_bucket_acl('fogbuckettests').body + end + + tests("#put_bucket_acl('fogbuckettests', hash with uri)").returns(<<-BODY) do + + + 8a6925ce4adf5f21c32aa379004fef + mtd@amazon.com + + + + + http://www.w3.org/2001/XMLSchema-instance + + FULL_CONTROL + + + +BODY + Fog::Storage[:aws].put_bucket_acl('fogbuckettests', { + 'Owner' => { 'ID' => "8a6925ce4adf5f21c32aa379004fef", 'DisplayName' => "mtd@amazon.com" }, + 'AccessControlList' => [ + { + 'Grantee' => { 'URI' => 'http://www.w3.org/2001/XMLSchema-instance' }, + 'Permission' => "FULL_CONTROL" + } + ] + }) + Fog::Storage[:aws].get_bucket_acl('fogbuckettests').body + end + + tests("#delete_bucket_website('fogbuckettests')").succeeds do + pending if Fog.mocking? + Fog::Storage[:aws].delete_bucket_website('fogbuckettests') + end + + tests("#delete_bucket('fogbuckettests')").succeeds do + Fog::Storage[:aws].delete_bucket('fogbuckettests') end end diff --git a/tests/aws/requests/storage/object_tests.rb b/tests/aws/requests/storage/object_tests.rb index 04bf48722..d83b97907 100644 --- a/tests/aws/requests/storage/object_tests.rb +++ b/tests/aws/requests/storage/object_tests.rb @@ -34,16 +34,7 @@ Shindo.tests('AWS::Storage | object requests', ['aws']) do Fog::Storage[:aws].put_object_acl(@directory.identity, 'fog_object', 'private') end - tests("#put_object_acl('#{@directory.identity}', 'fog_object', hash)").returns(true) do - Fog::Storage[:aws].put_object_acl(@directory.identity, 'fog_object', { - 'Owner' => { 'ID' => "8a6925ce4adf5f21c32aa379004fef", 'DisplayName' => "mtd@amazon.com" }, - 'AccessControlList' => [ - { - 'Grantee' => { 'ID' => "8a6925ce4adf588a4532142d3f74dd8c71fa124b1ddee97f21c32aa379004fef", 'DisplayName' => "mtd@amazon.com" }, - 'Permission' => "FULL_CONTROL" - } - ]}) - Fog::Storage[:aws].get_object_acl(@directory.identity, 'fog_object').body == <<-BODY + tests("#put_object_acl('#{@directory.identity}', 'fog_object', hash with id)").returns(< 8a6925ce4adf5f21c32aa379004fef @@ -60,6 +51,69 @@ Shindo.tests('AWS::Storage | object requests', ['aws']) do BODY + Fog::Storage[:aws].put_object_acl(@directory.identity, 'fog_object', { + 'Owner' => { 'ID' => "8a6925ce4adf5f21c32aa379004fef", 'DisplayName' => "mtd@amazon.com" }, + 'AccessControlList' => [ + { + 'Grantee' => { 'ID' => "8a6925ce4adf588a4532142d3f74dd8c71fa124b1ddee97f21c32aa379004fef", 'DisplayName' => "mtd@amazon.com" }, + 'Permission' => "FULL_CONTROL" + } + ]}) + Fog::Storage[:aws].get_object_acl(@directory.identity, 'fog_object').body + end + + tests("#put_object_acl('#{@directory.identity}', 'fog_object', hash with email)").returns(< + + 8a6925ce4adf5f21c32aa379004fef + mtd@amazon.com + + + + + mtd@amazon.com + + FULL_CONTROL + + + +BODY + Fog::Storage[:aws].put_object_acl(@directory.identity, 'fog_object', { + 'Owner' => { 'ID' => "8a6925ce4adf5f21c32aa379004fef", 'DisplayName' => "mtd@amazon.com" }, + 'AccessControlList' => [ + { + 'Grantee' => { 'EmailAddress' => 'mtd@amazon.com' }, + 'Permission' => "FULL_CONTROL" + } + ]}) + Fog::Storage[:aws].get_object_acl(@directory.identity, 'fog_object').body + end + + tests("#put_object_acl('#{@directory.identity}', 'fog_object', hash with uri)").returns(< + + 8a6925ce4adf5f21c32aa379004fef + mtd@amazon.com + + + + + http://acs.amazonaws.com/groups/global/AllUsers + + FULL_CONTROL + + + +BODY + Fog::Storage[:aws].put_object_acl(@directory.identity, 'fog_object', { + 'Owner' => { 'ID' => "8a6925ce4adf5f21c32aa379004fef", 'DisplayName' => "mtd@amazon.com" }, + 'AccessControlList' => [ + { + 'Grantee' => { 'URI' => 'http://acs.amazonaws.com/groups/global/AllUsers' }, + 'Permission' => "FULL_CONTROL" + } + ]}) + Fog::Storage[:aws].get_object_acl(@directory.identity, 'fog_object').body end tests("#delete_object('#{@directory.identity}', 'fog_object')").succeeds do From e82ac2b7735cf4a10efe88eda5d8ac04ade0a4cf Mon Sep 17 00:00:00 2001 From: Jonas Pfenniger Date: Mon, 31 Oct 2011 12:18:53 +0000 Subject: [PATCH 2/3] Randomize bucket names in tests --- tests/aws/requests/storage/bucket_tests.rb | 77 +++++++++++----------- tests/aws/requests/storage/object_tests.rb | 3 +- 2 files changed, 40 insertions(+), 40 deletions(-) diff --git a/tests/aws/requests/storage/bucket_tests.rb b/tests/aws/requests/storage/bucket_tests.rb index 92d07fb4c..d9d3e10b4 100644 --- a/tests/aws/requests/storage/bucket_tests.rb +++ b/tests/aws/requests/storage/bucket_tests.rb @@ -1,4 +1,5 @@ Shindo.tests('Fog::Storage[:aws] | bucket requests', [:aws]) do + @aws_bucket_name = 'fogbuckettests-' + Time.now.to_i.to_s(32) tests('success') do @@ -33,30 +34,30 @@ Shindo.tests('Fog::Storage[:aws] | bucket requests', [:aws]) do } } - tests("#put_bucket('fogbuckettests')").succeeds do - Fog::Storage[:aws].put_bucket('fogbuckettests') + tests("#put_bucket('#{@aws_bucket_name}')").succeeds do + Fog::Storage[:aws].put_bucket(@aws_bucket_name) end tests("#get_service").formats(@service_format) do Fog::Storage[:aws].get_service.body end - file = Fog::Storage[:aws].directories.get('fogbuckettests').files.create(:body => 'y', :key => 'x') + file = Fog::Storage[:aws].directories.get(@aws_bucket_name).files.create(:body => 'y', :key => 'x') - tests("#get_bucket('fogbuckettests)").formats(@bucket_format) do - Fog::Storage[:aws].get_bucket('fogbuckettests').body + tests("#get_bucket('#{@aws_bucket_name}')").formats(@bucket_format) do + Fog::Storage[:aws].get_bucket(@aws_bucket_name).body end file.destroy - file1 = Fog::Storage[:aws].directories.get('fogbuckettests').files.create(:body => 'a', :key => 'a/a1/file1') - file2 = Fog::Storage[:aws].directories.get('fogbuckettests').files.create(:body => 'ab', :key => 'a/file2') - file3 = Fog::Storage[:aws].directories.get('fogbuckettests').files.create(:body => 'abc', :key => 'b/file3') - file4 = Fog::Storage[:aws].directories.get('fogbuckettests').files.create(:body => 'abcd', :key => 'file4') + file1 = Fog::Storage[:aws].directories.get(@aws_bucket_name).files.create(:body => 'a', :key => 'a/a1/file1') + file2 = Fog::Storage[:aws].directories.get(@aws_bucket_name).files.create(:body => 'ab', :key => 'a/file2') + file3 = Fog::Storage[:aws].directories.get(@aws_bucket_name).files.create(:body => 'abc', :key => 'b/file3') + file4 = Fog::Storage[:aws].directories.get(@aws_bucket_name).files.create(:body => 'abcd', :key => 'file4') - tests("#get_bucket('fogbuckettests')") do + tests("#get_bucket('#{@aws_bucket_name}')") do before do - @bucket = Fog::Storage[:aws].get_bucket('fogbuckettests') + @bucket = Fog::Storage[:aws].get_bucket(@aws_bucket_name) end tests(".body['Contents'].map{|n| n['Key']}").returns(["a/a1/file1", "a/file2", "b/file3", "file4"]) do @@ -72,9 +73,9 @@ Shindo.tests('Fog::Storage[:aws] | bucket requests', [:aws]) do end end - tests("#get_bucket('fogbuckettests', 'delimiter' => '/')") do + tests("#get_bucket('#{@aws_bucket_name}', 'delimiter' => '/')") do before do - @bucket = Fog::Storage[:aws].get_bucket('fogbuckettests', 'delimiter' => '/') + @bucket = Fog::Storage[:aws].get_bucket(@aws_bucket_name, 'delimiter' => '/') end tests(".body['Contents'].map{|n| n['Key']}").returns(['file4']) do @@ -86,9 +87,9 @@ Shindo.tests('Fog::Storage[:aws] | bucket requests', [:aws]) do end end - tests("#get_bucket('fogbuckettests', 'delimiter' => '/', 'prefix' => 'a/')") do + tests("#get_bucket('#{@aws_bucket_name}', 'delimiter' => '/', 'prefix' => 'a/')") do before do - @bucket = Fog::Storage[:aws].get_bucket('fogbuckettests', 'delimiter' => '/', 'prefix' => 'a/') + @bucket = Fog::Storage[:aws].get_bucket(@aws_bucket_name, 'delimiter' => '/', 'prefix' => 'a/') end tests(".body['Contents'].map{|n| n['Key']}").returns(['a/file2']) do @@ -102,28 +103,28 @@ Shindo.tests('Fog::Storage[:aws] | bucket requests', [:aws]) do file1.destroy; file2.destroy; file3.destroy; file4.destroy - tests("#get_bucket_location('fogbuckettests)").formats('LocationConstraint' => NilClass) do - Fog::Storage[:aws].get_bucket_location('fogbuckettests').body + tests("#get_bucket_location('#{@aws_bucket_name}')").formats('LocationConstraint' => NilClass) do + Fog::Storage[:aws].get_bucket_location(@aws_bucket_name).body end - tests("#get_request_payment('fogbuckettests')").formats('Payer' => String) do - Fog::Storage[:aws].get_request_payment('fogbuckettests').body + tests("#get_request_payment('#{@aws_bucket_name}')").formats('Payer' => String) do + Fog::Storage[:aws].get_request_payment(@aws_bucket_name).body end - tests("#put_request_payment('fogbuckettests', 'Requester')").succeeds do - Fog::Storage[:aws].put_request_payment('fogbuckettests', 'Requester') + tests("#put_request_payment('#{@aws_bucket_name}', 'Requester')").succeeds do + Fog::Storage[:aws].put_request_payment(@aws_bucket_name, 'Requester') end - tests("#put_bucket_website('fogbuckettests', 'index.html')").succeeds do + tests("#put_bucket_website('#{@aws_bucket_name}', 'index.html')").succeeds do pending if Fog.mocking? - Fog::Storage[:aws].put_bucket_website('fogbuckettests', 'index.html') + Fog::Storage[:aws].put_bucket_website(@aws_bucket_name, 'index.html') end - tests("#put_bucket_acl('fogbuckettests', 'private')").succeeds do - Fog::Storage[:aws].put_bucket_acl('fogbuckettests', 'private') + tests("#put_bucket_acl('#{@aws_bucket_name}', 'private')").succeeds do + Fog::Storage[:aws].put_bucket_acl(@aws_bucket_name, 'private') end - tests("#put_bucket_acl('fogbuckettests', hash with id)").returns(<<-BODY) do + tests("#put_bucket_acl('#{@aws_bucket_name}', hash with id)").returns(<<-BODY) do 8a6925ce4adf5f21c32aa379004fef @@ -140,7 +141,7 @@ Shindo.tests('Fog::Storage[:aws] | bucket requests', [:aws]) do BODY - Fog::Storage[:aws].put_bucket_acl('fogbuckettests', { + Fog::Storage[:aws].put_bucket_acl(@aws_bucket_name, { 'Owner' => { 'ID' => "8a6925ce4adf5f21c32aa379004fef", 'DisplayName' => "mtd@amazon.com" }, 'AccessControlList' => [ { @@ -149,10 +150,10 @@ BODY } ] }) - Fog::Storage[:aws].get_bucket_acl('fogbuckettests').body + Fog::Storage[:aws].get_bucket_acl(@aws_bucket_name).body end - tests("#put_bucket_acl('fogbuckettests', hash with email)").returns(<<-BODY) do + tests("#put_bucket_acl('#{@aws_bucket_name}', hash with email)").returns(<<-BODY) do 8a6925ce4adf5f21c32aa379004fef @@ -168,7 +169,7 @@ BODY BODY - Fog::Storage[:aws].put_bucket_acl('fogbuckettests', { + Fog::Storage[:aws].put_bucket_acl(@aws_bucket_name, { 'Owner' => { 'ID' => "8a6925ce4adf5f21c32aa379004fef", 'DisplayName' => "mtd@amazon.com" }, 'AccessControlList' => [ { @@ -177,10 +178,10 @@ BODY } ] }) - Fog::Storage[:aws].get_bucket_acl('fogbuckettests').body + Fog::Storage[:aws].get_bucket_acl(@aws_bucket_name).body end - tests("#put_bucket_acl('fogbuckettests', hash with uri)").returns(<<-BODY) do + tests("#put_bucket_acl('#{@aws_bucket_name}', hash with uri)").returns(<<-BODY) do 8a6925ce4adf5f21c32aa379004fef @@ -196,7 +197,7 @@ BODY BODY - Fog::Storage[:aws].put_bucket_acl('fogbuckettests', { + Fog::Storage[:aws].put_bucket_acl(@aws_bucket_name, { 'Owner' => { 'ID' => "8a6925ce4adf5f21c32aa379004fef", 'DisplayName' => "mtd@amazon.com" }, 'AccessControlList' => [ { @@ -205,16 +206,16 @@ BODY } ] }) - Fog::Storage[:aws].get_bucket_acl('fogbuckettests').body + Fog::Storage[:aws].get_bucket_acl(@aws_bucket_name).body end - tests("#delete_bucket_website('fogbuckettests')").succeeds do + tests("#delete_bucket_website('#{@aws_bucket_name}')").succeeds do pending if Fog.mocking? - Fog::Storage[:aws].delete_bucket_website('fogbuckettests') + Fog::Storage[:aws].delete_bucket_website(@aws_bucket_name) end - tests("#delete_bucket('fogbuckettests')").succeeds do - Fog::Storage[:aws].delete_bucket('fogbuckettests') + tests("#delete_bucket('#{@aws_bucket_name}')").succeeds do + Fog::Storage[:aws].delete_bucket(@aws_bucket_name) end end diff --git a/tests/aws/requests/storage/object_tests.rb b/tests/aws/requests/storage/object_tests.rb index d83b97907..073f99ad1 100644 --- a/tests/aws/requests/storage/object_tests.rb +++ b/tests/aws/requests/storage/object_tests.rb @@ -1,6 +1,5 @@ Shindo.tests('AWS::Storage | object requests', ['aws']) do - - @directory = Fog::Storage[:aws].directories.create(:key => 'fogobjecttests') + @directory = Fog::Storage[:aws].directories.create(:key => 'fogobjecttests-' + Time.now.to_i.to_s(32)) tests('success') do From 4a2768a403d4c4311d36b365391ada4972cc3d76 Mon Sep 17 00:00:00 2001 From: Jonas Pfenniger Date: Mon, 31 Oct 2011 14:49:18 +0000 Subject: [PATCH 3/3] Fix AWS S3 bucket and object tests Allow for other users than mtd to run the real tests. The mocking API is broken and returns XML on these tests. But fixing it would require more than returning JSON, it should also transform the email address to a user ID, DisplayName pair --- tests/aws/requests/storage/bucket_tests.rb | 107 ++++++++------------- tests/aws/requests/storage/object_tests.rb | 99 +++++++------------ 2 files changed, 72 insertions(+), 134 deletions(-) diff --git a/tests/aws/requests/storage/bucket_tests.rb b/tests/aws/requests/storage/bucket_tests.rb index d9d3e10b4..c0ad578f3 100644 --- a/tests/aws/requests/storage/bucket_tests.rb +++ b/tests/aws/requests/storage/bucket_tests.rb @@ -36,6 +36,7 @@ Shindo.tests('Fog::Storage[:aws] | bucket requests', [:aws]) do tests("#put_bucket('#{@aws_bucket_name}')").succeeds do Fog::Storage[:aws].put_bucket(@aws_bucket_name) + @aws_owner = Fog::Storage[:aws].get_bucket_acl(Fog::Storage[:aws].directories.first.key).body['Owner'] end tests("#get_service").formats(@service_format) do @@ -124,53 +125,34 @@ Shindo.tests('Fog::Storage[:aws] | bucket requests', [:aws]) do Fog::Storage[:aws].put_bucket_acl(@aws_bucket_name, 'private') end - tests("#put_bucket_acl('#{@aws_bucket_name}', hash with id)").returns(<<-BODY) do - - - 8a6925ce4adf5f21c32aa379004fef - mtd@amazon.com - - - - - 8a6925ce4adf588a4532142d3f74dd8c71fa124b1ddee97f21c32aa379004fef - mtd@amazon.com - - FULL_CONTROL - - - -BODY - Fog::Storage[:aws].put_bucket_acl(@aws_bucket_name, { - 'Owner' => { 'ID' => "8a6925ce4adf5f21c32aa379004fef", 'DisplayName' => "mtd@amazon.com" }, - 'AccessControlList' => [ - { - 'Grantee' => { 'ID' => "8a6925ce4adf588a4532142d3f74dd8c71fa124b1ddee97f21c32aa379004fef", 'DisplayName' => "mtd@amazon.com" }, - 'Permission' => "FULL_CONTROL" - } - ] - }) + acl = { + 'Owner' => @aws_owner, + 'AccessControlList' => [ + { + 'Grantee' => @aws_owner, + 'Permission' => "FULL_CONTROL" + } + ] + } + tests("#put_bucket_acl('#{@aws_bucket_name}', hash with id)").returns(acl) do + pending if Fog.mocking? + + Fog::Storage[:aws].put_bucket_acl(@aws_bucket_name, acl) Fog::Storage[:aws].get_bucket_acl(@aws_bucket_name).body end - tests("#put_bucket_acl('#{@aws_bucket_name}', hash with email)").returns(<<-BODY) do - - - 8a6925ce4adf5f21c32aa379004fef - mtd@amazon.com - - - - - mtd@amazon.com - - FULL_CONTROL - - - -BODY + tests("#put_bucket_acl('#{@aws_bucket_name}', hash with email)").returns({ + 'Owner' => @aws_owner, + 'AccessControlList' => [ + { + 'Grantee' => { 'ID' => 'f62f0218873cfa5d56ae9429ae75a592fec4fd22a5f24a20b1038a7db9a8f150', 'DisplayName' => 'mtd' }, + 'Permission' => "FULL_CONTROL" + } + ] + }) do + pending if Fog.mocking? Fog::Storage[:aws].put_bucket_acl(@aws_bucket_name, { - 'Owner' => { 'ID' => "8a6925ce4adf5f21c32aa379004fef", 'DisplayName' => "mtd@amazon.com" }, + 'Owner' => @aws_owner, 'AccessControlList' => [ { 'Grantee' => { 'EmailAddress' => 'mtd@amazon.com' }, @@ -181,31 +163,18 @@ BODY Fog::Storage[:aws].get_bucket_acl(@aws_bucket_name).body end - tests("#put_bucket_acl('#{@aws_bucket_name}', hash with uri)").returns(<<-BODY) do - - - 8a6925ce4adf5f21c32aa379004fef - mtd@amazon.com - - - - - http://www.w3.org/2001/XMLSchema-instance - - FULL_CONTROL - - - -BODY - Fog::Storage[:aws].put_bucket_acl(@aws_bucket_name, { - 'Owner' => { 'ID' => "8a6925ce4adf5f21c32aa379004fef", 'DisplayName' => "mtd@amazon.com" }, - 'AccessControlList' => [ - { - 'Grantee' => { 'URI' => 'http://www.w3.org/2001/XMLSchema-instance' }, - 'Permission' => "FULL_CONTROL" - } - ] - }) + acl = { + 'Owner' => @aws_owner, + 'AccessControlList' => [ + { + 'Grantee' => { 'URI' => 'http://acs.amazonaws.com/groups/global/AllUsers' }, + 'Permission' => "FULL_CONTROL" + } + ] + } + tests("#put_bucket_acl('#{@aws_bucket_name}', hash with uri)").returns(acl) do + pending if Fog.mocking? + Fog::Storage[:aws].put_bucket_acl(@aws_bucket_name, acl) Fog::Storage[:aws].get_bucket_acl(@aws_bucket_name).body end @@ -258,4 +227,6 @@ BODY end + # don't keep the bucket around + Fog::Storage[:aws].delete_bucket(@aws_bucket_name) rescue nil end diff --git a/tests/aws/requests/storage/object_tests.rb b/tests/aws/requests/storage/object_tests.rb index 073f99ad1..50ebf2405 100644 --- a/tests/aws/requests/storage/object_tests.rb +++ b/tests/aws/requests/storage/object_tests.rb @@ -1,5 +1,6 @@ Shindo.tests('AWS::Storage | object requests', ['aws']) do @directory = Fog::Storage[:aws].directories.create(:key => 'fogobjecttests-' + Time.now.to_i.to_s(32)) + @aws_owner = Fog::Storage[:aws].get_bucket_acl(@directory.key).body['Owner'] tests('success') do @@ -33,52 +34,31 @@ Shindo.tests('AWS::Storage | object requests', ['aws']) do Fog::Storage[:aws].put_object_acl(@directory.identity, 'fog_object', 'private') end - tests("#put_object_acl('#{@directory.identity}', 'fog_object', hash with id)").returns(< - - 8a6925ce4adf5f21c32aa379004fef - mtd@amazon.com - - - - - 8a6925ce4adf588a4532142d3f74dd8c71fa124b1ddee97f21c32aa379004fef - mtd@amazon.com - - FULL_CONTROL - - - -BODY - Fog::Storage[:aws].put_object_acl(@directory.identity, 'fog_object', { - 'Owner' => { 'ID' => "8a6925ce4adf5f21c32aa379004fef", 'DisplayName' => "mtd@amazon.com" }, - 'AccessControlList' => [ - { - 'Grantee' => { 'ID' => "8a6925ce4adf588a4532142d3f74dd8c71fa124b1ddee97f21c32aa379004fef", 'DisplayName' => "mtd@amazon.com" }, - 'Permission' => "FULL_CONTROL" - } - ]}) + acl = { + 'Owner' => @aws_owner, + 'AccessControlList' => [ + { + 'Grantee' => @aws_owner, + 'Permission' => "FULL_CONTROL" + } + ]} + tests("#put_object_acl('#{@directory.identity}', 'fog_object', hash with id)").returns(acl) do + pending if Fog.mocking? + Fog::Storage[:aws].put_object_acl(@directory.identity, 'fog_object', acl) Fog::Storage[:aws].get_object_acl(@directory.identity, 'fog_object').body end - tests("#put_object_acl('#{@directory.identity}', 'fog_object', hash with email)").returns(< - - 8a6925ce4adf5f21c32aa379004fef - mtd@amazon.com - - - - - mtd@amazon.com - - FULL_CONTROL - - - -BODY + tests("#put_object_acl('#{@directory.identity}', 'fog_object', hash with email)").returns({ + 'Owner' => @aws_owner, + 'AccessControlList' => [ + { + 'Grantee' => { 'ID' => 'f62f0218873cfa5d56ae9429ae75a592fec4fd22a5f24a20b1038a7db9a8f150', 'DisplayName' => 'mtd' }, + 'Permission' => "FULL_CONTROL" + } + ]}) do + pending if Fog.mocking? Fog::Storage[:aws].put_object_acl(@directory.identity, 'fog_object', { - 'Owner' => { 'ID' => "8a6925ce4adf5f21c32aa379004fef", 'DisplayName' => "mtd@amazon.com" }, + 'Owner' => @aws_owner, 'AccessControlList' => [ { 'Grantee' => { 'EmailAddress' => 'mtd@amazon.com' }, @@ -88,30 +68,17 @@ BODY Fog::Storage[:aws].get_object_acl(@directory.identity, 'fog_object').body end - tests("#put_object_acl('#{@directory.identity}', 'fog_object', hash with uri)").returns(< - - 8a6925ce4adf5f21c32aa379004fef - mtd@amazon.com - - - - - http://acs.amazonaws.com/groups/global/AllUsers - - FULL_CONTROL - - - -BODY - Fog::Storage[:aws].put_object_acl(@directory.identity, 'fog_object', { - 'Owner' => { 'ID' => "8a6925ce4adf5f21c32aa379004fef", 'DisplayName' => "mtd@amazon.com" }, - 'AccessControlList' => [ - { - 'Grantee' => { 'URI' => 'http://acs.amazonaws.com/groups/global/AllUsers' }, - 'Permission' => "FULL_CONTROL" - } - ]}) + acl = { + 'Owner' => @aws_owner, + 'AccessControlList' => [ + { + 'Grantee' => { 'URI' => 'http://acs.amazonaws.com/groups/global/AllUsers' }, + 'Permission' => "FULL_CONTROL" + } + ]} + tests("#put_object_acl('#{@directory.identity}', 'fog_object', hash with uri)").returns(acl) do + pending if Fog.mocking? + Fog::Storage[:aws].put_object_acl(@directory.identity, 'fog_object', acl) Fog::Storage[:aws].get_object_acl(@directory.identity, 'fog_object').body end