isaacfeliu-aws-s3 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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