aws-s3 0.4.0 → 0.5.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.
@@ -315,7 +315,7 @@ class RemoteS3ObjectTest < Test::Unit::TestCase
315
315
  S3Object.delete('name with spaces', TEST_BUCKET)
316
316
  end
317
317
 
318
- def test_copying_an_object_should_copy_over_its_acl_also
318
+ def test_copying_an_object_should_copy_over_its_acl_also_if_requested
319
319
  key = 'copied-objects-inherit-acl'
320
320
  copy_key = key + '2'
321
321
  S3Object.store(key, 'value does not matter', TEST_BUCKET)
@@ -328,7 +328,7 @@ class RemoteS3ObjectTest < Test::Unit::TestCase
328
328
  acl = S3Object.acl(key, TEST_BUCKET)
329
329
  assert_equal 3, acl.grants.size
330
330
 
331
- S3Object.copy(key, copy_key, TEST_BUCKET)
331
+ S3Object.copy(key, copy_key, TEST_BUCKET, :copy_acl => true)
332
332
  copied_object = S3Object.find(copy_key, TEST_BUCKET)
333
333
  assert_equal acl.grants, copied_object.acl.grants
334
334
  ensure
@@ -34,11 +34,9 @@ end
34
34
 
35
35
  class S3ObjectResponseTest < Test::Unit::TestCase
36
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
37
+ mock_connection_for(S3Object, :returns => {:headers => {"etag" => %("acbd18db4cc2f85cedef654fccc4a4d8")}}).once
38
+ object_response = S3Object.create('name_does_not_matter', 'data does not matter', 'bucket does not matter')
39
+ assert_equal "acbd18db4cc2f85cedef654fccc4a4d8", object_response.etag
42
40
  end
43
41
  end
44
42
 
@@ -2,25 +2,22 @@ require File.dirname(__FILE__) + '/test_helper'
2
2
 
3
3
  class ServiceTest < Test::Unit::TestCase
4
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
5
+ mock_connection_for(Service, :returns => {:body => Fixtures::Buckets.empty_bucket_list, :code => 200})
6
+ list = Service.buckets(:reload)
7
+ assert_equal [], list
9
8
  end
10
9
 
11
10
  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
11
+ mock_connection_for(Service, :returns => {:body => Fixtures::Buckets.bucket_list_with_one_bucket, :code => 200})
12
+ list = Service.buckets(:reload)
13
+ assert_equal 1, list.size
14
+ assert_equal 'marcel_molina', list.first.name
17
15
  end
18
16
 
19
17
  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
18
+ mock_connection_for(Service, :returns => {:body => Fixtures::Buckets.bucket_list_with_more_than_one_bucket, :code => 200})
19
+ list = Service.buckets(:reload)
20
+ assert_equal 2, list.size
21
+ assert_equal %w(marcel_molina marcel_molina_jr), list.map {|bucket| bucket.name}.sort
25
22
  end
26
23
  end
@@ -1,9 +1,12 @@
1
1
  require 'test/unit'
2
2
  $:.unshift File.dirname(__FILE__) + '/../lib'
3
3
  require 'aws/s3'
4
- require File.dirname(__FILE__) + '/mocks/base'
4
+ require File.dirname(__FILE__) + '/mocks/fake_response'
5
5
  require File.dirname(__FILE__) + '/fixtures'
6
- require_library_or_gem 'breakpoint'
6
+ require_library_or_gem 'ruby-debug'
7
+ require_library_or_gem 'flexmock'
8
+ require_library_or_gem 'flexmock/test_unit'
9
+
7
10
 
8
11
  # Data copied from http://docs.amazonwebservices.com/AmazonS3/2006-03-01/RESTAuthentication.html
9
12
  module AmazonDocExampleData
@@ -83,4 +86,22 @@ class Test::Unit::TestCase
83
86
  def sample_proxy_settings
84
87
  {:host => 'http://google.com', :port => 8080, :user => 'marcel', :password => 'secret'}
85
88
  end
