1
0
Fork 0
mirror of https://github.com/fog/fog.git synced 2022-11-09 13:51:43 -05:00

get all mocked s3 tests passing

This commit is contained in:
Wesley Beary 2009-08-08 22:40:42 -07:00
parent 175e5802f7
commit 78e2928cee
5 changed files with 78 additions and 32 deletions

View file

@ -55,7 +55,6 @@ unless Fog.mocking?
else
# TODO: IsTruncated, Marker, MaxKeys, Name, Prefix
module Fog
module AWS
class S3
@ -68,12 +67,17 @@ else
else
response.status = 200
response.body = {
'IsTruncated' => false,
'Contents' => bucket['Contents'].map do |object|
data = object.reject {|key, value| !['ETag', 'Key', 'LastModified', 'Owner', 'StorageClass'].include?(key)}
data['LastModified'] = Time.parse(data['LastModified'])
data = object.reject {|key, value| !['ETag', 'Key', 'LastModified', 'Owner', 'Size', 'StorageClass'].include?(key)}
data['LastModified'] = Time.parse(data['LastModified'])
data['Size'] = data['Size'].to_i
data
end
end,
'IsTruncated' => false,
'Marker' => options['Marker'] || '',
'MaxKeys' => options['MaxKeys'] || 1000,
'Name' => bucket['Name'],
'Prefix' => options['Prefix'] || ''
}
end
response

View file

@ -1,27 +1,54 @@
module Fog
module AWS
class S3
unless Fog.mocking?
module Fog
module AWS
class S3
# Get location constraint for an S3 bucket
#
# ==== Parameters
# * bucket_name<~String> - name of bucket to get location constraint for
#
# ==== Returns
# * response<~Fog::AWS::Response>:
# * body<~Hash>:
# * 'LocationConstraint'<~String> - Location constraint of the bucket
def get_bucket_location(bucket_name)
request({
:expects => 200,
:headers => {},
:host => "#{bucket_name}.#{@host}",
:method => 'GET',
:parser => Fog::Parsers::AWS::S3::GetBucketLocation.new,
:query => 'location'
})
end
# Get location constraint for an S3 bucket
#
# ==== Parameters
# * bucket_name<~String> - name of bucket to get location constraint for
#
# ==== Returns
# * response<~Fog::AWS::Response>:
# * body<~Hash>:
# * 'LocationConstraint'<~String> - Location constraint of the bucket
def get_bucket_location(bucket_name)
request({
:expects => 200,
:headers => {},
:host => "#{bucket_name}.#{@host}",
:method => 'GET',
:parser => Fog::Parsers::AWS::S3::GetBucketLocation.new,
:query => 'location'
})
end
end
end
end
else
module Fog
module AWS
class S3
def get_bucket_location(bucket_name)
response = Fog::Response.new
bucket_status = get_bucket(bucket_name).status
if bucket_status == 200
response.status = 200
bucket = @data['Buckets'].select {|bucket| bucket['Name'] == bucket_name}.first
response.body = {'LocationConstraint' => bucket['LocationConstraint'] }
else
response.status = bucket_status
end
response
end
end
end
end
end

View file

@ -47,12 +47,18 @@ else
def put_bucket(bucket_name, options = {})
response = Fog::Response.new
response.status = 200
@data['Buckets'] << {
bucket = {
'Name' => bucket_name,
'Contents' => [],
'CreationDate' => Time.now,
'Payer' => 'BucketOwner'
}
if options['LocationConstraint']
bucket['LocationConstraint'] = options['LocationConstraint']
else
bucket['LocationConstraint'] = ''
end
@data['Buckets'] << bucket
response
end

View file

@ -28,6 +28,10 @@ module Fog
module AWS
class S3
if Fog.mocking?
attr_accessor :data
end
# Initialize connection to S3
#
# ==== Notes

View file

@ -3,15 +3,20 @@ require File.dirname(__FILE__) + '/../../spec_helper'
describe 'S3.get_bucket_location' do
before(:all) do
s3.put_bucket('foggetlocation', 'LocationConstraint' => 'EU')
@s3 = s3
@eu_s3 = eu_s3
@s3.put_bucket('foggetlocation', 'LocationConstraint' => 'EU')
end
after(:all) do
eu_s3.delete_bucket('foggetlocation')
if Fog.mocking?
@eu_s3.data = @s3.data
end
@eu_s3.delete_bucket('foggetlocation')
end
it 'should return proper attributes' do
actual = s3.get_bucket_location('foggetlocation')
actual = @s3.get_bucket_location('foggetlocation')
actual.status.should == 200
actual.body['LocationConstraint'].should == 'EU'
end