isaacfeliu-aws-s3 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,70 @@
1
+ require File.dirname(__FILE__) + '/test_helper'
2
+ class BaseResponseTest < Test::Unit::TestCase
3
+ def setup
4
+ @headers = {'content-type' => 'text/plain', 'date' => Time.now}
5
+ @response = FakeResponse.new()
6
+ @base_response = Base::Response.new(@response)
7
+ end
8
+
9
+ def test_status_predicates
10
+ response = Proc.new {|code| Base::Response.new(FakeResponse.new(:code => code))}
11
+ assert response[200].success?
12
+ assert response[300].redirect?
13
+ assert response[400].client_error?
14
+ assert response[500].server_error?
15
+ end
16
+
17
+ def test_headers_passed_along_from_original_response
18
+ assert_equal @response.headers, @base_response.headers
19
+ assert_equal @response['date'], @base_response['date']
20
+ original_headers, new_headers = {}, {}
21
+ @response.headers.each {|k,v| original_headers[k] = v}
22
+ @base_response.each {|k,v| new_headers[k] = v}
23
+ assert_equal original_headers, new_headers
24
+ end
25
+ end
26
+
27
+ class ErrorResponseTest < Test::Unit::TestCase
28
+ def test_error_responses_are_always_in_error
29
+ assert Error::Response.new(FakeResponse.new).error?
30
+ assert Error::Response.new(FakeResponse.new(:code => 200)).error?
31
+ assert Error::Response.new(FakeResponse.new(:headers => {'content-type' => 'text/plain'})).error?
32
+ end
33
+ end
34
+
35
+ class S3ObjectResponseTest < Test::Unit::TestCase
36
+ def test_etag_extracted
37
+ S3Object.in_test_mode do
38
+ S3Object.request_returns :headers => {"etag"=>"\"acbd18db4cc2f85cedef654fccc4a4d8\""}
39
+ object_response = S3Object.create('name_does_not_matter', 'data does not matter', 'bucket does not matter')
40
+ assert_equal "acbd18db4cc2f85cedef654fccc4a4d8", object_response.etag
41
+ end
42
+ end
43
+ end
44
+
45
+ class ResponseClassFinderTest < Test::Unit::TestCase
46
+ class CampfireBucket < Bucket
47
+ end
48
+
49
+ class BabyBase < Base
50
+ end
51
+
52
+ def test_on_base
53
+ assert_equal Base::Response, FindResponseClass.for(Base)
54
+ assert_equal Base::Response, FindResponseClass.for(AWS::S3::Base)
55
+
56
+ end
57
+
58
+ def test_on_subclass_with_corresponding_response_class
59
+ assert_equal Bucket::Response, FindResponseClass.for(Bucket)
60
+ assert_equal Bucket::Response, FindResponseClass.for(AWS::S3::Bucket)
61
+ end
62
+
63
+ def test_on_subclass_with_intermediary_parent_that_has_corresponding_response_class
64
+ assert_equal Bucket::Response, FindResponseClass.for(CampfireBucket)
65
+ end
66
+
67
+ def test_on_subclass_with_no_corresponding_response_class_and_no_intermediary_parent
68
+ assert_equal Base::Response, FindResponseClass.for(BabyBase)
69
+ end
70
+ end
@@ -0,0 +1,26 @@
1
+ require File.dirname(__FILE__) + '/test_helper'
2
+
3
+ class ServiceTest < Test::Unit::TestCase
4
+ def test_bucket_list_with_empty_bucket_list
5
+ Service.request_always_returns :body => Fixtures::Buckets.empty_bucket_list, :code => 200 do
6
+ list = Service.buckets(:reload)
7
+ assert_equal [], list
8
+ end
9
+ end
10
+
11
+ def test_bucket_list_with_bucket_list_containing_one_bucket
12
+ Service.request_always_returns :body => Fixtures::Buckets.bucket_list_with_one_bucket, :code => 200 do
13
+ list = Service.buckets(:reload)
14
+ assert_equal 1, list.size
15
+ assert_equal 'marcel_molina', list.first.name
16
+ end
17
+ end
18
+
19
+ def test_bucket_list_with_bucket_list_containing_more_than_one_bucket
20
+ Service.request_always_returns :body => Fixtures::Buckets.bucket_list_with_more_than_one_bucket, :code => 200 do
21
+ list = Service.buckets(:reload)
22
+ assert_equal 2, list.size
23
+ assert_equal %w(marcel_molina marcel_molina_jr), list.map {|bucket| bucket.name}.sort
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,86 @@
1
+ require 'test/unit'
2
+ $:.unshift File.dirname(__FILE__) + '/../lib'
3
+ require 'aws/s3'
4
+ require File.dirname(__FILE__) + '/mocks/base'
5
+ require File.dirname(__FILE__) + '/fixtures'
6
+ require_library_or_gem 'breakpoint'
7
+
8
+ # Data copied from http://docs.amazonwebservices.com/AmazonS3/2006-03-01/RESTAuthentication.html
9
+ module AmazonDocExampleData
10
+ module Example1
11
+ module_function
12
+
13
+ def request
14
+ request = Net::HTTP::Put.new('/quotes/nelson')
15
+ request['Content-Md5'] = 'c8fdb181845a4ca6b8fec737b3581d76'
16
+ request['Content-Type'] = 'text/html'
17
+ request['Date'] = 'Thu, 17 Nov 2005 18:49:58 GMT'
18
+ request['X-Amz-Meta-Author'] = 'foo@bar.com'
19
+ request['X-Amz-Magic'] = 'abracadabra'
20
+ request
21
+ end
22
+
23
+ def canonical_string
24
+ "PUT\nc8fdb181845a4ca6b8fec737b3581d76\ntext/html\nThu, 17 Nov 2005 18:49:58 GMT\nx-amz-magic:abracadabra\nx-amz-meta-author:foo@bar.com\n/quotes/nelson"
25
+ end
26
+
27
+ def access_key_id
28
+ '44CF9590006BF252F707'
29
+ end
30
+
31
+ def secret_access_key
32
+ 'OtxrzxIsfpFjA7SwPzILwy8Bw21TLhquhboDYROV'
33
+ end
34
+
35
+ def signature
36
+ 'jZNOcbfWmD/A/f3hSvVzXZjM2HU='
37
+ end
38
+
39
+ def authorization_header
40
+ 'AWS 44CF9590006BF252F707:jZNOcbfWmD/A/f3hSvVzXZjM2HU='
41
+ end
42
+ end
43
+
44
+ module Example3
45
+ module_function
46
+
47
+ def request
48
+ request = Net::HTTP::Get.new('/quotes/nelson')
49
+ request['Date'] = date
50
+ request
51
+ end
52
+
53
+ def date
54
+ 'Thu Mar 9 01:24:20 CST 2006'
55
+ end
56
+
57
+ def access_key_id
58
+ Example1.access_key_id
59
+ end
60
+
61
+ def secret_access_key
62
+ Example1.secret_access_key
63
+ end
64
+
65
+ def expires
66
+ 1141889120
67
+ end
68
+
69
+ def query_string
70
+ 'AWSAccessKeyId=44CF9590006BF252F707&Expires=1141889120&Signature=vjbyPxybdZaNmGa%2ByT272YEAiv4%3D'
71
+ end
72
+
73
+ def canonical_string
74
+ "GET\n\n\n1141889120\n/quotes/nelson"
75
+ end
76
+
77
+ end
78
+ end
79
+
80
+ class Test::Unit::TestCase
81
+ include AWS::S3
82
+
83
+ def sample_proxy_settings
84
+ {:host => 'http://google.com', :port => 8080, :user => 'marcel', :password => 'secret'}
85
+ end
86
+ end
metadata ADDED
@@ -0,0 +1,121 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: isaacfeliu-aws-s3
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.4.0
5
+ platform: ruby
6
+ authors:
7
+ - Marcel Molina Jr.
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2008-05-14 00:00:00 -07:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: xml-simple
17
+ version_requirement:
18
+ version_requirements: !ruby/object:Gem::Requirement
19
+ requirements:
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: "0"
23
+ version:
24
+ - !ruby/object:Gem::Dependency
25
+ name: builder
26
+ version_requirement:
27
+ version_requirements: !ruby/object:Gem::Requirement
28
+ requirements:
29
+ - - ">="
30
+ - !ruby/object:Gem::Version
31
+ version: "0"
32
+ version:
33
+ - !ruby/object:Gem::Dependency
34
+ name: mime-types
35
+ version_requirement:
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: "0"
41
+ version:
42
+ description: Client library for Amazon's Simple Storage Service's REST API
43
+ email: marcel@vernix.org
44
+ executables:
45
+ - s3sh
46
+ extensions: []
47
+
48
+ extra_rdoc_files:
49
+ - README
50
+ - COPYING
51
+ - INSTALL
52
+ files:
53
+ - Rakefile
54
+ - lib/aws/s3.rb
55
+ - lib/aws/s3/acl.rb
56
+ - lib/aws/s3/authentication.rb
57
+ - lib/aws/s3/base.rb
58
+ - lib/aws/s3/bittorrent.rb
59
+ - lib/aws/s3/bucket.rb
60
+ - lib/aws/s3/connection.rb
61
+ - lib/aws/s3/error.rb
62
+ - lib/aws/s3/exceptions.rb
63
+ - lib/aws/s3/extensions.rb
64
+ - lib/aws/s3/logging.rb
65
+ - lib/aws/s3/object.rb
66
+ - lib/aws/s3/owner.rb
67
+ - lib/aws/s3/parsing.rb
68
+ - lib/aws/s3/response.rb
69
+ - lib/aws/s3/service.rb
70
+ - lib/aws/s3/version.rb
71
+ - bin/setup.rb
72
+ - bin/s3sh
73
+ - README
74
+ - COPYING
75
+ - INSTALL
76
+ has_rdoc: true
77
+ homepage: http://amazon.rubyforge.org
78
+ post_install_message:
79
+ rdoc_options:
80
+ - --title
81
+ - AWS::S3 -- Support for Amazon S3's REST api
82
+ - --main
83
+ - README
84
+ - --line-numbers
85
+ - --inline-source
86
+ require_paths:
87
+ - lib
88
+ required_ruby_version: !ruby/object:Gem::Requirement
89
+ requirements:
90
+ - - ">="
91
+ - !ruby/object:Gem::Version
92
+ version: "0"
93
+ version:
94
+ required_rubygems_version: !ruby/object:Gem::Requirement
95
+ requirements:
96
+ - - ">="
97
+ - !ruby/object:Gem::Version
98
+ version: "0"
99
+ version:
100
+ requirements: []
101
+
102
+ rubyforge_project: amazon
103
+ rubygems_version: 1.0.1
104
+ signing_key:
105
+ specification_version: 2
106
+ summary: Client library for Amazon's Simple Storage Service's REST API
107
+ test_files:
108
+ - test/acl_test.rb
109
+ - test/authentication_test.rb
110
+ - test/base_test.rb
111
+ - test/bucket_test.rb
112
+ - test/connection_test.rb
113
+ - test/error_test.rb
114
+ - test/extensions_test.rb
115
+ - test/fixtures.rb
116
+ - test/logging_test.rb
117
+ - test/object_test.rb
118
+ - test/parsing_test.rb
119
+ - test/response_test.rb
120
+ - test/service_test.rb
121
+ - test/test_helper.rb