ghazel-aws-s3 0.6.4 → 0.6.4.1
Sign up to get free protection for your applications and to get access to all the features.
- data/README +542 -0
- data/support/faster-xml-simple/lib/faster_xml_simple.rb +190 -0
- data/support/faster-xml-simple/test/regression_test.rb +47 -0
- data/support/faster-xml-simple/test/test_helper.rb +17 -0
- data/support/faster-xml-simple/test/xml_simple_comparison_test.rb +46 -0
- data/support/rdoc/code_info.rb +211 -0
- data/test/acl_test.rb +254 -0
- data/test/authentication_test.rb +114 -0
- data/test/base_test.rb +136 -0
- data/test/bucket_test.rb +74 -0
- data/test/connection_test.rb +223 -0
- data/test/error_test.rb +70 -0
- data/test/extensions_test.rb +340 -0
- data/test/fixtures.rb +89 -0
- data/test/fixtures/buckets.yml +133 -0
- data/test/fixtures/errors.yml +34 -0
- data/test/fixtures/headers.yml +3 -0
- data/test/fixtures/logging.yml +15 -0
- data/test/fixtures/loglines.yml +5 -0
- data/test/fixtures/logs.yml +7 -0
- data/test/fixtures/policies.yml +16 -0
- data/test/logging_test.rb +89 -0
- data/test/mocks/fake_response.rb +26 -0
- data/test/object_test.rb +205 -0
- data/test/parsing_test.rb +66 -0
- data/test/remote/acl_test.rb +117 -0
- data/test/remote/bittorrent_test.rb +45 -0
- data/test/remote/bucket_test.rb +146 -0
- data/test/remote/logging_test.rb +82 -0
- data/test/remote/object_test.rb +388 -0
- data/test/remote/test_file.data +0 -0
- data/test/remote/test_helper.rb +33 -0
- data/test/response_test.rb +68 -0
- data/test/service_test.rb +23 -0
- data/test/test_helper.rb +110 -0
- metadata +145 -22
- data/CHANGELOG +0 -107
@@ -0,0 +1,23 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/test_helper'
|
2
|
+
|
3
|
+
class ServiceTest < Test::Unit::TestCase
|
4
|
+
def test_bucket_list_with_empty_bucket_list
|
5
|
+
mock_connection_for(Service, :returns => {:body => Fixtures::Buckets.empty_bucket_list, :code => 200})
|
6
|
+
list = Service.buckets(:reload)
|
7
|
+
assert_equal [], list
|
8
|
+
end
|
9
|
+
|
10
|
+
def test_bucket_list_with_bucket_list_containing_one_bucket
|
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
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_bucket_list_with_bucket_list_containing_more_than_one_bucket
|
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
|
22
|
+
end
|
23
|
+
end
|
data/test/test_helper.rb
ADDED
@@ -0,0 +1,110 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
$:.unshift File.dirname(__FILE__) + '/../lib'
|
3
|
+
require 'aws/s3'
|
4
|
+
require File.dirname(__FILE__) + '/mocks/fake_response'
|
5
|
+
require File.dirname(__FILE__) + '/fixtures'
|
6
|
+
begin
|
7
|
+
require_library_or_gem 'ruby-debug'
|
8
|
+
rescue LoadError
|
9
|
+
end
|
10
|
+
require_library_or_gem 'flexmock'
|
11
|
+
require_library_or_gem 'flexmock/test_unit'
|
12
|
+
|
13
|
+
|
14
|
+
# Data copied from http://docs.amazonwebservices.com/AmazonS3/2006-03-01/RESTAuthentication.html
|
15
|
+
module AmazonDocExampleData
|
16
|
+
module Example1
|
17
|
+
module_function
|
18
|
+
|
19
|
+
def request
|
20
|
+
request = Net::HTTP::Put.new('/quotes/nelson')
|
21
|
+
request['Content-Md5'] = 'c8fdb181845a4ca6b8fec737b3581d76'
|
22
|
+
request['Content-Type'] = 'text/html'
|
23
|
+
request['Date'] = 'Thu, 17 Nov 2005 18:49:58 GMT'
|
24
|
+
request['X-Amz-Meta-Author'] = 'foo@bar.com'
|
25
|
+
request['X-Amz-Magic'] = 'abracadabra'
|
26
|
+
request
|
27
|
+
end
|
28
|
+
|
29
|
+
def canonical_string
|
30
|
+
"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"
|
31
|
+
end
|
32
|
+
|
33
|
+
def access_key_id
|
34
|
+
'44CF9590006BF252F707'
|
35
|
+
end
|
36
|
+
|
37
|
+
def secret_access_key
|
38
|
+
'OtxrzxIsfpFjA7SwPzILwy8Bw21TLhquhboDYROV'
|
39
|
+
end
|
40
|
+
|
41
|
+
def signature
|
42
|
+
'jZNOcbfWmD/A/f3hSvVzXZjM2HU='
|
43
|
+
end
|
44
|
+
|
45
|
+
def authorization_header
|
46
|
+
'AWS 44CF9590006BF252F707:jZNOcbfWmD/A/f3hSvVzXZjM2HU='
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
module Example3
|
51
|
+
module_function
|
52
|
+
|
53
|
+
def request
|
54
|
+
request = Net::HTTP::Get.new('/quotes/nelson')
|
55
|
+
request['Date'] = date
|
56
|
+
request
|
57
|
+
end
|
58
|
+
|
59
|
+
def date
|
60
|
+
'Thu Mar 9 01:24:20 CST 2006'
|
61
|
+
end
|
62
|
+
|
63
|
+
def access_key_id
|
64
|
+
Example1.access_key_id
|
65
|
+
end
|
66
|
+
|
67
|
+
def secret_access_key
|
68
|
+
Example1.secret_access_key
|
69
|
+
end
|
70
|
+
|
71
|
+
def expires
|
72
|
+
1141889120
|
73
|
+
end
|
74
|
+
|
75
|
+
def query_string
|
76
|
+
'AWSAccessKeyId=44CF9590006BF252F707&Expires=1141889120&Signature=vjbyPxybdZaNmGa%2ByT272YEAiv4%3D'
|
77
|
+
end
|
78
|
+
|
79
|
+
def canonical_string
|
80
|
+
"GET\n\n\n1141889120\n/quotes/nelson"
|
81
|
+
end
|
82
|
+
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
class Test::Unit::TestCase
|
87
|
+
include AWS::S3
|
88
|
+
|
89
|
+
def sample_proxy_settings
|
90
|
+
{:host => 'http://google.com', :port => 8080, :user => 'marcel', :password => 'secret'}
|
91
|
+
end
|
92
|
+
|
93
|
+
def mock_connection_for(klass, options = {})
|
94
|
+
data = options[:returns]
|
95
|
+
return_values = case data
|
96
|
+
when Hash
|
97
|
+
FakeResponse.new(data)
|
98
|
+
when Array
|
99
|
+
data.map {|hash| FakeResponse.new(hash)}
|
100
|
+
else
|
101
|
+
abort "Response data for mock connection must be a Hash or an Array. Was #{data.inspect}."
|
102
|
+
end
|
103
|
+
|
104
|
+
connection = flexmock('Mock connection') do |mock|
|
105
|
+
mock.should_receive(:request).and_return(*return_values).at_least.once
|
106
|
+
end
|
107
|
+
|
108
|
+
flexmock(klass).should_receive(:connection).and_return(connection)
|
109
|
+
end
|
110
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ghazel-aws-s3
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
hash: 109
|
5
|
+
prerelease:
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 6
|
9
|
+
- 4
|
10
|
+
- 1
|
11
|
+
version: 0.6.4.1
|
5
12
|
platform: ruby
|
6
13
|
authors:
|
7
14
|
- Marcel Molina Jr.
|
@@ -9,22 +16,62 @@ autorequire:
|
|
9
16
|
bindir: bin
|
10
17
|
cert_chain: []
|
11
18
|
|
12
|
-
date:
|
13
|
-
default_executable:
|
14
|
-
dependencies:
|
15
|
-
|
16
|
-
|
19
|
+
date: 2011-03-09 00:00:00 -08:00
|
20
|
+
default_executable: s3sh
|
21
|
+
dependencies:
|
22
|
+
- !ruby/object:Gem::Dependency
|
23
|
+
name: xml-simple
|
24
|
+
prerelease: false
|
25
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
26
|
+
none: false
|
27
|
+
requirements:
|
28
|
+
- - ">="
|
29
|
+
- !ruby/object:Gem::Version
|
30
|
+
hash: 3
|
31
|
+
segments:
|
32
|
+
- 0
|
33
|
+
version: "0"
|
34
|
+
type: :runtime
|
35
|
+
version_requirements: *id001
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: builder
|
38
|
+
prerelease: false
|
39
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
40
|
+
none: false
|
41
|
+
requirements:
|
42
|
+
- - ">="
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
hash: 3
|
45
|
+
segments:
|
46
|
+
- 0
|
47
|
+
version: "0"
|
48
|
+
type: :runtime
|
49
|
+
version_requirements: *id002
|
50
|
+
- !ruby/object:Gem::Dependency
|
51
|
+
name: mime-types
|
52
|
+
prerelease: false
|
53
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
54
|
+
none: false
|
55
|
+
requirements:
|
56
|
+
- - ">="
|
57
|
+
- !ruby/object:Gem::Version
|
58
|
+
hash: 3
|
59
|
+
segments:
|
60
|
+
- 0
|
61
|
+
version: "0"
|
62
|
+
type: :runtime
|
63
|
+
version_requirements: *id003
|
64
|
+
description: Client library for Amazon's Simple Storage Service's REST API
|
17
65
|
email: marcel@vernix.org
|
18
|
-
executables:
|
19
|
-
|
66
|
+
executables:
|
67
|
+
- s3sh
|
20
68
|
extensions: []
|
21
69
|
|
22
|
-
extra_rdoc_files:
|
23
|
-
|
24
|
-
files:
|
25
|
-
- CHANGELOG
|
70
|
+
extra_rdoc_files:
|
71
|
+
- README
|
26
72
|
- COPYING
|
27
73
|
- INSTALL
|
74
|
+
files:
|
28
75
|
- Rakefile
|
29
76
|
- lib/aws/s3/acl.rb
|
30
77
|
- lib/aws/s3/authentication.rb
|
@@ -45,33 +92,109 @@ files:
|
|
45
92
|
- lib/aws/s3.rb
|
46
93
|
- bin/s3sh
|
47
94
|
- bin/setup.rb
|
95
|
+
- support/faster-xml-simple/lib/faster_xml_simple.rb
|
96
|
+
- support/faster-xml-simple/test/regression_test.rb
|
97
|
+
- support/faster-xml-simple/test/test_helper.rb
|
98
|
+
- support/faster-xml-simple/test/xml_simple_comparison_test.rb
|
99
|
+
- support/rdoc/code_info.rb
|
100
|
+
- test/acl_test.rb
|
101
|
+
- test/authentication_test.rb
|
102
|
+
- test/base_test.rb
|
103
|
+
- test/bucket_test.rb
|
104
|
+
- test/connection_test.rb
|
105
|
+
- test/error_test.rb
|
106
|
+
- test/extensions_test.rb
|
107
|
+
- test/fixtures/buckets.yml
|
108
|
+
- test/fixtures/errors.yml
|
109
|
+
- test/fixtures/headers.yml
|
110
|
+
- test/fixtures/logging.yml
|
111
|
+
- test/fixtures/loglines.yml
|
112
|
+
- test/fixtures/logs.yml
|
113
|
+
- test/fixtures/policies.yml
|
114
|
+
- test/fixtures.rb
|
115
|
+
- test/logging_test.rb
|
116
|
+
- test/mocks/fake_response.rb
|
117
|
+
- test/object_test.rb
|
118
|
+
- test/parsing_test.rb
|
119
|
+
- test/remote/acl_test.rb
|
120
|
+
- test/remote/bittorrent_test.rb
|
121
|
+
- test/remote/bucket_test.rb
|
122
|
+
- test/remote/logging_test.rb
|
123
|
+
- test/remote/object_test.rb
|
124
|
+
- test/remote/test_file.data
|
125
|
+
- test/remote/test_helper.rb
|
126
|
+
- test/response_test.rb
|
127
|
+
- test/service_test.rb
|
128
|
+
- test/test_helper.rb
|
129
|
+
- README
|
130
|
+
- COPYING
|
131
|
+
- INSTALL
|
48
132
|
has_rdoc: true
|
49
|
-
homepage:
|
133
|
+
homepage: http://amazon.rubyforge.org
|
50
134
|
licenses: []
|
51
135
|
|
52
136
|
post_install_message:
|
53
|
-
rdoc_options:
|
54
|
-
|
137
|
+
rdoc_options:
|
138
|
+
- --title
|
139
|
+
- AWS::S3 -- Support for Amazon S3's REST api
|
140
|
+
- --main
|
141
|
+
- README
|
142
|
+
- --line-numbers
|
143
|
+
- --inline-source
|
55
144
|
require_paths:
|
56
145
|
- lib
|
57
146
|
required_ruby_version: !ruby/object:Gem::Requirement
|
147
|
+
none: false
|
58
148
|
requirements:
|
59
149
|
- - ">="
|
60
150
|
- !ruby/object:Gem::Version
|
151
|
+
hash: 3
|
152
|
+
segments:
|
153
|
+
- 0
|
61
154
|
version: "0"
|
62
|
-
version:
|
63
155
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
156
|
+
none: false
|
64
157
|
requirements:
|
65
158
|
- - ">="
|
66
159
|
- !ruby/object:Gem::Version
|
160
|
+
hash: 3
|
161
|
+
segments:
|
162
|
+
- 0
|
67
163
|
version: "0"
|
68
|
-
version:
|
69
164
|
requirements: []
|
70
165
|
|
71
|
-
rubyforge_project:
|
72
|
-
rubygems_version: 1.
|
166
|
+
rubyforge_project: amazon
|
167
|
+
rubygems_version: 1.4.2
|
73
168
|
signing_key:
|
74
169
|
specification_version: 3
|
75
|
-
summary:
|
76
|
-
test_files:
|
77
|
-
|
170
|
+
summary: Client library for Amazon's Simple Storage Service's REST API
|
171
|
+
test_files:
|
172
|
+
- test/acl_test.rb
|
173
|
+
- test/authentication_test.rb
|
174
|
+
- test/base_test.rb
|
175
|
+
- test/bucket_test.rb
|
176
|
+
- test/connection_test.rb
|
177
|
+
- test/error_test.rb
|
178
|
+
- test/extensions_test.rb
|
179
|
+
- test/fixtures/buckets.yml
|
180
|
+
- test/fixtures/errors.yml
|
181
|
+
- test/fixtures/headers.yml
|
182
|
+
- test/fixtures/logging.yml
|
183
|
+
- test/fixtures/loglines.yml
|
184
|
+
- test/fixtures/logs.yml
|
185
|
+
- test/fixtures/policies.yml
|
186
|
+
- test/fixtures.rb
|
187
|
+
- test/logging_test.rb
|
188
|
+
- test/mocks/fake_response.rb
|
189
|
+
- test/object_test.rb
|
190
|
+
- test/parsing_test.rb
|
191
|
+
- test/remote/acl_test.rb
|
192
|
+
- test/remote/bittorrent_test.rb
|
193
|
+
- test/remote/bucket_test.rb
|
194
|
+
- test/remote/logging_test.rb
|
195
|
+
- test/remote/object_test.rb
|
196
|
+
- test/remote/test_file.data
|
197
|
+
- test/remote/test_helper.rb
|
198
|
+
- test/response_test.rb
|
199
|
+
- test/service_test.rb
|
200
|
+
- test/test_helper.rb
|
data/CHANGELOG
DELETED
@@ -1,107 +0,0 @@
|
|
1
|
-
head:
|
2
|
-
|
3
|
-
0.6.3:
|
4
|
-
|
5
|
-
- Make bucket names globally unique [Jeffrey Hardy jeff@37signals.com]
|
6
|
-
- Add S3Object.update for updating things like the content-type without re-uploading the file [Jeffrey Hardy jeff@37signals.com]
|
7
|
-
0.6.2:
|
8
|
-
|
9
|
-
- Use custom __method__ in Ruby versions *prior* to 1.8.7 not *up to* 1.8.7.
|
10
|
-
|
11
|
-
0.6.1:
|
12
|
-
|
13
|
-
- Rename Kernel#memoize to Kernel#expirable_memoize so that it doesn't conflict with memoize method in ActiveSupport which has an entirely different API and semantics. Reported by [Florian Dütsc (mail@florian-duetsch.de)].
|
14
|
-
|
15
|
-
0.6.0:
|
16
|
-
|
17
|
-
- Full 1.9 compatibility (all tests passing against 1.9 & 1.8.6). Thanks to [David (dvdplm@gmail.com), Cyril David (cyx.ucron@gmail.com)]
|
18
|
-
|
19
|
-
0.5.1:
|
20
|
-
|
21
|
-
- For now just redefine __method__ to take arguments so we don't break 1.8.7 use today
|
22
|
-
|
23
|
-
0.5.0:
|
24
|
-
|
25
|
-
- Bug #17458 fixed. Normalize the :expires_in option to always be an integer even if the actual object passed in is a proxy to an integer, such as is the case with 2.hours from ActiveSupport which is actually an instance of ActiveSupport::Duration. Reported by [Steve Kickert steve@riverocktech.com]
|
26
|
-
|
27
|
-
- Bug #19158 fixed. Don't prepend leading slash onto bucket name when deleting a bucket with the :force => true option.
|
28
|
-
|
29
|
-
- Bug #17628 fixed. Don't ignore :use_ssl => false in url_for when the connection is established over ssl. Reported by [Tom Fixed (tkat11)]
|
30
|
-
|
31
|
-
- Bug #13052 fixed. Appease some proxies by always including a Content-Length with all requests. Reported by [James Murty (jmurty)]
|
32
|
-
|
33
|
-
- Bug #13756 fixed. Attributes that are false should not raise NoMethodError in Base#method_missing. Fixed by [Scott Patten]
|
34
|
-
|
35
|
-
- Bug #19189 fixed. No longer reference Date::ABBR_MONTHS constant which was removed in Ruby 1.8.6. Reported by [Khurram Virani (kvirani)]
|
36
|
-
|
37
|
-
- Bug #20487 fixed. If a request fails and is retried, only escape the request path the first time. Reported by [anonymous]
|
38
|
-
|
39
|
-
- Replace ad-hoc S3Object.copy method with newly support built in API call.
|
40
|
-
|
41
|
-
- Do not make connections persistent by default. This "feature" causes far more broken pipes than it is worth. Use with caution.
|
42
|
-
|
43
|
-
0.4.0:
|
44
|
-
|
45
|
-
- Various adjustments to connection handling to try to mitigate exceptions raised from deep within Net::HTTP.
|
46
|
-
|
47
|
-
- Don't coerce numbers that start with a zero because the zero will be lost. If a bucket, for example, has a name like '0815', all operation it will fail. Closes ticket #10089 [reported anonymously]"
|
48
|
-
|
49
|
-
- Add ability to connect through a proxy using the :proxy option when establishing a connection. Suggested by [Simon Horne <simon@soulware.co.uk>]
|
50
|
-
|
51
|
-
- Add :authenticated option to url_for. When passing false, don't generate signature parameters for query string.
|
52
|
-
|
53
|
-
- Make url_for accept custom port settings. [Rich Olson]
|
54
|
-
|
55
|
-
0.3.0:
|
56
|
-
|
57
|
-
- Ensure content type is eventually set to account for changes made to Net::HTTP in Ruby version 1.8.5. Reported by [David Hanson, Stephen Caudill, Tom Mornini <tmornini@engineyard.com>]
|
58
|
-
|
59
|
-
- Add :persistent option to connections which keeps a persistent connection rather than creating a new one per request, defaulting to true. Based on a patch by [Metalhead <metalhead@metalhead.ws>]
|
60
|
-
|
61
|
-
- If we are retrying a request after rescuing one of the retry exceptions, rewind the body if its an IO stream so it starts at the beginning. [Jamis Buck]
|
62
|
-
|
63
|
-
- Ensure that all paths being submitted to S3 are valid utf8. If they are not, we remove the extended characters. Ample help from [Jamis Buck]
|
64
|
-
|
65
|
-
- Wrap logs in Log objects which exposes each line as a Log::Line that has accessors by name for each field.
|
66
|
-
|
67
|
-
- Various performance optimizations for the extensions code. [Roman LE NEGRATE <roman2k@free.fr>]
|
68
|
-
|
69
|
-
- Make S3Object.copy more efficient by streaming in both directions in parallel.
|
70
|
-
|
71
|
-
- Open up Net:HTTPGenericRequest to make the chunk size 1 megabyte, up from 1 kilobyte.
|
72
|
-
|
73
|
-
- Add S3Object.exists?
|
74
|
-
|
75
|
-
0.2.1:
|
76
|
-
|
77
|
-
- When the bucket name argument (for e.g. Bucket.objects) is being used as the option hash, reassign it to the options variable and set the bucket to nil so bucket inference + options works.
|
78
|
-
|
79
|
-
- Don't call CGI.escape on query string parameters in Hash#to_query_string since all paths get passed through URI.escape right before the request is made. Paths were getting double escaped. Bug spotted by [David Hanson]
|
80
|
-
|
81
|
-
- Make s3sh exec irb.bat if on Windows. Bug spotted by [N. Sathish Kumar <nsathishk@yahoo.com>]
|
82
|
-
|
83
|
-
- Avoid class_variable_(get|set) since it was only recently added to Ruby. Spotted by [N. Sathish Kumar <nsathishk@yahoo.com>]
|
84
|
-
|
85
|
-
- Raise NoSuchKey if S3Object.about requests a key that does not exist.
|
86
|
-
|
87
|
-
- If the response body is an empty string, don't try to parse it as xml.
|
88
|
-
|
89
|
-
- Don't reject every body type save for IO and String at the door when making a request. Suggested by [Alex MacCaw <maccman@gmail.com>]
|
90
|
-
|
91
|
-
- Allow dots in bucket names. [Jesse Newland]
|
92
|
-
|
93
|
-
0.2.0:
|
94
|
-
|
95
|
-
- Infer content type for an object when calling S3Object.store without explicitly passing in the :content_type option.
|
96
|
-
|
97
|
-
0.1.2:
|
98
|
-
|
99
|
-
- Scrap (overly) fancy generator based version of CoercibleString with a much simpler and clearer case statement. Continuations are really slow and the specific use of the generator was leaking memory. Bug spotted by [Remco van't Veer]
|
100
|
-
|
101
|
-
0.1.1:
|
102
|
-
|
103
|
-
- Don't add the underscore method to String if it is already defined (like, for example, from ActiveSupport). Bug spotted by [Matt White <stockliasteroid@gmail.com>]
|
104
|
-
|
105
|
-
0.1.0:
|
106
|
-
|
107
|
-
- Initial public release
|