signet 0.2.4 → 0.3.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.
- data/{CHANGELOG → CHANGELOG.md} +13 -6
- data/README.md +1 -3
- data/Rakefile +1 -1
- data/lib/signet/errors.rb +2 -2
- data/lib/signet/oauth_1/client.rb +78 -125
- data/lib/signet/oauth_2.rb +6 -6
- data/lib/signet/oauth_2/client.rb +103 -137
- data/lib/signet/version.rb +2 -2
- data/spec/signet/oauth_1/client_spec.rb +31 -34
- data/spec/signet/oauth_1/services/google_spec.rb +72 -94
- data/spec/signet/oauth_2/client_spec.rb +577 -0
- data/spec/signet/oauth_2_spec.rb +22 -0
- data/tasks/gem.rake +3 -4
- data/tasks/git.rake +1 -1
- data/tasks/rdoc.rake +1 -1
- data/tasks/rubyforge.rake +1 -1
- data/tasks/spec.rake +6 -1
- data/tasks/wiki.rake +38 -0
- data/tasks/yard.rake +1 -1
- metadata +11 -21
@@ -12,11 +12,17 @@
|
|
12
12
|
# See the License for the specific language governing permissions and
|
13
13
|
# limitations under the License.
|
14
14
|
|
15
|
+
gem 'faraday', '~> 0.7.0'
|
16
|
+
require 'faraday'
|
17
|
+
require 'faraday/utils'
|
18
|
+
|
15
19
|
require 'stringio'
|
16
20
|
require 'addressable/uri'
|
17
21
|
require 'signet'
|
18
22
|
require 'signet/errors'
|
19
23
|
require 'signet/oauth_2'
|
24
|
+
|
25
|
+
gem 'jwt', '~> 0.1.4'
|
20
26
|
require 'jwt'
|
21
27
|
|
22
28
|
module Signet
|
@@ -52,11 +58,6 @@ module Signet
|
|
52
58
|
# The resource owner's username.
|
53
59
|
# - <code>:password</code> —
|
54
60
|
# The resource owner's password.
|
55
|
-
# - <code>:assertion_type</code> —
|
56
|
-
# The format of the assertion as defined by the
|
57
|
-
# authorization server. The value must be an absolute URI.
|
58
|
-
# - <code>:assertion</code> —
|
59
|
-
# The raw assertion value.
|
60
61
|
# - <code>:refresh_token</code> —
|
61
62
|
# The refresh token associated with the access token
|
62
63
|
# to be refreshed.
|
@@ -64,6 +65,9 @@ module Signet
|
|
64
65
|
# The current access token for this client.
|
65
66
|
# - <code>:id_token</code> —
|
66
67
|
# The current ID token for this client.
|
68
|
+
# - <code>:extension_parameters</code> —
|
69
|
+
# When using an extension grant type, this the set of parameters used
|
70
|
+
# by that extension.
|
67
71
|
#
|
68
72
|
# @example
|
69
73
|
# client = Signet::OAuth2::Client.new(
|
@@ -112,11 +116,6 @@ module Signet
|
|
112
116
|
# The resource owner's username.
|
113
117
|
# - <code>:password</code> —
|
114
118
|
# The resource owner's password.
|
115
|
-
# - <code>:assertion_type</code> —
|
116
|
-
# The format of the assertion as defined by the
|
117
|
-
# authorization server. The value must be an absolute URI.
|
118
|
-
# - <code>:assertion</code> —
|
119
|
-
# The raw assertion value.
|
120
119
|
# - <code>:refresh_token</code> —
|
121
120
|
# The refresh token associated with the access token
|
122
121
|
# to be refreshed.
|
@@ -124,8 +123,9 @@ module Signet
|
|
124
123
|
# The current access token for this client.
|
125
124
|
# - <code>:id_token</code> —
|
126
125
|
# The current ID token for this client.
|
127
|
-
# - <code>:
|
128
|
-
#
|
126
|
+
# - <code>:extension_parameters</code> —
|
127
|
+
# When using an extension grant type, this the set of parameters used
|
128
|
+
# by that extension.
|
129
129
|
#
|
130
130
|
# @example
|
131
131
|
# client.update!(
|
@@ -138,10 +138,7 @@ module Signet
|
|
138
138
|
# @see Signet::OAuth2::Client#update_token!
|
139
139
|
def update!(options={})
|
140
140
|
# Normalize key to String to allow indifferent access.
|
141
|
-
options = options.inject({})
|
142
|
-
accu[key.to_s] = value
|
143
|
-
accu
|
144
|
-
end
|
141
|
+
options = options.inject({}) { |accu, (k, v)| accu[k.to_s] = v; accu }
|
145
142
|
self.authorization_uri = options["authorization_uri"]
|
146
143
|
self.token_credential_uri = options["token_credential_uri"]
|
147
144
|
self.client_id = options["client_id"]
|
@@ -152,8 +149,7 @@ module Signet
|
|
152
149
|
self.redirect_uri = options["redirect_uri"]
|
153
150
|
self.username = options["username"]
|
154
151
|
self.password = options["password"]
|
155
|
-
self.
|
156
|
-
self.assertion = options["assertion"]
|
152
|
+
self.extension_parameters = options["extension_parameters"] || {}
|
157
153
|
self.update_token!(options)
|
158
154
|
return self
|
159
155
|
end
|
@@ -171,7 +167,7 @@ module Signet
|
|
171
167
|
# - <code>:id_token</code> —
|
172
168
|
# The current ID token for this client.
|
173
169
|
# - <code>:expires_in</code> —
|
174
|
-
# The
|
170
|
+
# The time in seconds until access token expiration.
|
175
171
|
# - <code>:issued_at</code> —
|
176
172
|
# The timestamp that the token was issued at.
|
177
173
|
#
|
@@ -186,10 +182,7 @@ module Signet
|
|
186
182
|
# @see Signet::OAuth2::Client#update!
|
187
183
|
def update_token!(options={})
|
188
184
|
# Normalize key to String to allow indifferent access.
|
189
|
-
options = options.inject({})
|
190
|
-
accu[key.to_s] = value
|
191
|
-
accu
|
192
|
-
end
|
185
|
+
options = options.inject({}) { |accu, (k, v)| accu[k.to_s] = v; accu }
|
193
186
|
|
194
187
|
self.access_token = options["access_token"] if options["access_token"]
|
195
188
|
self.expires_in = options["expires_in"] if options["expires_in"]
|
@@ -233,7 +226,7 @@ module Signet
|
|
233
226
|
end
|
234
227
|
options[:client_id] ||= self.client_id
|
235
228
|
options[:redirect_uri] ||= self.redirect_uri
|
236
|
-
|
229
|
+
if !options[:client_id]
|
237
230
|
raise ArgumentError, "Missing required client identifier."
|
238
231
|
end
|
239
232
|
unless options[:redirect_uri]
|
@@ -348,7 +341,7 @@ module Signet
|
|
348
341
|
when Array
|
349
342
|
new_scope.each do |scope|
|
350
343
|
if scope.include?(' ')
|
351
|
-
raise
|
344
|
+
raise ArgumentError,
|
352
345
|
"Individual scopes cannot contain the space character."
|
353
346
|
end
|
354
347
|
end
|
@@ -459,48 +452,29 @@ module Signet
|
|
459
452
|
end
|
460
453
|
|
461
454
|
##
|
462
|
-
# Returns the
|
463
|
-
# Used only by
|
455
|
+
# Returns the set of extension parameters used by the client.
|
456
|
+
# Used only by extension access grant types.
|
464
457
|
#
|
465
|
-
# @return [
|
466
|
-
def
|
467
|
-
return @
|
458
|
+
# @return [Hash] The extension parameters.
|
459
|
+
def extension_parameters
|
460
|
+
return @extension_parameters ||= {}
|
468
461
|
end
|
469
462
|
|
470
463
|
##
|
471
|
-
# Sets
|
472
|
-
# Used only by
|
464
|
+
# Sets extension parameters used by the client.
|
465
|
+
# Used only by extension access grant types.
|
473
466
|
#
|
474
|
-
# @param [
|
475
|
-
# The
|
476
|
-
def
|
477
|
-
|
478
|
-
|
479
|
-
@assertion_type = new_assertion_type
|
467
|
+
# @param [Hash] new_extension_parameters
|
468
|
+
# The parameters.
|
469
|
+
def extension_parameters=(new_extension_parameters)
|
470
|
+
if new_extension_parameters.respond_to?(:to_hash)
|
471
|
+
@extension_parameters = new_extension_parameters.to_hash
|
480
472
|
else
|
481
|
-
raise
|
473
|
+
raise TypeError,
|
474
|
+
"Expected Hash, got #{new_extension_parameters.class}."
|
482
475
|
end
|
483
476
|
end
|
484
477
|
|
485
|
-
##
|
486
|
-
# Returns the assertion associated with this client.
|
487
|
-
# Used only by the assertion access grant type.
|
488
|
-
#
|
489
|
-
# @return [String] The assertion.
|
490
|
-
def assertion
|
491
|
-
return @assertion
|
492
|
-
end
|
493
|
-
|
494
|
-
##
|
495
|
-
# Sets the assertion associated with this client.
|
496
|
-
# Used only by the assertion access grant type.
|
497
|
-
#
|
498
|
-
# @param [String] new_assertion
|
499
|
-
# The assertion.
|
500
|
-
def assertion=(new_assertion)
|
501
|
-
@assertion = new_assertion
|
502
|
-
end
|
503
|
-
|
504
478
|
##
|
505
479
|
# Returns the refresh token associated with this client.
|
506
480
|
#
|
@@ -622,7 +596,7 @@ module Signet
|
|
622
596
|
# @return [TrueClass, FalseClass]
|
623
597
|
# The expiration state of the access token.
|
624
598
|
def expired?
|
625
|
-
return self.expires_at
|
599
|
+
return self.expires_at != nil && Time.now >= self.expires_at
|
626
600
|
end
|
627
601
|
|
628
602
|
##
|
@@ -633,18 +607,31 @@ module Signet
|
|
633
607
|
# @return [String]
|
634
608
|
# The inferred grant type.
|
635
609
|
def grant_type
|
636
|
-
if
|
637
|
-
return
|
638
|
-
elsif self.assertion && self.assertion_type
|
639
|
-
return 'assertion'
|
640
|
-
elsif self.refresh_token
|
641
|
-
return 'refresh_token'
|
642
|
-
elsif self.username && self.password
|
643
|
-
return 'password'
|
610
|
+
if @grant_type
|
611
|
+
return @grant_type
|
644
612
|
else
|
645
|
-
|
646
|
-
|
647
|
-
|
613
|
+
if self.code && self.redirect_uri
|
614
|
+
'authorization_code'
|
615
|
+
elsif self.refresh_token
|
616
|
+
'refresh_token'
|
617
|
+
elsif self.username && self.password
|
618
|
+
'password'
|
619
|
+
else
|
620
|
+
# We don't have sufficient auth information, assume an out-of-band
|
621
|
+
# authorization arrangement between the client and server, or an
|
622
|
+
# extension grant type.
|
623
|
+
nil
|
624
|
+
end
|
625
|
+
end
|
626
|
+
end
|
627
|
+
|
628
|
+
def grant_type=(new_grant_type)
|
629
|
+
case new_grant_type
|
630
|
+
when 'authorization_code', 'refresh_token',
|
631
|
+
'password', 'client_credentials'
|
632
|
+
@grant_type = new_grant_type
|
633
|
+
else
|
634
|
+
@grant_type = Addressable::URI.parse(new_grant_type)
|
648
635
|
end
|
649
636
|
end
|
650
637
|
|
@@ -657,7 +644,7 @@ module Signet
|
|
657
644
|
# The authorization code.
|
658
645
|
#
|
659
646
|
# @return [Array] The request object.
|
660
|
-
def generate_access_token_request
|
647
|
+
def generate_access_token_request(options={})
|
661
648
|
if self.token_credential_uri == nil
|
662
649
|
raise ArgumentError, 'Missing token endpoint URI.'
|
663
650
|
end
|
@@ -676,9 +663,6 @@ module Signet
|
|
676
663
|
when 'password'
|
677
664
|
parameters['username'] = self.username
|
678
665
|
parameters['password'] = self.password
|
679
|
-
when 'assertion'
|
680
|
-
parameters['assertion_type'] = self.assertion_type
|
681
|
-
parameters['assertion'] = self.assertion
|
682
666
|
when 'refresh_token'
|
683
667
|
parameters['refresh_token'] = self.refresh_token
|
684
668
|
else
|
@@ -694,44 +678,32 @@ module Signet
|
|
694
678
|
['Cache-Control', 'no-store'],
|
695
679
|
['Content-Type', 'application/x-www-form-urlencoded']
|
696
680
|
]
|
697
|
-
return
|
698
|
-
|
699
|
-
|
700
|
-
|
701
|
-
|
702
|
-
]
|
681
|
+
return Faraday::Request.create(method.to_s.downcase.to_sym) do |req|
|
682
|
+
req.url(Addressable::URI.parse(self.token_credential_uri))
|
683
|
+
req.headers = Faraday::Utils::Headers.new(headers)
|
684
|
+
req.body = Addressable::URI.form_encode(parameters)
|
685
|
+
end
|
703
686
|
end
|
704
687
|
|
705
688
|
def fetch_access_token(options={})
|
706
|
-
|
707
|
-
|
708
|
-
|
709
|
-
|
710
|
-
|
711
|
-
|
712
|
-
|
713
|
-
request = self.generate_access_token_request
|
714
|
-
response = adapter.transmit(request, connection)
|
715
|
-
status, headers, body = response
|
716
|
-
merged_body = StringIO.new
|
717
|
-
body.each do |chunk|
|
718
|
-
merged_body.write(chunk)
|
719
|
-
end
|
720
|
-
body = merged_body.string
|
721
|
-
if status.to_i == 200
|
722
|
-
return ::Signet::OAuth2.parse_json_credentials(body)
|
723
|
-
elsif [400, 401, 403].include?(status.to_i)
|
689
|
+
options[:connection] ||= Faraday.default_connection
|
690
|
+
request = self.generate_access_token_request(options)
|
691
|
+
request_env = request.to_env(options[:connection])
|
692
|
+
response = options[:connection].app.call(request_env)
|
693
|
+
if response.status.to_i == 200
|
694
|
+
return ::Signet::OAuth2.parse_json_credentials(response.body)
|
695
|
+
elsif [400, 401, 403].include?(response.status.to_i)
|
724
696
|
message = 'Authorization failed.'
|
725
|
-
if body.strip.length > 0
|
726
|
-
message += " Server message:\n#{body.strip}"
|
697
|
+
if response.body.to_s.strip.length > 0
|
698
|
+
message += " Server message:\n#{response.body.to_s.strip}"
|
727
699
|
end
|
728
700
|
raise ::Signet::AuthorizationError.new(
|
729
701
|
message, :request => request, :response => response
|
730
702
|
)
|
731
703
|
else
|
732
|
-
message = "Unexpected status code: #{status}."
|
733
|
-
if body.strip.length > 0
|
734
|
-
message += " Server message:\n#{body.strip}"
|
704
|
+
message = "Unexpected status code: #{response.status}."
|
705
|
+
if response.body.to_s.strip.length > 0
|
706
|
+
message += " Server message:\n#{response.body.to_s.strip}"
|
735
707
|
end
|
736
708
|
raise ::Signet::AuthorizationError.new(
|
737
709
|
message, :request => request, :response => response
|
@@ -782,13 +754,21 @@ module Signet
|
|
782
754
|
}.merge(options)
|
783
755
|
if options[:request]
|
784
756
|
if options[:request].kind_of?(Array)
|
785
|
-
|
786
|
-
elsif options[:
|
787
|
-
|
757
|
+
method, uri, headers, body = options[:request]
|
758
|
+
elsif options[:request].kind_of?(Faraday::Request)
|
759
|
+
unless options[:connection]
|
760
|
+
raise ArgumentError,
|
761
|
+
"Faraday::Request used, requires a connection to be provided."
|
762
|
+
end
|
763
|
+
method = options[:request].method.to_s.downcase.to_sym
|
764
|
+
uri = options[:connection].build_url(
|
765
|
+
options[:request].path, options[:request].params
|
766
|
+
)
|
767
|
+
headers = options[:request].headers || {}
|
768
|
+
body = options[:request].body || ''
|
788
769
|
end
|
789
|
-
method, uri, headers, body = request
|
790
770
|
else
|
791
|
-
method = options[:method] ||
|
771
|
+
method = options[:method] || :get
|
792
772
|
uri = options[:uri]
|
793
773
|
headers = options[:headers] || []
|
794
774
|
body = options[:body] || ''
|
@@ -817,16 +797,20 @@ module Signet
|
|
817
797
|
if !body.kind_of?(String)
|
818
798
|
raise TypeError, "Expected String, got #{body.class}."
|
819
799
|
end
|
820
|
-
method = method.to_s.
|
800
|
+
method = method.to_s.downcase.to_sym
|
821
801
|
headers << [
|
822
802
|
'Authorization',
|
823
803
|
::Signet::OAuth2.generate_bearer_authorization_header(
|
824
804
|
self.access_token,
|
825
|
-
options[:realm] ? ['realm', options[:realm]] : nil
|
805
|
+
options[:realm] ? [['realm', options[:realm]]] : nil
|
826
806
|
)
|
827
807
|
]
|
828
808
|
headers << ['Cache-Control', 'no-store']
|
829
|
-
return
|
809
|
+
return Faraday::Request.create(method.to_s.downcase.to_sym) do |req|
|
810
|
+
req.url(Addressable::URI.parse(uri))
|
811
|
+
req.headers = Faraday::Utils::Headers.new(headers)
|
812
|
+
req.body = body
|
813
|
+
end
|
830
814
|
end
|
831
815
|
|
832
816
|
##
|
@@ -848,21 +832,15 @@ module Signet
|
|
848
832
|
# The HTTP body for the request.
|
849
833
|
# - <code>:realm</code> —
|
850
834
|
# The Authorization realm. See RFC 2617.
|
851
|
-
# - <code>:adapter</code> —
|
852
|
-
# The HTTP adapter.
|
853
|
-
# Defaults to <code>HTTPAdapter::NetHTTPAdapter.new</code>.
|
854
835
|
# - <code>:connection</code> —
|
855
|
-
#
|
856
|
-
# Must be of type <code>
|
857
|
-
# internal connection representation must match the HTTP adapter
|
858
|
-
# being used.
|
836
|
+
# The HTTP connection to use.
|
837
|
+
# Must be of type <code>Faraday::Connection</code>.
|
859
838
|
#
|
860
839
|
# @example
|
861
840
|
# # Using Net::HTTP
|
862
841
|
# response = client.fetch_protected_resource(
|
863
842
|
# :uri => 'http://www.example.com/protected/resource'
|
864
843
|
# )
|
865
|
-
# status, headers, body = response
|
866
844
|
#
|
867
845
|
# @example
|
868
846
|
# # Using Typhoeus
|
@@ -873,31 +851,19 @@ module Signet
|
|
873
851
|
# :adapter => HTTPAdapter::TyphoeusAdapter.new,
|
874
852
|
# :connection => connection
|
875
853
|
# )
|
876
|
-
# status, headers, body = response
|
877
854
|
#
|
878
855
|
# @return [Array] The response object.
|
879
856
|
def fetch_protected_resource(options={})
|
880
|
-
|
881
|
-
unless adapter
|
882
|
-
require 'httpadapter'
|
883
|
-
require 'httpadapter/adapters/net_http'
|
884
|
-
adapter = HTTPAdapter::NetHTTPAdapter.new
|
885
|
-
end
|
886
|
-
connection = options[:connection]
|
857
|
+
options[:connection] ||= Faraday.default_connection
|
887
858
|
request = self.generate_authenticated_request(options)
|
888
|
-
|
889
|
-
|
890
|
-
|
891
|
-
body.each do |chunk|
|
892
|
-
merged_body.write(chunk)
|
893
|
-
end
|
894
|
-
body = merged_body.string
|
895
|
-
if status.to_i == 401
|
859
|
+
request_env = request.to_env(options[:connection])
|
860
|
+
response = options[:connection].app.call(request_env)
|
861
|
+
if response.status.to_i == 401
|
896
862
|
# When accessing a protected resource, we only want to raise an
|
897
863
|
# error for 401 responses.
|
898
864
|
message = 'Authorization failed.'
|
899
|
-
if body.strip.length > 0
|
900
|
-
message += " Server message:\n#{body.strip}"
|
865
|
+
if response.body.to_s.strip.length > 0
|
866
|
+
message += " Server message:\n#{response.body.to_s.strip}"
|
901
867
|
end
|
902
868
|
raise ::Signet::AuthorizationError.new(
|
903
869
|
message, :request => request, :response => response
|
data/lib/signet/version.rb
CHANGED
@@ -19,6 +19,9 @@ require 'addressable/uri'
|
|
19
19
|
require 'stringio'
|
20
20
|
|
21
21
|
def merge_body(chunked_body)
|
22
|
+
if chunked_body == nil
|
23
|
+
raise ArgumentError, "Expected chunked body, got nil."
|
24
|
+
end
|
22
25
|
merged_body = StringIO.new
|
23
26
|
chunked_body.each do |chunk|
|
24
27
|
merged_body.write(chunk)
|
@@ -513,6 +516,16 @@ describe Signet::OAuth1::Client, 'configured' do
|
|
513
516
|
end).should raise_error(ArgumentError)
|
514
517
|
end
|
515
518
|
|
519
|
+
it 'should raise an error if a request is provided without a connection' do
|
520
|
+
(lambda do
|
521
|
+
@client.generate_authenticated_request(
|
522
|
+
:request => Faraday::Request.new(:get) do |req|
|
523
|
+
req.url('http://www.example.com/')
|
524
|
+
end
|
525
|
+
)
|
526
|
+
end).should raise_error(ArgumentError)
|
527
|
+
end
|
528
|
+
|
516
529
|
it 'should raise an error if no URI is provided' do
|
517
530
|
(lambda do
|
518
531
|
@client.generate_authenticated_request(
|
@@ -529,8 +542,8 @@ describe Signet::OAuth1::Client, 'configured' do
|
|
529
542
|
:uri => 'https://photos.example.net/photos',
|
530
543
|
:body => ['A chunked body.']
|
531
544
|
)
|
532
|
-
|
533
|
-
|
545
|
+
request.should be_kind_of(Faraday::Request)
|
546
|
+
request.body.should == 'A chunked body.'
|
534
547
|
end
|
535
548
|
|
536
549
|
it 'should not raise an error if a request body is chunked' do
|
@@ -542,8 +555,8 @@ describe Signet::OAuth1::Client, 'configured' do
|
|
542
555
|
:uri => 'https://photos.example.net/photos',
|
543
556
|
:body => chunked_body
|
544
557
|
)
|
545
|
-
|
546
|
-
|
558
|
+
request.should be_kind_of(Faraday::Request)
|
559
|
+
request.body.should == 'A chunked body.'
|
547
560
|
end
|
548
561
|
|
549
562
|
it 'should raise an error if a request body is of a bogus type' do
|
@@ -560,13 +573,9 @@ describe Signet::OAuth1::Client, 'configured' do
|
|
560
573
|
# Repeat this because signatures change from test to test
|
561
574
|
10.times do
|
562
575
|
request = @client.generate_temporary_credential_request
|
563
|
-
method
|
564
|
-
|
565
|
-
|
566
|
-
authorization_header = nil
|
567
|
-
headers.each do |(header, value)|
|
568
|
-
authorization_header = value if header == 'Authorization'
|
569
|
-
end
|
576
|
+
request.method.should == :post
|
577
|
+
request.path.should === 'http://example.com/temporary_credentials'
|
578
|
+
authorization_header = request.headers['Authorization']
|
570
579
|
parameters = ::Signet::OAuth1.parse_authorization_header(
|
571
580
|
authorization_header
|
572
581
|
).inject({}) { |h,(k,v)| h[k]=v; h }
|
@@ -589,13 +598,9 @@ describe Signet::OAuth1::Client, 'configured' do
|
|
589
598
|
request = @client.generate_token_credential_request(
|
590
599
|
:verifier => '473f82d3'
|
591
600
|
)
|
592
|
-
method
|
593
|
-
|
594
|
-
|
595
|
-
authorization_header = nil
|
596
|
-
headers.each do |(header, value)|
|
597
|
-
authorization_header = value if header == 'Authorization'
|
598
|
-
end
|
601
|
+
request.method.should == :post
|
602
|
+
request.path.should === 'http://example.com/token_credentials'
|
603
|
+
authorization_header = request.headers['Authorization']
|
599
604
|
parameters = ::Signet::OAuth1.parse_authorization_header(
|
600
605
|
authorization_header
|
601
606
|
).inject({}) { |h,(k,v)| h[k]=v; h }
|
@@ -625,15 +630,11 @@ describe Signet::OAuth1::Client, 'configured' do
|
|
625
630
|
signed_request = @client.generate_authenticated_request(
|
626
631
|
:request => original_request
|
627
632
|
)
|
628
|
-
method
|
629
|
-
|
630
|
-
uri.should ==
|
633
|
+
signed_request.method.should == :get
|
634
|
+
signed_request.path.should ===
|
631
635
|
'https://photos.example.net/photos?file=vacation.jpg&size=original'
|
632
|
-
authorization_header =
|
633
|
-
|
634
|
-
authorization_header = value if header == 'Authorization'
|
635
|
-
end
|
636
|
-
merge_body(body).should == ''
|
636
|
+
authorization_header = signed_request.headers['Authorization']
|
637
|
+
signed_request.body.should == ''
|
637
638
|
parameters = ::Signet::OAuth1.parse_authorization_header(
|
638
639
|
authorization_header
|
639
640
|
).inject({}) { |h,(k,v)| h[k]=v; h }
|
@@ -667,15 +668,11 @@ describe Signet::OAuth1::Client, 'configured' do
|
|
667
668
|
signed_request = @client.generate_authenticated_request(
|
668
669
|
:request => original_request
|
669
670
|
)
|
670
|
-
method
|
671
|
-
|
672
|
-
uri.should ==
|
671
|
+
signed_request.method.should == :post
|
672
|
+
signed_request.path.should ===
|
673
673
|
'https://photos.example.net/photos'
|
674
|
-
authorization_header =
|
675
|
-
|
676
|
-
authorization_header = value if header == 'Authorization'
|
677
|
-
end
|
678
|
-
merge_body(body).should == 'file=vacation.jpg&size=original'
|
674
|
+
authorization_header = signed_request.headers['Authorization']
|
675
|
+
signed_request.body.should == 'file=vacation.jpg&size=original'
|
679
676
|
parameters = ::Signet::OAuth1.parse_authorization_header(
|
680
677
|
authorization_header
|
681
678
|
).inject({}) { |h,(k,v)| h[k]=v; h }
|