89
+
90
+ def mock_connection_for(klass, options = {})
91
+ data = options[:returns]
92
+ return_values = case data
93
+ when Hash
94
+ FakeResponse.new(data)
95
+ when Array
96
+ data.map {|hash| FakeResponse.new(hash)}
97
+ else
98
+ abort "Response data for mock connection must be a Hash or an Array. Was #{data.inspect}."
99
+ end
100
+
101
+ connection = flexmock('Mock connection') do |mock|
102
+ mock.should_receive(:request).and_return(*return_values).at_least.once
103
+ end
104
+
105
+ flexmock(klass).should_receive(:connection).and_return(connection)
106
+ end
86
107
  end
metadata CHANGED
@@ -1,36 +1,56 @@
1
1
  --- !ruby/object:Gem::Specification
2
- rubygems_version: 0.9.4
3
- specification_version: 1
4
2
  name: aws-s3
5
3
  version: !ruby/object:Gem::Version
6
- version: 0.4.0
7
- date: 2007-07-08 00:00:00 -05:00
8
- summary: Client library for Amazon's Simple Storage Service's REST API
9
- require_paths:
10
- - lib
11
- email: marcel@vernix.org
12
- homepage: http://amazon.rubyforge.org
13
- rubyforge_project: amazon
14
- description: Client library for Amazon's Simple Storage Service's REST API
15
- autorequire:
16
- default_executable:
17
- bindir: bin
18
- has_rdoc: true
19
- required_ruby_version: !ruby/object:Gem::Version::Requirement
20
- requirements:
21
- - - ">"
22
- - !ruby/object:Gem::Version
23
- version: 0.0.0
24
- version:
4
+ version: 0.5.0
25
5
  platform: ruby
26
- signing_key:
27
- cert_chain:
28
- post_install_message:
29
6
  authors:
30
7
  - Marcel Molina Jr.
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2008-06-07 00:00:00 -05: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
31
52
  files:
32
53
  - Rakefile
33
- - lib/aws/s3.rb
34
54
  - lib/aws/s3/acl.rb
35
55
  - lib/aws/s3/authentication.rb
36
56
  - lib/aws/s3/base.rb
@@ -47,6 +67,7 @@ files:
47
67
  - lib/aws/s3/response.rb
48
68
  - lib/aws/s3/service.rb
49
69
  - lib/aws/s3/version.rb
70
+ - lib/aws/s3.rb
50
71
  - bin/s3sh
51
72
  - bin/setup.rb
52
73
  - support/faster-xml-simple/lib/faster_xml_simple.rb
@@ -57,6 +78,37 @@ files:
57
78
  - README
58
79
  - COPYING
59
80
  - INSTALL
81
+ has_rdoc: true
82
+ homepage: http://amazon.rubyforge.org
83
+ post_install_message:
84
+ rdoc_options:
85
+ - --title
86
+ - AWS::S3 -- Support for Amazon S3's REST api
87
+ - --main
88
+ - README
89
+ - --line-numbers
90
+ - --inline-source
91
+ require_paths:
92
+ - lib
93
+ required_ruby_version: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - ">="
96
+ - !ruby/object:Gem::Version
97
+ version: "0"
98
+ version:
99
+ required_rubygems_version: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: "0"
104
+ version:
105
+ requirements: []
106
+
107
+ rubyforge_project: amazon
108
+ rubygems_version: 1.1.1
109
+ signing_key:
110
+ specification_version: 2
111
+ summary: Client library for Amazon's Simple Storage Service's REST API
60
112
  test_files:
61
113
  - test/acl_test.rb
62
114
  - test/authentication_test.rb
@@ -66,15 +118,6 @@ test_files:
66
118
  - test/error_test.rb
67
119
  - test/extensions_test.rb
68
120
  - test/fixtures
69
- - test/fixtures.rb
70
- - test/logging_test.rb
71
- - test/mocks
72
- - test/object_test.rb
73
- - test/parsing_test.rb
74
- - test/remote
75
- - test/response_test.rb
76
- - test/service_test.rb
77
- - test/test_helper.rb
78
121
  - test/fixtures/buckets.yml
79
122
  - test/fixtures/errors.yml
80
123
  - test/fixtures/headers.yml
@@ -82,7 +125,13 @@ test_files:
82
125
  - test/fixtures/loglines.yml
83
126
  - test/fixtures/logs.yml
84
127
  - test/fixtures/policies.yml
