From 0cbafe1d9e33d66575b966476b95b2d352caf543 Mon Sep 17 00:00:00 2001 From: Wesley Beary Date: Mon, 29 Jun 2009 10:03:44 -0700 Subject: [PATCH] more casting/testing --- lib/fog/aws.rb | 13 ++++++++++++- lib/fog/aws/s3/parsers.rb | 12 ++++++++---- spec/aws/s3/get_bucket_location_spec.rb | 3 +-- spec/aws/s3/get_bucket_spec.rb | 18 ++++++++++++++++-- spec/aws/s3/get_request_payment_spec.rb | 3 +-- spec/aws/s3/get_service_spec.rb | 6 +++--- 6 files changed, 41 insertions(+), 14 deletions(-) diff --git a/lib/fog/aws.rb b/lib/fog/aws.rb index 8fdf6e7ff..6d48eb933 100644 --- a/lib/fog/aws.rb +++ b/lib/fog/aws.rb @@ -50,7 +50,7 @@ module Fog break end header = data.split(': ') - response.headers[header[0]] = header[1] + response.headers[capitalize(header[0])] = header[1] end unless params[:method] == 'HEAD' if response.headers['Content-Length'] @@ -69,6 +69,17 @@ module Fog response end + private + + def capitalize(header) + words = header.split('-') + header = '' + for word in words + header << word[0..0].upcase << word[1..-1] << '-' + end + header.chop! + end + end class Response diff --git a/lib/fog/aws/s3/parsers.rb b/lib/fog/aws/s3/parsers.rb index 1759f63ae..3ef4b81bf 100644 --- a/lib/fog/aws/s3/parsers.rb +++ b/lib/fog/aws/s3/parsers.rb @@ -71,21 +71,25 @@ module Fog when 'ID' @object[:owner][:id] = @value when 'IsTruncated' - @response[:is_truncated] = @value + if @value == 'true' + @response[:is_truncated] = true + else + @response[:is_truncated] = false + end when 'Key' @object[:key] = @value when 'LastModified' - @object[:last_modified] = @value + @object[:last_modified] = Time.parse(@value) when 'Marker' @response[:marker] = @value when 'MaxKeys' - @response[:max_keys] = @value + @response[:max_keys] = @value.to_i when 'Name' @response[:name] = @value when 'Prefix' @response[:prefix] = @value when 'Size' - @object[:size] = @value + @object[:size] = @value.to_i when 'StorageClass' @object[:storage_class] = @value end diff --git a/spec/aws/s3/get_bucket_location_spec.rb b/spec/aws/s3/get_bucket_location_spec.rb index d56dd0a0a..c3ac14892 100644 --- a/spec/aws/s3/get_bucket_location_spec.rb +++ b/spec/aws/s3/get_bucket_location_spec.rb @@ -11,10 +11,9 @@ describe 'S3.get_location' do end it 'should return proper attributes' do - p 'SHOULD CHECK FOR PROPER ATTRIBUTES' actual = s3.get_bucket_location('foggetlocation') actual.status.should == 200 - p actual + actual.body[:location_constraint].should == 'EU' end end \ No newline at end of file diff --git a/spec/aws/s3/get_bucket_spec.rb b/spec/aws/s3/get_bucket_spec.rb index 9cc6d21c8..a56c72582 100644 --- a/spec/aws/s3/get_bucket_spec.rb +++ b/spec/aws/s3/get_bucket_spec.rb @@ -4,17 +4,31 @@ describe 'S3.get_bucket' do before(:all) do s3.put_bucket('foggetbucket') + file = File.open(File.dirname(__FILE__) + '/../../lorem.txt', 'r') + s3.put_object('foggetbucket', 'fog_get_bucket', file) end after(:all) do + s3.delete_object('foggetbucket', 'fog_get_bucket') s3.delete_bucket('foggetbucket') end it 'should return proper attributes' do - p 'SHOULD CHECK FOR PROPER ATTRIBUTES' actual = s3.get_bucket('foggetbucket') actual.status.should == 200 - p actual + actual.body[:name].should be_a(String) + actual.body[:is_truncated].should == false + actual.body[:marker].should be_a(String) + actual.body[:max_keys].should be_an(Integer) + actual.body[:prefix].should be_a(String) + actual.body[:contents].should be_an(Array) + object = actual.body[:contents].first + object[:key].should == 'fog_get_bucket' + object[:last_modified].should be_a(Time) + object[:owner][:display_name].should be_a(String) + object[:owner][:id].should be_a(String) + object[:size].should be_an(Integer) + object[:storage_class].should be_a(String) end end diff --git a/spec/aws/s3/get_request_payment_spec.rb b/spec/aws/s3/get_request_payment_spec.rb index c082cfbaa..088f6822e 100644 --- a/spec/aws/s3/get_request_payment_spec.rb +++ b/spec/aws/s3/get_request_payment_spec.rb @@ -11,10 +11,9 @@ describe 'S3.get_request_payment' do end it 'should return proper attributes' do - p 'SHOULD CHECK FOR PROPER ATTRIBUTES' actual = s3.get_request_payment('foggetrequestpayment') actual.status.should == 200 - p actual + actual.body[:payer].should == 'BucketOwner' end end \ No newline at end of file diff --git a/spec/aws/s3/get_service_spec.rb b/spec/aws/s3/get_service_spec.rb index 9fcfaa9b6..882ad0d35 100644 --- a/spec/aws/s3/get_service_spec.rb +++ b/spec/aws/s3/get_service_spec.rb @@ -13,12 +13,12 @@ describe 'S3.get_service' do it 'should return proper_attributes' do actual = s3.get_service actual.status.should == 200 - actual.body[:owner][:id].should be_a(String) actual.body[:owner][:display_name].should be_a(String) - actual.body[:buckets].should be_a(Array) + actual.body[:owner][:id].should be_a(String) + actual.body[:buckets].should be_an(Array) bucket = actual.body[:buckets].select {|bucket| bucket[:name] == 'foggetservice'}.first - bucket[:name].should be_a(String) bucket[:creation_date].should be_a(Time) + bucket[:name].should == 'foggetservice' end it 'should include foggetservice in get_service' do