signet 0.5.1 → 0.6.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.
- checksums.yaml +13 -5
- data/CHANGELOG.md +7 -0
- data/Gemfile +2 -19
- data/lib/signet/oauth_2/client.rb +82 -50
- data/lib/signet/oauth_2.rb +9 -2
- data/lib/signet/version.rb +2 -2
- data/signet.gemspec +38 -0
- data/spec/signet/oauth_1/client_spec.rb +231 -243
- data/spec/signet/oauth_1/credential_spec.rb +30 -30
- data/spec/signet/oauth_1/server_spec.rb +128 -129
- data/spec/signet/oauth_1/services/google_spec.rb +24 -25
- data/spec/signet/oauth_1/signature_methods/hmac_sha1_spec.rb +4 -4
- data/spec/signet/oauth_1/signature_methods/plaintext_spec.rb +4 -4
- data/spec/signet/oauth_1/signature_methods/rsa_sha1_spec.rb +6 -6
- data/spec/signet/oauth_1_spec.rb +190 -192
- data/spec/signet/oauth_2/client_spec.rb +296 -181
- data/spec/signet/oauth_2_spec.rb +58 -48
- data/spec/signet_spec.rb +23 -23
- data/spec/spec_helper.rb +3 -1
- data/tasks/gem.rake +3 -55
- data/tasks/spec.rake +0 -25
- metadata +99 -38
@@ -79,16 +79,16 @@ describe Signet::OAuth1::Server, 'unconfigured' do
|
|
79
79
|
@server = Signet::OAuth1::Server.new
|
80
80
|
end
|
81
81
|
it 'should not have a client_credential Proc' do
|
82
|
-
@server.client_credential.
|
82
|
+
expect(@server.client_credential).to eq nil
|
83
83
|
end
|
84
84
|
it 'should not have a token_credential Proc' do
|
85
|
-
@server.token_credential.
|
85
|
+
expect(@server.token_credential).to eq nil
|
86
86
|
end
|
87
87
|
it 'should not have a nonce_timestamp Proc' do
|
88
|
-
@server.nonce_timestamp.
|
88
|
+
expect(@server.nonce_timestamp).to eq nil
|
89
89
|
end
|
90
90
|
it 'should not have a verifier Proc' do
|
91
|
-
@server.verifier.
|
91
|
+
expect(@server.verifier).to eq nil
|
92
92
|
end
|
93
93
|
end
|
94
94
|
|
@@ -128,76 +128,76 @@ describe Signet::OAuth1::Server, 'configured' do
|
|
128
128
|
|
129
129
|
it 'should raise an error if the client credential Proc is not set' do
|
130
130
|
@server.client_credential = nil
|
131
|
-
(lambda do
|
131
|
+
expect(lambda do
|
132
132
|
@server.authenticate_resource_request
|
133
|
-
end).
|
133
|
+
end).to raise_error(ArgumentError)
|
134
134
|
end
|
135
135
|
|
136
136
|
it "should raise an error if the token credential Proc is not set" do
|
137
137
|
@server.token_credential = nil
|
138
|
-
(lambda do
|
138
|
+
expect(lambda do
|
139
139
|
@server.authenticate_resource_request
|
140
|
-
end).
|
140
|
+
end).to raise_error(ArgumentError)
|
141
141
|
end
|
142
142
|
|
143
143
|
it "should raise an error if the temporary token credential Proc is not set" do
|
144
144
|
@server.temporary_credential = nil
|
145
|
-
(lambda do
|
145
|
+
expect(lambda do
|
146
146
|
@server.authenticate_token_credential_request
|
147
|
-
end).
|
147
|
+
end).to raise_error(ArgumentError)
|
148
148
|
end
|
149
149
|
|
150
150
|
it "should raise an error if the verifier Proc is not set for a token request" do
|
151
151
|
@server.verifier = nil
|
152
|
-
(lambda do
|
152
|
+
expect(lambda do
|
153
153
|
@server.authenticate_token_credential_request
|
154
|
-
end).
|
154
|
+
end).to raise_error(ArgumentError)
|
155
155
|
end
|
156
156
|
|
157
157
|
it 'should raise an error if no request is provided' do
|
158
|
-
(lambda do
|
158
|
+
expect(lambda do
|
159
159
|
@server.authenticate_resource_request
|
160
|
-
end).
|
160
|
+
end).to raise_error(ArgumentError)
|
161
161
|
end
|
162
162
|
|
163
163
|
it 'should raise an error if a bogus request is provided' do
|
164
|
-
(lambda do
|
164
|
+
expect(lambda do
|
165
165
|
@server.authenticate_resource_request(
|
166
166
|
:request => []
|
167
167
|
)
|
168
|
-
end).
|
168
|
+
end).to raise_error(ArgumentError)
|
169
169
|
end
|
170
170
|
|
171
171
|
it 'should raise an error if no Authentication header is provided' do
|
172
|
-
(lambda do
|
172
|
+
expect(lambda do
|
173
173
|
@server.authenticate_resource_request(
|
174
174
|
:method => 'GET',
|
175
175
|
:uri => 'https://photos.example.net/photos',
|
176
176
|
:headers => [['Authorization', '']],
|
177
177
|
:body => ''
|
178
178
|
)
|
179
|
-
end).
|
179
|
+
end).to raise_error(Signet::MalformedAuthorizationError)
|
180
180
|
end
|
181
181
|
|
182
182
|
it 'should raise an error if no URI is provided' do
|
183
|
-
(lambda do
|
183
|
+
expect(lambda do
|
184
184
|
@server.authenticate_resource_request(
|
185
185
|
:method => 'GET',
|
186
186
|
:headers => [],
|
187
187
|
:body => ''
|
188
188
|
)
|
189
|
-
end).
|
189
|
+
end).to raise_error(ArgumentError)
|
190
190
|
end
|
191
191
|
|
192
192
|
it 'should reject a request with the wrong signature method' do
|
193
193
|
bad_method = 'FOO'
|
194
|
-
(lambda do
|
194
|
+
expect(lambda do
|
195
195
|
@server.authenticate_resource_request(
|
196
196
|
:method => 'GET',
|
197
197
|
:uri => 'http://photos.example.net/photos',
|
198
198
|
:headers=>make_oauth_token_header({'oauth_signature_method'=>bad_method})
|
199
199
|
)
|
200
|
-
end).
|
200
|
+
end).to raise_error(NotImplementedError,
|
201
201
|
"Unsupported signature method: #{bad_method}"
|
202
202
|
)
|
203
203
|
end
|
@@ -211,18 +211,18 @@ describe Signet::OAuth1::Server, 'configured' do
|
|
211
211
|
@temporary_credential_key, @temporary_credential_secret
|
212
212
|
)
|
213
213
|
end
|
214
|
-
@server.find_temporary_credential(@temporary_credential_key).
|
214
|
+
expect(@server.find_temporary_credential(@temporary_credential_key)).to eq(
|
215
215
|
Signet::OAuth1::Credential.new(@temporary_credential_key,
|
216
|
-
@temporary_credential_secret)
|
216
|
+
@temporary_credential_secret))
|
217
217
|
end
|
218
218
|
it 'should return a Signet credential if the Proc provides a key/secret pair' do
|
219
219
|
@server.temporary_credential =
|
220
220
|
lambda do |x|
|
221
221
|
{:key=>@temporary_credential_key, :secret=>@temporary_credential_secret}
|
222
222
|
end
|
223
|
-
@server.find_temporary_credential(@temporary_credential_key).
|
223
|
+
expect(@server.find_temporary_credential(@temporary_credential_key)).to eq(
|
224
224
|
Signet::OAuth1::Credential.new(@temporary_credential_key,
|
225
|
-
@temporary_credential_secret)
|
225
|
+
@temporary_credential_secret))
|
226
226
|
end
|
227
227
|
it 'should return a Signet credential if the Proc provides ' +
|
228
228
|
'a key/secret Enumerable' do
|
@@ -230,15 +230,14 @@ describe Signet::OAuth1::Server, 'configured' do
|
|
230
230
|
lambda do |x|
|
231
231
|
[@temporary_credential_key, @temporary_credential_secret]
|
232
232
|
end
|
233
|
-
@server.find_temporary_credential(@temporary_credential_key).
|
233
|
+
expect(@server.find_temporary_credential(@temporary_credential_key)).to eq(
|
234
234
|
Signet::OAuth1::Credential.new(@temporary_credential_key,
|
235
|
-
@temporary_credential_secret
|
236
|
-
)
|
235
|
+
@temporary_credential_secret))
|
237
236
|
end
|
238
237
|
|
239
238
|
it 'should return nil if the Proc does not provide a usable response' do
|
240
239
|
@server.temporary_credential = lambda {|x| nil }
|
241
|
-
@server.find_temporary_credential(@temporary_credential_key).
|
240
|
+
expect(@server.find_temporary_credential(@temporary_credential_key)).to eq nil
|
242
241
|
end
|
243
242
|
end
|
244
243
|
|
@@ -250,18 +249,18 @@ describe Signet::OAuth1::Server, 'configured' do
|
|
250
249
|
x.nil? ? nil : Signet::OAuth1::Credential.new(@client_credential_key,
|
251
250
|
@client_credential_secret)
|
252
251
|
end
|
253
|
-
@server.find_client_credential(@client_credential_key).
|
252
|
+
expect(@server.find_client_credential(@client_credential_key)).to eq(
|
254
253
|
Signet::OAuth1::Credential.new(@client_credential_key,
|
255
|
-
@client_credential_secret)
|
254
|
+
@client_credential_secret))
|
256
255
|
end
|
257
256
|
it 'should return a Signet credential if the Proc provides a key/secret pair' do
|
258
257
|
@server.client_credential =
|
259
258
|
lambda do |x|
|
260
259
|
{:key=>@client_credential_key, :secret=>@client_credential_secret}
|
261
260
|
end
|
262
|
-
@server.find_client_credential(@client_credential_key).
|
261
|
+
expect(@server.find_client_credential(@client_credential_key)).to eq(
|
263
262
|
Signet::OAuth1::Credential.new(@client_credential_key,
|
264
|
-
@client_credential_secret)
|
263
|
+
@client_credential_secret))
|
265
264
|
end
|
266
265
|
it 'should return a Signet credential if the Proc provides ' +
|
267
266
|
'a key/secret Enumerable' do
|
@@ -269,14 +268,14 @@ describe Signet::OAuth1::Server, 'configured' do
|
|
269
268
|
lambda do |x|
|
270
269
|
[@client_credential_key, @client_credential_secret]
|
271
270
|
end
|
272
|
-
@server.find_client_credential(@client_credential_key).
|
271
|
+
expect(@server.find_client_credential(@client_credential_key)).to eq(
|
273
272
|
Signet::OAuth1::Credential.new(@client_credential_key,
|
274
|
-
@client_credential_secret)
|
273
|
+
@client_credential_secret))
|
275
274
|
end
|
276
275
|
|
277
276
|
it 'should return nil if the Proc does not provide a usable response' do
|
278
277
|
@server.client_credential = lambda {|x| nil }
|
279
|
-
@server.find_client_credential(@client_credential_key).
|
278
|
+
expect(@server.find_client_credential(@client_credential_key)).to be_nil
|
280
279
|
end
|
281
280
|
end
|
282
281
|
|
@@ -288,9 +287,9 @@ describe Signet::OAuth1::Server, 'configured' do
|
|
288
287
|
x.nil? ? nil : Signet::OAuth1::Credential.new(@token_credential_key,
|
289
288
|
@token_credential_secret)
|
290
289
|
end
|
291
|
-
@server.find_token_credential(@token_credential_key).
|
290
|
+
expect(@server.find_token_credential(@token_credential_key)).to eq(
|
292
291
|
Signet::OAuth1::Credential.new(@token_credential_key,
|
293
|
-
@token_credential_secret)
|
292
|
+
@token_credential_secret))
|
294
293
|
end
|
295
294
|
|
296
295
|
it 'should return a Signet credential if the Proc provides a key/secret pair' do
|
@@ -298,9 +297,9 @@ describe Signet::OAuth1::Server, 'configured' do
|
|
298
297
|
lambda do |x|
|
299
298
|
{:key=>@token_credential_key, :secret=>@token_credential_secret}
|
300
299
|
end
|
301
|
-
@server.find_token_credential(@token_credential_key).
|
300
|
+
expect(@server.find_token_credential(@token_credential_key)).to eq(
|
302
301
|
Signet::OAuth1::Credential.new(@token_credential_key,
|
303
|
-
@token_credential_secret)
|
302
|
+
@token_credential_secret))
|
304
303
|
end
|
305
304
|
|
306
305
|
it 'should return a Signet credential if the Proc provides ' +
|
@@ -309,14 +308,14 @@ describe Signet::OAuth1::Server, 'configured' do
|
|
309
308
|
lambda do |x|
|
310
309
|
[@token_credential_key, @token_credential_secret]
|
311
310
|
end
|
312
|
-
@server.find_token_credential(@token_credential_key).
|
311
|
+
expect(@server.find_token_credential(@token_credential_key)).to eq(
|
313
312
|
Signet::OAuth1::Credential.new(@token_credential_key,
|
314
|
-
@token_credential_secret)
|
313
|
+
@token_credential_secret))
|
315
314
|
end
|
316
315
|
|
317
316
|
it 'should return nil if the Proc does not provide a usable response' do
|
318
317
|
@server.token_credential = lambda {|x| nil }
|
319
|
-
@server.find_token_credential(@token_credential_key).
|
318
|
+
expect(@server.find_token_credential(@token_credential_key)).to be_nil
|
320
319
|
end
|
321
320
|
end
|
322
321
|
|
@@ -324,30 +323,30 @@ describe Signet::OAuth1::Server, 'configured' do
|
|
324
323
|
describe 'calling find_verifier' do
|
325
324
|
it 'should return false if server verifier returns false' do
|
326
325
|
@server.verifier = lambda {|x| false }
|
327
|
-
@server.find_verifier(@verifier).
|
326
|
+
expect(@server.find_verifier(@verifier)).to eq false
|
328
327
|
end
|
329
328
|
it 'should return false if server verifier returns nil' do
|
330
329
|
@server.verifier = lambda {|x| nil }
|
331
|
-
@server.find_verifier(@verifier).
|
330
|
+
expect(@server.find_verifier(@verifier)).to eq false
|
332
331
|
end
|
333
332
|
it 'should return true if server verifier returns a random object' do
|
334
333
|
@server.verifier = lambda {|x| x.succ}
|
335
|
-
@server.find_verifier(@verifier).
|
334
|
+
expect(@server.find_verifier(@verifier)).to eq true
|
336
335
|
end
|
337
336
|
end
|
338
337
|
|
339
338
|
describe 'calling validate_nonce_timestamp' do
|
340
339
|
it 'should return false if nonce_timestamp Proc returns false' do
|
341
340
|
@server.nonce_timestamp = lambda {|n,t| false}
|
342
|
-
@server.validate_nonce_timestamp('nonce', 'timestamp').
|
341
|
+
expect(@server.validate_nonce_timestamp('nonce', 'timestamp')).to be false
|
343
342
|
end
|
344
343
|
it 'should return false if nonce_timestamp Proc returns nil' do
|
345
344
|
@server.nonce_timestamp = lambda {|n,t| nil}
|
346
|
-
@server.validate_nonce_timestamp('nonce', 'timestamp').
|
345
|
+
expect(@server.validate_nonce_timestamp('nonce', 'timestamp')).to be false
|
347
346
|
end
|
348
347
|
it 'should return true if nonce_timestamp Proc returns a random object' do
|
349
348
|
@server.nonce_timestamp = lambda {|n,t| n+t.to_s}
|
350
|
-
@server.validate_nonce_timestamp('nonce', 'timestamp').
|
349
|
+
expect(@server.validate_nonce_timestamp('nonce', 'timestamp')).to be true
|
351
350
|
end
|
352
351
|
end
|
353
352
|
|
@@ -363,25 +362,25 @@ describe Signet::OAuth1::Server, 'configured' do
|
|
363
362
|
|
364
363
|
it 'should raise an error if the client credential Proc is not set' do
|
365
364
|
@server.client_credential = nil
|
366
|
-
(lambda do
|
365
|
+
expect(lambda do
|
367
366
|
@server.authenticate_temporary_credential_request(
|
368
367
|
:request=>make_temporary_credential_request(@client)
|
369
368
|
)
|
370
|
-
end).
|
369
|
+
end).to raise_error(ArgumentError)
|
371
370
|
end
|
372
371
|
it 'should reject an malformed request' do
|
373
372
|
bad_request = make_temporary_credential_request(@client, nil, 'https://photos.example.net/photos')
|
374
373
|
bad_request.headers['Authorization'].gsub!(/(OAuth)(.+)/, "#{$1}")
|
375
|
-
(lambda do
|
374
|
+
expect(lambda do
|
376
375
|
@server.authenticate_temporary_credential_request(
|
377
376
|
:request=>bad_request
|
378
377
|
)
|
379
|
-
end).
|
378
|
+
end).to raise_error(Signet::MalformedAuthorizationError)
|
380
379
|
end
|
381
380
|
|
382
381
|
it 'should call a user-supplied Proc to validate a nonce/timestamp pair' do
|
383
|
-
nonce_callback =
|
384
|
-
nonce_callback.
|
382
|
+
nonce_callback = double('nonce')
|
383
|
+
expect(nonce_callback).to receive(:call).once.with(an_instance_of(String),
|
385
384
|
an_instance_of(String)
|
386
385
|
).and_return(true)
|
387
386
|
|
@@ -393,44 +392,44 @@ describe Signet::OAuth1::Server, 'configured' do
|
|
393
392
|
|
394
393
|
it "should return 'oob' for a valid request without an oauth_callback" do
|
395
394
|
bad_request = make_temporary_credential_request(@client)
|
396
|
-
@server.authenticate_temporary_credential_request(
|
395
|
+
expect(@server.authenticate_temporary_credential_request(
|
397
396
|
:request=>bad_request
|
398
|
-
).
|
397
|
+
)).to eq 'oob'
|
399
398
|
end
|
400
399
|
it 'should return the oauth_callback for a valid request ' +
|
401
400
|
'with an oauth_callback' do
|
402
401
|
callback = 'http://printer.example.com/ready'
|
403
|
-
@server.authenticate_temporary_credential_request(
|
402
|
+
expect(@server.authenticate_temporary_credential_request(
|
404
403
|
:request=>make_temporary_credential_request(@client, callback)
|
405
|
-
).
|
404
|
+
)).to eq callback
|
406
405
|
end
|
407
406
|
it 'should return false for an unauthenticated request' do
|
408
407
|
bad_request = make_temporary_credential_request(@client)
|
409
408
|
bad_request.headers["Authorization"].gsub!(/oauth_signature=\".+\"/,
|
410
409
|
"oauth_signature=\"foobar\"")
|
411
|
-
@server.authenticate_temporary_credential_request(
|
410
|
+
expect(@server.authenticate_temporary_credential_request(
|
412
411
|
:request=>bad_request
|
413
|
-
).
|
412
|
+
)).to eq false
|
414
413
|
end
|
415
414
|
it 'should return nil from #request_realm if no realm is provided' do
|
416
415
|
req = make_temporary_credential_request(@client)
|
417
|
-
@server.request_realm(
|
416
|
+
expect(@server.request_realm(
|
418
417
|
:request=>req
|
419
|
-
).
|
418
|
+
)).to eq nil
|
420
419
|
end
|
421
420
|
|
422
421
|
describe 'with a Realm provided' do
|
423
422
|
it 'should return the realm from #request_realm' do
|
424
423
|
req = make_temporary_credential_request(@client, nil, nil, 'Photos')
|
425
|
-
@server.request_realm(
|
424
|
+
expect(@server.request_realm(
|
426
425
|
:request=>req
|
427
|
-
).
|
426
|
+
)).to eq 'Photos'
|
428
427
|
end
|
429
428
|
it 'should return "oob" with a valid request without an oauth_callback' do
|
430
429
|
req = make_temporary_credential_request(@client, nil, nil, 'Photos')
|
431
|
-
@server.authenticate_temporary_credential_request(
|
430
|
+
expect(@server.authenticate_temporary_credential_request(
|
432
431
|
:request=>req
|
433
|
-
).
|
432
|
+
)).to eq 'oob'
|
434
433
|
end
|
435
434
|
end
|
436
435
|
|
@@ -456,15 +455,15 @@ describe Signet::OAuth1::Server, 'configured' do
|
|
456
455
|
bad_request = make_token_credential_request(@client)
|
457
456
|
bad_request.headers["Authorization"].gsub!(/(OAuth)(.+)/, "#{$1}")
|
458
457
|
|
459
|
-
(lambda do
|
458
|
+
expect(lambda do
|
460
459
|
@server.authenticate_token_credential_request(
|
461
460
|
:request=>bad_request
|
462
461
|
)
|
463
|
-
end).
|
462
|
+
end).to raise_error(Signet::MalformedAuthorizationError)
|
464
463
|
end
|
465
464
|
it 'should call a user-supplied Proc to validate a nonce/timestamp pair' do
|
466
|
-
nonce_callback =
|
467
|
-
nonce_callback.
|
465
|
+
nonce_callback = double('nonce')
|
466
|
+
expect(nonce_callback).to receive(:call).once.with(
|
468
467
|
an_instance_of(String), an_instance_of(String)
|
469
468
|
).and_return(true)
|
470
469
|
@server.nonce_timestamp = nonce_callback
|
@@ -473,23 +472,23 @@ describe Signet::OAuth1::Server, 'configured' do
|
|
473
472
|
)
|
474
473
|
end
|
475
474
|
it 'should return an informational hash for a valid request' do
|
476
|
-
@server.authenticate_token_credential_request(
|
475
|
+
expect(@server.authenticate_token_credential_request(
|
477
476
|
:request=>make_token_credential_request(@client)
|
478
|
-
).
|
477
|
+
)).to eq @return_hash
|
479
478
|
end
|
480
479
|
it 'should return nil for an unauthenticated request' do
|
481
480
|
bad_request = make_token_credential_request(@client)
|
482
481
|
bad_request.headers["Authorization"].gsub!(/oauth_signature=\".+\"/,
|
483
482
|
"oauth_signature=\"foobar\"")
|
484
|
-
@server.authenticate_token_credential_request(
|
483
|
+
expect(@server.authenticate_token_credential_request(
|
485
484
|
:request=>bad_request
|
486
|
-
).
|
485
|
+
)).to eq nil
|
487
486
|
end
|
488
487
|
it 'should call a user-supplied Proc to fetch the client credential' do
|
489
488
|
client_cred = Signet::OAuth1::Credential.new(@client_credential_key,
|
490
489
|
@client_credential_secret )
|
491
|
-
key_callback =
|
492
|
-
key_callback.
|
490
|
+
key_callback = double('client_cred')
|
491
|
+
expect(key_callback).to receive(:call).at_least(:once).with(
|
493
492
|
@client_credential_key
|
494
493
|
).and_return(client_cred)
|
495
494
|
|
@@ -502,8 +501,8 @@ describe Signet::OAuth1::Server, 'configured' do
|
|
502
501
|
it 'should call a user-supplied Proc to fetch the temporary token credential' do
|
503
502
|
temp_cred = Signet::OAuth1::Credential.new(@temporary_credential_key,
|
504
503
|
@temporary_credential_secret)
|
505
|
-
temp_callback =
|
506
|
-
temp_callback.
|
504
|
+
temp_callback = double('temp_cred')
|
505
|
+
expect(temp_callback).to receive(:call).at_least(:once).with(
|
507
506
|
@temporary_credential_key
|
508
507
|
).and_return(temp_cred)
|
509
508
|
|
@@ -514,9 +513,9 @@ describe Signet::OAuth1::Server, 'configured' do
|
|
514
513
|
end
|
515
514
|
it 'should return nil from #request_realm if no realm is provided' do
|
516
515
|
req = make_token_credential_request(@client)
|
517
|
-
@server.request_realm(
|
516
|
+
expect(@server.request_realm(
|
518
517
|
:request=>req
|
519
|
-
).
|
518
|
+
)).to eq nil
|
520
519
|
end
|
521
520
|
|
522
521
|
describe 'with a Realm provided' do
|
@@ -526,15 +525,15 @@ describe Signet::OAuth1::Server, 'configured' do
|
|
526
525
|
end
|
527
526
|
it 'should return the realm from #request_realm' do
|
528
527
|
req = make_token_credential_request(@client, nil, @realm)
|
529
|
-
@server.request_realm(
|
528
|
+
expect(@server.request_realm(
|
530
529
|
:request=>req
|
531
|
-
).
|
530
|
+
)).to eq @realm
|
532
531
|
end
|
533
532
|
it 'should an informational hash with a valid request' do
|
534
533
|
req = make_token_credential_request(@client, nil, @realm)
|
535
|
-
@server.authenticate_token_credential_request(
|
534
|
+
expect(@server.authenticate_token_credential_request(
|
536
535
|
:request=>req
|
537
|
-
).
|
536
|
+
)).to eq @return_hash
|
538
537
|
end
|
539
538
|
end
|
540
539
|
|
@@ -562,7 +561,7 @@ describe Signet::OAuth1::Server, 'configured' do
|
|
562
561
|
:body => ['A chunked body.'],
|
563
562
|
:headers => make_oauth_signature_header
|
564
563
|
)
|
565
|
-
approved.
|
564
|
+
expect(approved).to eq nil
|
566
565
|
end
|
567
566
|
|
568
567
|
it 'should not raise an error if a request body is chunked(as StringIO)' do
|
@@ -575,18 +574,18 @@ describe Signet::OAuth1::Server, 'configured' do
|
|
575
574
|
:body => chunked_body,
|
576
575
|
:headers => make_oauth_signature_header
|
577
576
|
)
|
578
|
-
approved.
|
577
|
+
expect(approved).to eq nil
|
579
578
|
end
|
580
579
|
|
581
580
|
it 'should raise an error if a request body is of a bogus type' do
|
582
|
-
(lambda do
|
581
|
+
expect(lambda do
|
583
582
|
@server.authenticate_resource_request(
|
584
583
|
:method => 'POST',
|
585
584
|
:uri => 'https://photos.example.net/photos',
|
586
585
|
:body => 42,
|
587
586
|
:headers => make_oauth_signature_header
|
588
587
|
)
|
589
|
-
end).
|
588
|
+
end).to raise_error(TypeError)
|
590
589
|
end
|
591
590
|
it 'should use form parameters in signature if request is a POSTed form' do
|
592
591
|
req = make_resource_request(
|
@@ -594,7 +593,7 @@ describe Signet::OAuth1::Server, 'configured' do
|
|
594
593
|
{:method=>'POST',
|
595
594
|
:headers=>{'Content-Type'=>'application/x-www-form-urlencoded'},
|
596
595
|
:body=>'c2&a3=2+q'})
|
597
|
-
@server.authenticate_resource_request(:request=>req).
|
596
|
+
expect(@server.authenticate_resource_request(:request=>req)).to eq @return_hash
|
598
597
|
end
|
599
598
|
it 'should raise an error if signature is x-www-form-encoded ' +
|
600
599
|
'but does not send form parameters in header' do
|
@@ -609,17 +608,17 @@ describe Signet::OAuth1::Server, 'configured' do
|
|
609
608
|
|
610
609
|
req.headers["Authorization"].gsub!(/c2=\"\", a3=\"2%20q\", /, '')
|
611
610
|
|
612
|
-
(lambda do
|
611
|
+
expect(lambda do
|
613
612
|
@server.authenticate_resource_request(:request=>req)
|
614
|
-
end).
|
613
|
+
end).to raise_error(Signet::MalformedAuthorizationError,
|
615
614
|
'Request is of type application/x-www-form-urlencoded but ' +
|
616
615
|
'Authentication header did not include form values'
|
617
616
|
)
|
618
617
|
end
|
619
618
|
|
620
619
|
it 'should call a user-supplied Proc to validate a nonce/timestamp pair' do
|
621
|
-
nonce_callback =
|
622
|
-
nonce_callback.
|
620
|
+
nonce_callback = double('nonce')
|
621
|
+
expect(nonce_callback).to receive(:call).once.with(
|
623
622
|
an_instance_of(String), an_instance_of(String)
|
624
623
|
).and_return(true)
|
625
624
|
|
@@ -632,8 +631,8 @@ describe Signet::OAuth1::Server, 'configured' do
|
|
632
631
|
it 'should call a user-supplied Proc to fetch the client credential' do
|
633
632
|
client_cred = Signet::OAuth1::Credential.new(@client_credential_key,
|
634
633
|
@client_credential_secret )
|
635
|
-
key_callback =
|
636
|
-
key_callback.
|
634
|
+
key_callback = double('client_cred' )
|
635
|
+
expect(key_callback).to receive(:call).at_least(:once).with(
|
637
636
|
@client_credential_key
|
638
637
|
).and_return(client_cred)
|
639
638
|
|
@@ -646,8 +645,8 @@ describe Signet::OAuth1::Server, 'configured' do
|
|
646
645
|
it 'should call a user-supplied Proc to fetch the token credential' do
|
647
646
|
token_cred = Signet::OAuth1::Credential.new(@token_credential_key,
|
648
647
|
@token_credential_secret)
|
649
|
-
key_callback =
|
650
|
-
key_callback.
|
648
|
+
key_callback = double('token_cred' )
|
649
|
+
expect(key_callback).to receive(:call).at_least(:once).with(
|
651
650
|
@token_credential_key
|
652
651
|
).and_return(token_cred)
|
653
652
|
|
@@ -658,21 +657,21 @@ describe Signet::OAuth1::Server, 'configured' do
|
|
658
657
|
end
|
659
658
|
|
660
659
|
it 'should return a Hash for a valid request' do
|
661
|
-
@server.authenticate_resource_request(
|
660
|
+
expect(@server.authenticate_resource_request(
|
662
661
|
:request=>make_resource_request(@client)
|
663
|
-
).
|
662
|
+
)).to eq @return_hash
|
664
663
|
end
|
665
664
|
it 'should return nil for a unauthenticated request' do
|
666
665
|
bad_request = make_resource_request(@client)
|
667
666
|
bad_request.headers["Authorization"].gsub!(/oauth_signature=\".+\"/,
|
668
667
|
"oauth_signature=\"foobar\"")
|
669
|
-
@server.authenticate_resource_request(:request=>bad_request).
|
668
|
+
expect(@server.authenticate_resource_request(:request=>bad_request)).to eq nil
|
670
669
|
end
|
671
670
|
it 'should return nil from #request_realm if no realm is provided' do
|
672
671
|
req = make_resource_request(@client)
|
673
|
-
@server.request_realm(
|
672
|
+
expect(@server.request_realm(
|
674
673
|
:request=>req
|
675
|
-
).
|
674
|
+
)).to eq nil
|
676
675
|
end
|
677
676
|
|
678
677
|
describe 'with a Realm provided' do
|
@@ -682,15 +681,15 @@ describe Signet::OAuth1::Server, 'configured' do
|
|
682
681
|
end
|
683
682
|
it 'should return the realm from #request_realm' do
|
684
683
|
req = make_resource_request(@client, {}, @realm)
|
685
|
-
@server.request_realm(
|
684
|
+
expect(@server.request_realm(
|
686
685
|
:request=>req
|
687
|
-
).
|
686
|
+
)).to eq @realm
|
688
687
|
end
|
689
688
|
it 'should return a hash containing the realm with a valid request' do
|
690
689
|
req = make_resource_request(@client, {}, @realm)
|
691
|
-
@server.authenticate_resource_request(
|
690
|
+
expect(@server.authenticate_resource_request(
|
692
691
|
:request=>req
|
693
|
-
).
|
692
|
+
)).to eq @return_hash
|
694
693
|
end
|
695
694
|
end
|
696
695
|
|
@@ -717,7 +716,7 @@ describe Signet::OAuth1::Server, 'configured' do
|
|
717
716
|
:headers => make_oauth_signature_header,
|
718
717
|
:two_legged=>true
|
719
718
|
)
|
720
|
-
approved.
|
719
|
+
expect(approved).to eq nil
|
721
720
|
end
|
722
721
|
|
723
722
|
it 'should not raise an error if a request body is chunked(as StringIO)' do
|
@@ -731,11 +730,11 @@ describe Signet::OAuth1::Server, 'configured' do
|
|
731
730
|
:headers => make_oauth_signature_header,
|
732
731
|
:two_legged=>true
|
733
732
|
)
|
734
|
-
approved.
|
733
|
+
expect(approved).to eq nil
|
735
734
|
end
|
736
735
|
|
737
736
|
it 'should raise an error if a request body is of a bogus type' do
|
738
|
-
(lambda do
|
737
|
+
expect(lambda do
|
739
738
|
@server.authenticate_resource_request(
|
740
739
|
:method => 'POST',
|
741
740
|
:uri => 'https://photos.example.net/photos',
|
@@ -743,7 +742,7 @@ describe Signet::OAuth1::Server, 'configured' do
|
|
743
742
|
:headers => make_oauth_signature_header,
|
744
743
|
:two_legged=>true
|
745
744
|
)
|
746
|
-
end).
|
745
|
+
end).to raise_error(TypeError)
|
747
746
|
end
|
748
747
|
it 'should use form parameters in signature if request is a POSTed form' do
|
749
748
|
req = make_resource_request(
|
@@ -752,9 +751,9 @@ describe Signet::OAuth1::Server, 'configured' do
|
|
752
751
|
:headers=>{'Content-Type'=>'application/x-www-form-urlencoded'},
|
753
752
|
:body=>'c2&a3=2+q'}
|
754
753
|
)
|
755
|
-
@server.authenticate_resource_request(
|
754
|
+
expect(@server.authenticate_resource_request(
|
756
755
|
:request=>req, :two_legged=>true
|
757
|
-
).
|
756
|
+
)).to eq @return_hash
|
758
757
|
end
|
759
758
|
it 'should raise an error if signature is x-www-form-encoded '+
|
760
759
|
'but does not send form parameters in header' do
|
@@ -770,17 +769,17 @@ describe Signet::OAuth1::Server, 'configured' do
|
|
770
769
|
|
771
770
|
req.headers["Authorization"].gsub!(/c2=\"\", a3=\"2%20q\", /, '')
|
772
771
|
|
773
|
-
(lambda do
|
772
|
+
expect(lambda do
|
774
773
|
@server.authenticate_resource_request(:request=>req, :two_legged=>true)
|
775
|
-
end).
|
774
|
+
end).to raise_error(Signet::MalformedAuthorizationError,
|
776
775
|
'Request is of type application/x-www-form-urlencoded but '+
|
777
776
|
'Authentication header did not include form values'
|
778
777
|
)
|
779
778
|
end
|
780
779
|
|
781
780
|
it 'should call a user-supplied Proc to validate a nonce/timestamp pair' do
|
782
|
-
nonce_callback =
|
783
|
-
nonce_callback.
|
781
|
+
nonce_callback = double('nonce')
|
782
|
+
expect(nonce_callback).to receive(:call).once.with(
|
784
783
|
an_instance_of(String), an_instance_of(String)
|
785
784
|
).and_return(true)
|
786
785
|
|
@@ -793,8 +792,8 @@ describe Signet::OAuth1::Server, 'configured' do
|
|
793
792
|
it 'should call a user-supplied Proc to fetch the client credential' do
|
794
793
|
client_cred = Signet::OAuth1::Credential.new(@client_credential_key,
|
795
794
|
@client_credential_secret )
|
796
|
-
key_callback =
|
797
|
-
key_callback.
|
795
|
+
key_callback = double('client_cred')
|
796
|
+
expect(key_callback).to receive(:call).at_least(:once).with(
|
798
797
|
@client_credential_key
|
799
798
|
).and_return(client_cred)
|
800
799
|
|
@@ -805,21 +804,21 @@ describe Signet::OAuth1::Server, 'configured' do
|
|
805
804
|
end
|
806
805
|
|
807
806
|
it 'should return a informational hash for a valid request' do
|
808
|
-
@server.authenticate_resource_request(
|
807
|
+
expect(@server.authenticate_resource_request(
|
809
808
|
:request=>make_resource_request(@client), :two_legged=>true
|
810
|
-
).
|
809
|
+
)).to eq @return_hash
|
811
810
|
end
|
812
811
|
it 'should return false for a unauthenticated request' do
|
813
812
|
bad_request = make_resource_request(@client)
|
814
813
|
bad_request.headers["Authorization"].gsub!(/oauth_signature=\".+\"/,
|
815
814
|
"oauth_signature=\"foobar\"")
|
816
|
-
@server.authenticate_resource_request(:request=>bad_request).
|
815
|
+
expect(@server.authenticate_resource_request(:request=>bad_request)).to eq nil
|
817
816
|
end
|
818
817
|
it 'should return nil from #request_realm if no realm is provided' do
|
819
818
|
req = make_resource_request(@client)
|
820
|
-
@server.request_realm(
|
819
|
+
expect(@server.request_realm(
|
821
820
|
:request=>req
|
822
|
-
).
|
821
|
+
)).to eq nil
|
823
822
|
end
|
824
823
|
describe 'with a Realm provided' do
|
825
824
|
before do
|
@@ -828,16 +827,16 @@ describe Signet::OAuth1::Server, 'configured' do
|
|
828
827
|
end
|
829
828
|
it 'should return the realm from #request_realm' do
|
830
829
|
req = make_resource_request(@client, {}, @realm)
|
831
|
-
@server.request_realm(
|
830
|
+
expect(@server.request_realm(
|
832
831
|
:request=>req, :two_legged=>true
|
833
|
-
).
|
832
|
+
)).to eq @realm
|
834
833
|
end
|
835
834
|
|
836
835
|
it 'should return a hash containing the realm with a valid request' do
|
837
836
|
req = make_resource_request(@client, {}, @realm)
|
838
|
-
@server.authenticate_resource_request(
|
837
|
+
expect(@server.authenticate_resource_request(
|
839
838
|
:request=>req, :two_legged=>true
|
840
|
-
).
|
839
|
+
)).to eq @return_hash
|
841
840
|
end
|
842
841
|
end
|
843
842
|
|