85
- - test/mocks/base.rb
128
+ - test/fixtures.rb
129
+ - test/logging_test.rb
130
+ - test/mocks
131
+ - test/mocks/fake_response.rb
132
+ - test/object_test.rb
133
+ - test/parsing_test.rb
134
+ - test/remote
86
135
  - test/remote/acl_test.rb
87
136
  - test/remote/bittorrent_test.rb
88
137
  - test/remote/bucket_test.rb
@@ -90,48 +139,6 @@ test_files:
90
139
  - test/remote/object_test.rb
91
140
  - test/remote/test_file.data
92
141
  - test/remote/test_helper.rb
93
- rdoc_options:
94
- - --title
95
- - AWS::S3 -- Support for Amazon S3's REST api
96
- - --main
97
- - README
98
- - --line-numbers
99
- - --inline-source
100
- extra_rdoc_files:
101
- - README
102
- - COPYING
103
- - INSTALL
104
- executables:
105
- - s3sh
106
- extensions: []
107
-
108
- requirements: []
109
-
110
- dependencies:
111
- - !ruby/object:Gem::Dependency
112
- name: xml-simple
113
- version_requirement:
114
- version_requirements: !ruby/object:Gem::Version::Requirement
115
- requirements:
116
- - - ">"
117
- - !ruby/object:Gem::Version
118
- version: 0.0.0
119
- version:
120
- - !ruby/object:Gem::Dependency
121
- name: builder
122
- version_requirement:
123
- version_requirements: !ruby/object:Gem::Version::Requirement
124
- requirements:
125
- - - ">"
126
- - !ruby/object:Gem::Version
127
- version: 0.0.0
128
- version:
129
- - !ruby/object:Gem::Dependency
130
- name: mime-types
131
- version_requirement:
132
- version_requirements: !ruby/object:Gem::Version::Requirement
133
- requirements:
134
- - - ">"
135
- - !ruby/object:Gem::Version
136
- version: 0.0.0
137
- version:
142
+ - test/response_test.rb
143
+ - test/service_test.rb
144
+ - test/test_helper.rb
@@ -1,89 +0,0 @@
1
- require_library_or_gem 'flexmock'
2
-
3
- module AWS
4
- module S3
5
- class FakeResponse < String
6
- attr_reader :code, :body, :headers
7
- def initialize(options = {})
8
- @code = options.delete(:code) || 200
9
- @body = options.delete(:body) || ''
10
- @headers = {'content-type' => 'application/xml'}.merge(options.delete(:headers) || {})
11
- super(@body)
12
- end
13
-
14
- # For ErrorResponse
15
- def response
16
- self
17
- end
18
-
19
- def [](header)
20
- headers[header]
21
- end
22
-
23
- def each(&block)
24
- headers.each(&block)
25
- end
26
- alias_method :each_header, :each
27
- end
28
-
29
- class Base
30
- class << self
31
- @@responses = []
32
- @@in_test_mode = false
33
- @@catch_all_response = nil
34
-
35
- def in_test_mode=(boolean)
36
- @@in_test_mode = boolean
37
- end
38
-
39
- def responses
40
- @@responses
41
- end
42
-
43
- def catch_all_response
44
- @@catch_all_response
45
- end
46
-
47
- def reset!
48
- responses.clear
49
- end
50
-
51
- def request_returns(response_data)
52
- responses.concat [response_data].flatten.map {|data| FakeResponse.new(data)}
53
- end
54
-
55
- def request_always_returns(response_data, &block)
56
- in_test_mode do
57
- @@catch_all_response = FakeResponse.new(response_data)
58
- yield
59
- @@catch_all_response = nil
60
- end
61
- end
62
-
63
- def in_test_mode(&block)
64
- self.in_test_mode = true
65
- yield
66
- ensure
67
- self.in_test_mode = false
68
- end
69
-
70
- alias_method :old_connection, :connection
71
- def connection
72
- if @@in_test_mode
73
- @mock_connection ||=
74
- begin
75
- mock_connection = FlexMock.new
76
- mock_connection.mock_handle(:request) do
77
- raise 'No responses left' unless response = catch_all_response || responses.shift
78
- response
79
- end
80
- mock_connection
81
- end
82
- else
83
- old_connection
84
- end
85
- end
86
- end
87
- end
88
- end
89
- end