aws-sdk-core 2.0.0.rc1 → 2.0.0.rc2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +1 -0
- data/README.md +6 -3
- data/Rakefile +2 -0
- data/apis/AutoScaling-2011-01-01.json +1 -0
- data/apis/CloudFormation-2010-05-15.json +75 -0
- data/apis/CloudFront-2012-05-05.json +1 -0
- data/apis/CloudFront-2013-05-12.json +1 -0
- data/apis/CloudFront-2013-08-26.json +1 -0
- data/apis/CloudSearch-2011-02-01.json +1 -0
- data/apis/CloudWatch-2010-08-01.json +1 -0
- data/apis/DataPipeline-2012-10-29.json +1 -0
- data/apis/DirectConnect-2012-10-25.json +1 -0
- data/apis/DynamoDB-2011-12-05.json +1 -0
- data/apis/DynamoDB-2012-08-10.json +1 -0
- data/apis/EC2-2013-06-15.json +1 -0
- data/apis/EC2-2013-10-01.json +1 -0
- data/apis/EMR-2009-03-31.json +1 -0
- data/apis/ElastiCache-2012-11-15.json +1 -0
- data/apis/ElastiCache-2013-06-15.json +1 -0
- data/apis/ElasticBeanstalk-2010-12-01.json +1 -0
- data/apis/ElasticLoadBalancing-2012-06-01.json +73 -0
- data/apis/ElasticTranscoder-2012-09-25.json +231 -0
- data/apis/Glacier-2012-06-01.json +2 -0
- data/apis/IAM-2010-05-08.json +1 -0
- data/apis/ImportExport-2010-06-01.json +1 -0
- data/apis/OpsWorks-2013-02-18.json +1 -0
- data/apis/RDS-2013-01-10.json +1 -0
- data/apis/RDS-2013-02-12.json +1 -0
- data/apis/RDS-2013-05-15.json +1 -0
- data/apis/Redshift-2012-12-01.json +1 -0
- data/apis/Route53-2012-12-12.json +1 -0
- data/apis/S3-2006-03-01.json +5 -0
- data/apis/SDB-2009-04-15.json +1 -0
- data/apis/SES-2010-12-01.json +1 -0
- data/apis/SNS-2010-03-31.json +1 -0
- data/apis/SQS-2012-11-05.json +1 -0
- data/apis/STS-2011-06-15.json +1 -0
- data/apis/SWF-2012-01-25.json +1 -0
- data/apis/StorageGateway-2012-06-30.json +1 -0
- data/apis/StorageGateway-2013-06-30.json +2018 -0
- data/apis/Support-2013-04-15.json +1 -0
- data/apis/source/cloudformation-2010-05-15.json +118 -12
- data/apis/source/elasticloadbalancing-2012-06-01.json +347 -220
- data/apis/source/elastictranscoder-2012-09-25.json +315 -5
- data/apis/source/s3-2006-03-01.json +3 -0
- data/apis/source/storagegateway-2013-06-30.json +12560 -0
- data/apis/source/storagegateway-2013-06-30.paginators.json +28 -0
- data/doc-src/plugins/apis.rb +44 -1
- data/doc-src/templates/default/fulldoc/html/setup.rb +1 -1
- data/features/common/step_definitions.rb +3 -5
- data/features/env.rb +2 -0
- data/features/glacier/client.feature +8 -0
- data/features/glacier/step_definitions.rb +7 -7
- data/features/s3/step_definitions.rb +2 -3
- data/lib/aws.rb +75 -69
- data/lib/aws/api/service_translators/glacier.rb +1 -0
- data/lib/aws/api/translator.rb +13 -8
- data/lib/aws/credentials.rb +5 -5
- data/lib/aws/instance_profile_credentials.rb +113 -0
- data/lib/aws/plugins/credentials.rb +2 -1
- data/lib/aws/plugins/glacier_account_id.rb +11 -0
- data/lib/aws/plugins/glacier_checksums.rb +7 -3
- data/lib/aws/plugins/instance_profile_credentials.rb +14 -0
- data/lib/aws/plugins/s3_bucket_dns.rb +17 -14
- data/lib/aws/plugins/s3_md5s.rb +3 -3
- data/lib/aws/service.rb +10 -9
- data/lib/aws/signers/s3.rb +2 -2
- data/lib/aws/signers/v2.rb +1 -1
- data/lib/aws/signers/v4.rb +2 -2
- data/lib/aws/version.rb +1 -1
- data/lib/aws/xml/serializer.rb +1 -1
- data/spec/aws/instance_profile_credentials_spec.rb +94 -0
- data/spec/aws/operations_spec.rb +1 -1
- data/spec/aws/plugins/credentials_spec.rb +2 -2
- data/spec/fixtures/operations/glacier/account_id_param.yml +13 -0
- data/spec/fixtures/operations/glacier/custom_account_id.yml +11 -0
- data/spec/fixtures/operations/glacier/default_account_id.yml +10 -0
- data/spec/fixtures/operations/s3/content_type_header.yml +12 -0
- data/spec/fixtures/operations/s3/md5_checksum_disabled.yml +1 -1
- data/tasks/apis.rake +2 -2
- data/tasks/docs.rake +2 -1
- data/tasks/handlers.rake +30 -0
- data/vendor/seahorse/lib/seahorse/client.rb +1 -0
- data/vendor/seahorse/lib/seahorse/client/base.rb +0 -18
- data/vendor/seahorse/lib/seahorse/client/block_io.rb +0 -7
- data/vendor/seahorse/lib/seahorse/client/configuration.rb +57 -37
- data/vendor/seahorse/lib/seahorse/client/handler_list.rb +115 -78
- data/vendor/seahorse/lib/seahorse/client/http/endpoint.rb +19 -15
- data/vendor/seahorse/lib/seahorse/client/http/request.rb +0 -15
- data/vendor/seahorse/lib/seahorse/client/logging/formatter.rb +0 -7
- data/vendor/seahorse/lib/seahorse/client/managed_file.rb +14 -0
- data/vendor/seahorse/lib/seahorse/client/net_http/handler.rb +1 -3
- data/vendor/seahorse/lib/seahorse/client/plugins/content_length.rb +1 -1
- data/vendor/seahorse/lib/seahorse/client/plugins/endpoint.rb +81 -10
- data/vendor/seahorse/lib/seahorse/client/plugins/restful_bindings.rb +1 -71
- data/vendor/seahorse/lib/seahorse/client/request.rb +26 -3
- data/vendor/seahorse/spec/seahorse/client/base_spec.rb +1 -5
- data/vendor/seahorse/spec/seahorse/client/configuration_spec.rb +1 -10
- data/vendor/seahorse/spec/seahorse/client/handler_list_spec.rb +10 -10
- data/vendor/seahorse/spec/seahorse/client/http/endpoint_spec.rb +46 -14
- data/vendor/seahorse/spec/seahorse/client/http/request_spec.rb +1 -42
- data/vendor/seahorse/spec/seahorse/client/logging/formatter_spec.rb +1 -6
- data/vendor/seahorse/spec/seahorse/client/logging/handler_spec.rb +1 -1
- data/vendor/seahorse/spec/seahorse/client/net_http/handler_spec.rb +5 -4
- data/vendor/seahorse/spec/seahorse/client/param_converter_spec.rb +1 -0
- data/vendor/seahorse/spec/seahorse/client/plugins/{restful_bindings/uri_path_builder_spec.rb → endpoint/request_uri_builder_spec.rb} +3 -3
- data/vendor/seahorse/spec/seahorse/client/plugins/endpoint_spec.rb +1 -11
- data/vendor/seahorse/spec/seahorse/client/request_spec.rb +63 -13
- metadata +21 -3
@@ -18,12 +18,12 @@ module Seahorse
|
|
18
18
|
expect(handlers.to_a).to eq([handler])
|
19
19
|
end
|
20
20
|
|
21
|
-
it 'handlers added
|
21
|
+
it 'handlers added first have a higher priority' do
|
22
22
|
handler1 = Class.new
|
23
23
|
handler2 = Class.new
|
24
24
|
handlers.add(handler1)
|
25
25
|
handlers.add(handler2)
|
26
|
-
expect(handlers.to_a).to eq([
|
26
|
+
expect(handlers.to_a).to eq([handler2, handler1])
|
27
27
|
end
|
28
28
|
|
29
29
|
it 'returns the handler class' do
|
@@ -53,7 +53,7 @@ module Seahorse
|
|
53
53
|
handlers.add('h2', step: :validate)
|
54
54
|
handlers.add('h3', step: :build)
|
55
55
|
handlers.add('h4', step: :build)
|
56
|
-
expect(handlers.to_a).to eq(%w(h3
|
56
|
+
expect(handlers.to_a).to eq(%w(h4 h3 h2 h1))
|
57
57
|
end
|
58
58
|
|
59
59
|
end
|
@@ -78,7 +78,7 @@ module Seahorse
|
|
78
78
|
handlers.add('y', priority: 20, step: :validate)
|
79
79
|
handlers.add('z', priority: 20, step: :validate)
|
80
80
|
handlers.add('-', step: :send)
|
81
|
-
expect(handlers.to_a).to eq(%w(-
|
81
|
+
expect(handlers.to_a).to eq(%w(- c b a o n m z y x))
|
82
82
|
end
|
83
83
|
|
84
84
|
end
|
@@ -138,7 +138,7 @@ module Seahorse
|
|
138
138
|
handlers.add('handler1', operations: ['operation1'])
|
139
139
|
handlers.add('handler2', operations: ['operation1'])
|
140
140
|
handlers.add('handler3', operations: ['operation2'])
|
141
|
-
expect(handlers.for('operation1').to_a).to eq(%w(handler1
|
141
|
+
expect(handlers.for('operation1').to_a).to eq(%w(handler2 handler1))
|
142
142
|
end
|
143
143
|
|
144
144
|
end
|
@@ -184,7 +184,7 @@ module Seahorse
|
|
184
184
|
handlers2 = handlers.for('operation')
|
185
185
|
handlers2.add('handler2')
|
186
186
|
expect(handlers.to_a).to eq(['handler1'])
|
187
|
-
expect(handlers2.to_a).to eq(['
|
187
|
+
expect(handlers2.to_a).to eq(['handler2', 'handler1'])
|
188
188
|
end
|
189
189
|
|
190
190
|
it 'copies operation handlers with the given name' do
|
@@ -207,8 +207,8 @@ module Seahorse
|
|
207
207
|
it 'accpets operation names as symbols' do
|
208
208
|
handlers.add('handler1', operations: [:operation])
|
209
209
|
handlers.add('handler2', operations: ['operation'])
|
210
|
-
expect(handlers.for('operation').to_a).to eq(%w(handler1
|
211
|
-
expect(handlers.for(:operation).to_a).to eq(%w(handler1
|
210
|
+
expect(handlers.for('operation').to_a).to eq(%w(handler2 handler1))
|
211
|
+
expect(handlers.for(:operation).to_a).to eq(%w(handler2 handler1))
|
212
212
|
end
|
213
213
|
|
214
214
|
end
|
@@ -229,8 +229,8 @@ module Seahorse
|
|
229
229
|
it 'does not construct handlers that are not classes' do
|
230
230
|
handler1 = double('handler1')
|
231
231
|
handler2 = double('handler2')
|
232
|
-
expect(
|
233
|
-
expect(
|
232
|
+
expect(handler2).to receive(:handler=).with(nil)
|
233
|
+
expect(handler1).to receive(:handler=).with(handler2)
|
234
234
|
handlers.add(handler1)
|
235
235
|
handlers.add(handler2)
|
236
236
|
handlers.to_stack
|
@@ -11,12 +11,12 @@ module Seahorse
|
|
11
11
|
end
|
12
12
|
|
13
13
|
it 'can be constructed from a URI::HTTP' do
|
14
|
-
uri = 'http://foo.com'
|
14
|
+
uri = 'http://foo.com/'
|
15
15
|
expect(Endpoint.new(URI.parse(uri))).to eq(uri)
|
16
16
|
end
|
17
17
|
|
18
18
|
it 'can be constructed from a URI::HTTPS' do
|
19
|
-
uri = 'https://foo.com'
|
19
|
+
uri = 'https://foo.com/'
|
20
20
|
expect(Endpoint.new(URI.parse(uri))).to eq(uri)
|
21
21
|
end
|
22
22
|
|
@@ -45,16 +45,12 @@ module Seahorse
|
|
45
45
|
expect(Endpoint.new('foo.com').scheme).to eq('https')
|
46
46
|
end
|
47
47
|
|
48
|
-
it 'looks for the :ssl_default options when picking the default scheme' do
|
49
|
-
expect(Endpoint.new('foo.com', ssl_default: false).scheme).to eq('http')
|
50
|
-
end
|
51
|
-
|
52
48
|
it 'can be changed' do
|
53
|
-
endpoint = Endpoint.new('http://foo.com')
|
49
|
+
endpoint = Endpoint.new('http://foo.com/')
|
54
50
|
endpoint.scheme = 'https'
|
55
51
|
expect(endpoint.port).to eq(80)
|
56
52
|
expect(endpoint.scheme).to eq('https')
|
57
|
-
expect(endpoint).to eq('https://foo.com:80')
|
53
|
+
expect(endpoint).to eq('https://foo.com:80/')
|
58
54
|
end
|
59
55
|
|
60
56
|
end
|
@@ -91,10 +87,10 @@ module Seahorse
|
|
91
87
|
end
|
92
88
|
|
93
89
|
it 'can be changed' do
|
94
|
-
endpoint = Endpoint.new('http://foo.com')
|
90
|
+
endpoint = Endpoint.new('http://foo.com/')
|
95
91
|
endpoint.host = 'bar.com'
|
96
92
|
expect(endpoint.host).to eq('bar.com')
|
97
|
-
expect(endpoint).to eq('http://bar.com')
|
93
|
+
expect(endpoint).to eq('http://bar.com/')
|
98
94
|
end
|
99
95
|
|
100
96
|
end
|
@@ -115,11 +111,47 @@ module Seahorse
|
|
115
111
|
end
|
116
112
|
|
117
113
|
it 'can be changed' do
|
118
|
-
endpoint = Endpoint.new('http://foo.com')
|
114
|
+
endpoint = Endpoint.new('http://foo.com/')
|
119
115
|
endpoint.port = 443
|
120
116
|
expect(endpoint.scheme).to eq('http')
|
121
117
|
expect(endpoint.port).to eq(443)
|
122
|
-
expect(endpoint).to eq('http://foo.com:443')
|
118
|
+
expect(endpoint).to eq('http://foo.com:443/')
|
119
|
+
end
|
120
|
+
|
121
|
+
end
|
122
|
+
|
123
|
+
describe '#request_uri' do
|
124
|
+
|
125
|
+
it 'defaults to /' do
|
126
|
+
expect(Endpoint.new('foo.com').request_uri).to eq('/')
|
127
|
+
end
|
128
|
+
|
129
|
+
it 'can be set in the constructor' do
|
130
|
+
expect(Endpoint.new('foo.com/bar?a=b').request_uri).to eq('/bar?a=b')
|
131
|
+
end
|
132
|
+
|
133
|
+
end
|
134
|
+
|
135
|
+
describe '#path' do
|
136
|
+
|
137
|
+
it 'defaults to /' do
|
138
|
+
expect(Endpoint.new('foo.com').path).to eq('/')
|
139
|
+
end
|
140
|
+
|
141
|
+
it 'can be set in the constructor' do
|
142
|
+
expect(Endpoint.new('foo.com/bar?a=b').path).to eq('/bar')
|
143
|
+
end
|
144
|
+
|
145
|
+
end
|
146
|
+
|
147
|
+
describe '#querystring' do
|
148
|
+
|
149
|
+
it 'defaults to nil' do
|
150
|
+
expect(Endpoint.new('foo.com').querystring).to be(nil)
|
151
|
+
end
|
152
|
+
|
153
|
+
it 'can be set in the constructor' do
|
154
|
+
expect(Endpoint.new('foo.com/bar?a=b').querystring).to eq('a=b')
|
123
155
|
end
|
124
156
|
|
125
157
|
end
|
@@ -138,7 +170,7 @@ module Seahorse
|
|
138
170
|
endpoint = Endpoint.new('foo.com')
|
139
171
|
endpoint.user = 'abc'
|
140
172
|
expect(endpoint.user).to eq('abc')
|
141
|
-
expect(endpoint).to eq('https://abc@foo.com')
|
173
|
+
expect(endpoint).to eq('https://abc@foo.com/')
|
142
174
|
end
|
143
175
|
|
144
176
|
end
|
@@ -158,7 +190,7 @@ module Seahorse
|
|
158
190
|
endpoint.user = 'u'
|
159
191
|
endpoint.password = 'p'
|
160
192
|
expect(endpoint.password).to eq('p')
|
161
|
-
expect(endpoint).to eq('https://u:p@foo.com')
|
193
|
+
expect(endpoint).to eq('https://u:p@foo.com/')
|
162
194
|
end
|
163
195
|
|
164
196
|
end
|
@@ -15,7 +15,7 @@ module Seahorse
|
|
15
15
|
end
|
16
16
|
|
17
17
|
it 'can be set in the constructor' do
|
18
|
-
endpoint = 'http://foo.com'
|
18
|
+
endpoint = 'http://foo.com/'
|
19
19
|
req = request(endpoint: endpoint)
|
20
20
|
expect(req.endpoint).to eq(endpoint)
|
21
21
|
end
|
@@ -35,47 +35,6 @@ module Seahorse
|
|
35
35
|
|
36
36
|
end
|
37
37
|
|
38
|
-
describe '#path' do
|
39
|
-
|
40
|
-
it 'defaults to GET' do
|
41
|
-
expect(request.path).to eq('/')
|
42
|
-
end
|
43
|
-
|
44
|
-
it 'can be set in the constructor' do
|
45
|
-
req = request(path: '/path?abc=xyz')
|
46
|
-
expect(req.path).to eq('/path?abc=xyz')
|
47
|
-
end
|
48
|
-
|
49
|
-
end
|
50
|
-
|
51
|
-
describe '#pathname' do
|
52
|
-
|
53
|
-
it 'returns the path up to but not including the querystring' do
|
54
|
-
req = request(path: '/path?query')
|
55
|
-
expect(req.pathname).to eq('/path')
|
56
|
-
end
|
57
|
-
|
58
|
-
it 'returns the full path when a querystring is not present' do
|
59
|
-
req = request(path: '/path')
|
60
|
-
expect(req.pathname).to eq('/path')
|
61
|
-
end
|
62
|
-
|
63
|
-
end
|
64
|
-
|
65
|
-
describe '#querystring' do
|
66
|
-
|
67
|
-
it 'returns the querystring portion of the path' do
|
68
|
-
req = request(path: '/path?query')
|
69
|
-
expect(req.querystring).to eq('query')
|
70
|
-
end
|
71
|
-
|
72
|
-
it 'returns the empty string when not present' do
|
73
|
-
req = request(path: '/path')
|
74
|
-
expect(req.querystring).to eq('')
|
75
|
-
end
|
76
|
-
|
77
|
-
end
|
78
|
-
|
79
38
|
describe '#headers' do
|
80
39
|
|
81
40
|
it 'defaults to a Http::Headers' do
|
@@ -62,7 +62,7 @@ module Seahorse
|
|
62
62
|
it 'provides a :http_request_endpoint replacement' do
|
63
63
|
response.context.http_request.endpoint =
|
64
64
|
Http::Endpoint.new('http://foo.com:123')
|
65
|
-
expect(format(':http_request_endpoint')).to eq('http://foo.com:123')
|
65
|
+
expect(format(':http_request_endpoint')).to eq('http://foo.com:123/')
|
66
66
|
end
|
67
67
|
|
68
68
|
it 'provides a :http_request_scheme replacement' do
|
@@ -92,11 +92,6 @@ module Seahorse
|
|
92
92
|
expect(format(':http_request_port')).to eq('123')
|
93
93
|
end
|
94
94
|
|
95
|
-
it 'provides a :http_request_path replacement' do
|
96
|
-
response.context.http_request.path = '/foo?bar=1'
|
97
|
-
expect(format(':http_request_path')).to eq('/foo?bar=1')
|
98
|
-
end
|
99
|
-
|
100
95
|
it 'provides a :http_request_headers replacement' do
|
101
96
|
response.context.http_request.headers = { 'foo' => 'bar' }
|
102
97
|
expect(format(':http_request_headers')).to eq('{"foo"=>"bar"}')
|
@@ -41,7 +41,7 @@ module Seahorse
|
|
41
41
|
resp = handle!
|
42
42
|
expect(resp.context[:logging_started_at]).to be_kind_of(Time)
|
43
43
|
expect(resp.context[:logging_completed_at]).to be_kind_of(Time)
|
44
|
-
expect(resp.context[:logging_started_at]).to be
|
44
|
+
expect(resp.context[:logging_started_at]).to be <= resp.context[:logging_completed_at]
|
45
45
|
end
|
46
46
|
|
47
47
|
it 'sends the formatted message to the logger' do
|
@@ -183,14 +183,14 @@ module Seahorse
|
|
183
183
|
describe 'request path' do
|
184
184
|
|
185
185
|
it 'sends the request with the correct request uri' do
|
186
|
-
http_request.
|
187
|
-
stub_request(:any,
|
186
|
+
http_request.endpoint.request_uri = '/path'
|
187
|
+
stub_request(:any, http_request.endpoint)
|
188
188
|
make_request
|
189
189
|
end
|
190
190
|
|
191
191
|
it 'sends the request with the querystring' do
|
192
|
-
http_request.
|
193
|
-
stub_request(:any,
|
192
|
+
http_request.endpoint.request_uri = '/abc?mno=xyz'
|
193
|
+
stub_request(:any, http_request.endpoint)
|
194
194
|
make_request
|
195
195
|
end
|
196
196
|
|
@@ -221,6 +221,7 @@ module Seahorse
|
|
221
221
|
it 'populates the response body' do
|
222
222
|
stub_request(:any, endpoint).to_return(body: 'response-body')
|
223
223
|
resp_body = make_request.http_response.body
|
224
|
+
resp_body.rewind
|
224
225
|
expect(resp_body.read).to eq('response-body')
|
225
226
|
end
|
226
227
|
|
@@ -3,14 +3,14 @@ require 'spec_helper'
|
|
3
3
|
module Seahorse
|
4
4
|
module Client
|
5
5
|
module Plugins
|
6
|
-
class
|
7
|
-
describe
|
6
|
+
class Endpoint
|
7
|
+
describe RequestUriBuilder do
|
8
8
|
|
9
9
|
let(:rules) {{ 'type' => 'input', 'members' => {} }}
|
10
10
|
|
11
11
|
def path_for(pattern, params)
|
12
12
|
input = Model::Shapes::Shape.from_hash(rules)
|
13
|
-
|
13
|
+
RequestUriBuilder.new(pattern, input.uri_members).path(params)
|
14
14
|
end
|
15
15
|
|
16
16
|
it 'does not modify paths without placeholders' do
|
@@ -22,21 +22,11 @@ module Seahorse
|
|
22
22
|
expect(client.config.endpoint).to eq('foo.com')
|
23
23
|
end
|
24
24
|
|
25
|
-
it 'adds an #ssl_default option to config' do
|
26
|
-
expect(client.config.ssl_default).to be(true)
|
27
|
-
end
|
28
|
-
|
29
25
|
it 'populates the http request endpoint' do
|
30
26
|
resp = client.build_request('operation').send_request
|
31
|
-
expect(resp.context.http_request.endpoint).to eq('https://foo.com')
|
27
|
+
expect(resp.context.http_request.endpoint).to eq('https://foo.com/')
|
32
28
|
end
|
33
29
|
|
34
|
-
it 'defaults to http when ssl_default is false' do
|
35
|
-
client = client(ssl_default: false)
|
36
|
-
resp = client.build_request('operation').send_request
|
37
|
-
expect(resp.context.http_request.endpoint).to eq('http://foo.com')
|
38
|
-
end
|
39
|
-
|
40
30
|
end
|
41
31
|
end
|
42
32
|
end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'spec_helper'
|
2
|
+
require 'tempfile'
|
2
3
|
|
3
4
|
module Seahorse
|
4
5
|
module Client
|
@@ -63,7 +64,7 @@ module Seahorse
|
|
63
64
|
|
64
65
|
end
|
65
66
|
|
66
|
-
describe '#send_request with a
|
67
|
+
describe '#send_request with a target' do
|
67
68
|
|
68
69
|
let(:handler) do
|
69
70
|
Proc.new do
|
@@ -78,24 +79,73 @@ module Seahorse
|
|
78
79
|
allow(handlers).to receive(:to_stack).and_return(handler)
|
79
80
|
end
|
80
81
|
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
82
|
+
describe 'String target' do
|
83
|
+
|
84
|
+
it 'writes to the file named' do
|
85
|
+
tmpfile = Tempfile.new('tempfile')
|
86
|
+
tmpfile.close
|
87
|
+
request.send_request(target: tmpfile.path)
|
88
|
+
expect(File.read(tmpfile.path)).to eq("part1part2part3")
|
89
|
+
end
|
90
|
+
|
91
|
+
it 'closes the file before returning the response' do
|
92
|
+
tmpfile = Tempfile.new('tempfile')
|
93
|
+
tmpfile.close
|
94
|
+
resp = request.send_request(target: tmpfile.path)
|
95
|
+
expect(resp.context.http_response.body).to be_closed
|
96
|
+
end
|
97
|
+
|
85
98
|
end
|
86
99
|
|
87
|
-
|
88
|
-
|
89
|
-
|
100
|
+
describe 'Pathname target' do
|
101
|
+
|
102
|
+
it 'writes to the file named' do
|
103
|
+
tmpfile = Tempfile.new('tempfile')
|
104
|
+
tmpfile.close
|
105
|
+
request.send_request(target: Pathname.new(tmpfile.path))
|
106
|
+
expect(File.read(tmpfile.path)).to eq("part1part2part3")
|
107
|
+
end
|
108
|
+
|
109
|
+
it 'closes the file before returning the response' do
|
110
|
+
tmpfile = Tempfile.new('tempfile')
|
111
|
+
tmpfile.close
|
112
|
+
resp = request.send_request(target: Pathname.new(tmpfile.path))
|
113
|
+
expect(resp.context.http_response.body).to be_closed
|
114
|
+
end
|
115
|
+
|
90
116
|
end
|
91
117
|
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
118
|
+
describe 'IO object target' do
|
119
|
+
|
120
|
+
it 'writes to the given object' do
|
121
|
+
buffer = StringIO.new('')
|
122
|
+
request.send_request(target: buffer)
|
123
|
+
expect(buffer.string).to eq("part1part2part3")
|
124
|
+
end
|
125
|
+
|
97
126
|
end
|
98
127
|
|
128
|
+
describe 'Block target' do
|
129
|
+
|
130
|
+
it 'streams data from the handler to the #send_request block' do
|
131
|
+
data = []
|
132
|
+
request.send_request { |chunk| data << chunk }
|
133
|
+
expect(data).to eq(['part1', 'part2', 'part3'])
|
134
|
+
end
|
135
|
+
|
136
|
+
it 'counts the bytes yielded' do
|
137
|
+
resp = request.send_request { |chunk| }
|
138
|
+
expect(resp.http_response.body.size).to eq(15)
|
139
|
+
end
|
140
|
+
|
141
|
+
it 'does not buffer the response chunks' do
|
142
|
+
response = request.send_request { |chunk| }
|
143
|
+
body = response.http_response.body
|
144
|
+
expect(body.read).to eq('')
|
145
|
+
expect(body).not_to respond_to(:truncate)
|
146
|
+
end
|
147
|
+
|
148
|
+
end
|
99
149
|
end
|
100
150
|
end
|
101
151
|
end
|