metavida-oauth 0.3.2 → 0.3.2.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,9 @@
1
+ == 0.3.3 / 0.4.0
2
+
3
+ * Corrected OAuth XMPP namespace (Seth)
4
+ * Fixed edge cases in ActionoControllerRequest proxy where params were being
5
+ incorrectly signed (Marcos Wright Kuhns)
6
+
1
7
  == 0.3.2 2009-03-23
2
8
 
3
9
  * 2xx statuses should be treated as success (Anders Conbere)
data/Rakefile CHANGED
@@ -7,7 +7,7 @@ require 'oauth/version'
7
7
  # Run 'rake -T' to see list of generated tasks (from gem root directory)
8
8
  $hoe = Hoe.new('oauth', OAuth::VERSION) do |p|
9
9
  p.author = ['Pelle Braendgaard','Blaine Cook','Larry Halff','Jesse Clark','Jon Crosby', 'Seth Fitzsimmons']
10
- p.email = "pelleb@gmail.com"
10
+ p.email = "oauth-ruby@googlegroups.com"
11
11
  p.description = "OAuth Core Ruby implementation"
12
12
  p.summary = p.description
13
13
  p.changes = p.paragraphs_of("History.txt", 0..1).join("\n\n")
@@ -111,7 +111,7 @@ module OAuth
111
111
  stdout.puts
112
112
  stdout.puts "XMPP Stanza:"
113
113
  stdout.puts <<-EOS
114
- <oauth xmlns='urn:xmpp:tmp:oauth'>
114
+ <oauth xmlns='urn:xmpp:oauth:0'>
115
115
  <oauth_consumer_key>#{request.oauth_consumer_key}</oauth_consumer_key>
116
116
  <oauth_token>#{request.oauth_token}</oauth_token>
117
117
  <oauth_signature_method>#{request.oauth_signature_method}</oauth_signature_method>
@@ -42,7 +42,7 @@ module OAuth::RequestProxy
42
42
  unless options[:clobber_request]
43
43
  params << header_params.to_query
44
44
  params << request.query_string unless request.query_string.blank?
45
- if request.content_type == Mime::Type.lookup("application/x-www-form-urlencoded")
45
+ if request.post? && request.content_type == Mime::Type.lookup("application/x-www-form-urlencoded")
46
46
  params << request.raw_post
47
47
  end
48
48
  end
@@ -1,3 +1,3 @@
1
1
  module OAuth #:nodoc:
2
- VERSION = '0.3.2'
2
+ VERSION = '0.3.2.1'
3
3
  end
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{oauth}
5
- s.version = "0.3.2"
5
+ s.version = "0.3.2.1"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Pelle Braendgaard", "Blaine Cook", "Larry Halff", "Jesse Clark", "Jon Crosby", "Seth Fitzsimmons"]
@@ -5,31 +5,113 @@ require 'action_controller/test_process'
5
5
 
6
6
  class ActionControllerRequestProxyTest < Test::Unit::TestCase
7
7
 
8
- def request_proxy(parameters={})
9
- request = ActionController::TestRequest.new({}, parameters)
8
+ def request_proxy(request_method = :get, uri_params = {}, body_params = {})
9
+ request = ActionController::TestRequest.new
10
+
11
+ case request_method
12
+ when :post
13
+ request.env['REQUEST_METHOD'] = 'POST'
14
+ when :put
15
+ request.env['REQUEST_METHOD'] = 'PUT'
16
+ end
17
+
18
+ request.env['RAW_POST_DATA'] = body_params.to_query
10
19
  request.env['CONTENT_TYPE'] = 'application/x-www-form-urlencoded'
20
+
11
21
  yield request if block_given?
12
- OAuth::RequestProxy.proxy(request)
22
+ OAuth::RequestProxy.proxy(request, :parameters=>uri_params)
23
+ end
24
+
25
+ def test_that_proxy_simple_get_request_works_with_query_params
26
+ request_proxy = request_proxy(:get, {'key'=>'value'})
27
+
28
+ expected_parameters = [["key", "value"]]
29
+ assert_equal expected_parameters, request_proxy.parameters_for_signature
30
+ assert_equal 'GET', request_proxy.method
13
31
  end
14
-
32
+
33
+ def test_that_proxy_simple_post_request_works_with_query_params
34
+ request_proxy = request_proxy(:post, {'key'=>'value'})
35
+
36
+ expected_parameters = [["key", "value"]]
37
+ assert_equal expected_parameters, request_proxy.parameters_for_signature
38
+ assert_equal 'POST', request_proxy.method
39
+ end
40
+
41
+ def test_that_proxy_simple_put_request_works_with_query_params
42
+ request_proxy = request_proxy(:put, {'key'=>'value'})
43
+
44
+ expected_parameters = [["key", "value"]]
45
+ assert_equal expected_parameters, request_proxy.parameters_for_signature
46
+ assert_equal 'PUT', request_proxy.method
47
+ end
48
+
49
+ def test_that_proxy_simple_put_request_works_with_post_params
50
+ request_proxy = request_proxy(:get, {}, {'key'=>'value'})
51
+
52
+ expected_parameters = []
53
+ assert_equal expected_parameters, request_proxy.parameters_for_signature
54
+ assert_equal 'GET', request_proxy.method
55
+ end
56
+
57
+ def test_that_proxy_simple_post_request_works_with_post_params
58
+ request_proxy = request_proxy(:post, {}, {'key'=>'value'})
59
+
60
+ expected_parameters = [["key", "value"]]
61
+ assert_equal expected_parameters, request_proxy.parameters_for_signature
62
+ assert_equal 'POST', request_proxy.method
63
+ end
64
+
65
+ def test_that_proxy_simple_put_request_works_with_post_params
66
+ request_proxy = request_proxy(:put, {}, {'key'=>'value'})
67
+
68
+ expected_parameters = []
69
+ assert_equal expected_parameters, request_proxy.parameters_for_signature
70
+ assert_equal 'PUT', request_proxy.method
71
+ end
72
+
73
+ def test_that_proxy_simple_put_request_works_with_mixed_params
74
+ request_proxy = request_proxy(:get, {'key'=>'value'}, {'key2'=>'value2'})
75
+
76
+ expected_parameters = [["key", "value"]]
77
+ assert_equal expected_parameters, request_proxy.parameters_for_signature
78
+ assert_equal 'GET', request_proxy.method
79
+ end
80
+
81
+ def test_that_proxy_simple_post_request_works_with_mixed_params
82
+ request_proxy = request_proxy(:post, {'key'=>'value'}, {'key2'=>'value2'})
83
+
84
+ expected_parameters = [["key", "value"],["key2", "value2"]]
85
+ assert_equal expected_parameters, request_proxy.parameters_for_signature
86
+ assert_equal 'POST', request_proxy.method
87
+ end
88
+
89
+ def test_that_proxy_simple_put_request_works_with_mixed_params
90
+ request_proxy = request_proxy(:put, {'key'=>'value'}, {'key2'=>'value2'})
91
+
92
+ expected_parameters = [["key", "value"]]
93
+ assert_equal expected_parameters, request_proxy.parameters_for_signature
94
+ assert_equal 'PUT', request_proxy.method
95
+ end
96
+
15
97
  def test_parameter_keys_should_preserve_brackets_from_hash
16
98
  assert_equal(
17
99
  [["message[body]", "This is a test"]],
18
- request_proxy({ :message => { :body => 'This is a test' }}).parameters_for_signature
100
+ request_proxy(:post, { :message => { :body => 'This is a test' }}).parameters_for_signature
19
101
  )
20
102
  end
21
103
 
22
104
  def test_parameter_values_with_amps_should_not_break_parameter_parsing
23
105
  assert_equal(
24
106
  [['message[body]', 'http://foo.com/?a=b&c=d']],
25
- request_proxy({ :message => { :body => 'http://foo.com/?a=b&c=d'}}).parameters_for_signature
107
+ request_proxy(:post, { :message => { :body => 'http://foo.com/?a=b&c=d'}}).parameters_for_signature
26
108
  )
27
109
  end
28
110
 
29
111
  def test_parameter_keys_should_preserve_brackets_from_array
30
112
  assert_equal(
31
113
  [["foo[]", "123"], ["foo[]", "456"]],
32
- request_proxy({ :foo => [123, 456] }).parameters_for_signature.sort
114
+ request_proxy(:post, { :foo => [123, 456] }).parameters_for_signature.sort
33
115
  )
34
116
  end
35
117
 
@@ -32,18 +32,7 @@ class NetHTTPClientTest < Test::Unit::TestCase
32
32
  assert_equal 'key=value', request.body
33
33
  assert_equal "OAuth oauth_nonce=\"225579211881198842005988698334675835446\", oauth_signature_method=\"HMAC-SHA1\", oauth_token=\"token_411a7f\", oauth_timestamp=\"1199645624\", oauth_consumer_key=\"consumer_key_86cad9\", oauth_signature=\"26g7wHTtNO6ZWJaLltcueppHYiI%3D\", oauth_version=\"1.0\"".split(', ').sort, request['authorization'].split(', ').sort
34
34
  end
35
-
36
- def test_that_using_post_params_works
37
- request = Net::HTTP::Post.new(@request_uri.path)
38
- request.set_form_data( @request_parameters )
39
- request.oauth!(@http, @consumer, @token, {:scheme => 'body', :nonce => @nonce, :timestamp => @timestamp})
40
-
41
- assert_equal 'POST', request.method
42
- assert_equal '/test', request.path
43
- assert_equal "key=value&oauth_consumer_key=consumer_key_86cad9&oauth_nonce=225579211881198842005988698334675835446&oauth_signature=26g7wHTtNO6ZWJaLltcueppHYiI%3d&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1199645624&oauth_token=token_411a7f&oauth_version=1.0", request.body.split("&").sort.join("&")
44
- assert_equal nil, request['authorization']
45
- end
46
-
35
+
47
36
  def test_that_using_get_params_works
48
37
  request = Net::HTTP::Get.new(@request_uri.path + "?" + request_parameters_to_s)
49
38
  request.oauth!(@http, @consumer, @token, {:scheme => 'query_string', :nonce => @nonce, :timestamp => @timestamp})
@@ -55,8 +44,19 @@ class NetHTTPClientTest < Test::Unit::TestCase
55
44
  assert_equal "key=value&oauth_consumer_key=consumer_key_86cad9&oauth_nonce=225579211881198842005988698334675835446&oauth_signature=1oO2izFav1GP4kEH2EskwXkCRFg%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1199645624&oauth_token=token_411a7f&oauth_version=1.0", uri.query.split("&").sort.join("&")
56
45
  assert_equal nil, request['authorization']
57
46
  end
47
+
48
+ def test_that_using_post_params_works
49
+ request = Net::HTTP::Post.new(@request_uri.path)
50
+ request.set_form_data( @request_parameters )
51
+ request.oauth!(@http, @consumer, @token, {:scheme => 'body', :nonce => @nonce, :timestamp => @timestamp})
52
+
53
+ assert_equal 'POST', request.method
54
+ assert_equal '/test', request.path
55
+ assert_equal "key=value&oauth_consumer_key=consumer_key_86cad9&oauth_nonce=225579211881198842005988698334675835446&oauth_signature=26g7wHTtNO6ZWJaLltcueppHYiI%3d&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1199645624&oauth_token=token_411a7f&oauth_version=1.0", request.body.split("&").sort.join("&")
56
+ assert_equal nil, request['authorization']
57
+ end
58
58
 
59
- def test_that_using_get_params_works_with_post_requests
59
+ def test_that_using_post_with_uri_params_works
60
60
  request = Net::HTTP::Post.new(@request_uri.path + "?" + request_parameters_to_s)
61
61
  request.oauth!(@http, @consumer, @token, {:scheme => 'query_string', :nonce => @nonce, :timestamp => @timestamp})
62
62
 
@@ -69,7 +69,7 @@ class NetHTTPClientTest < Test::Unit::TestCase
69
69
  assert_equal nil, request['authorization']
70
70
  end
71
71
 
72
- def test_that_using_get_params_works_with_post_requests_that_have_post_bodies
72
+ def test_that_using_post_with_uri_and_form_params_works
73
73
  request = Net::HTTP::Post.new(@request_uri.path + "?" + request_parameters_to_s)
74
74
  request.set_form_data( { 'key2' => 'value2' } )
75
75
  request.oauth!(@http, @consumer, @token, {:scheme => :query_string, :nonce => @nonce, :timestamp => @timestamp})
@@ -8,29 +8,64 @@ class NetHTTPRequestProxyTest < Test::Unit::TestCase
8
8
  request_proxy = OAuth::RequestProxy.proxy(request, {:uri => 'http://example.com/test?key=value'})
9
9
 
10
10
  expected_parameters = {'key' => ['value']}
11
- assert_equal expected_parameters, request_proxy.parameters
11
+ assert_equal expected_parameters, request_proxy.parameters_for_signature
12
12
  assert_equal 'http://example.com/test', request_proxy.normalized_uri
13
13
  assert_equal 'GET', request_proxy.method
14
14
  end
15
15
 
16
- def test_that_proxy_simple_post_request_works
16
+ def test_that_proxy_simple_post_request_works_with_arguments
17
17
  request = Net::HTTP::Post.new('/test')
18
18
  params = {'key' => 'value'}
19
19
  request_proxy = OAuth::RequestProxy.proxy(request, {:uri => 'http://example.com/test', :parameters => params})
20
20
 
21
21
  expected_parameters = {'key' => ['value']}
22
- assert_equal expected_parameters, request_proxy.parameters
22
+ assert_equal expected_parameters, request_proxy.parameters_for_signature
23
23
  assert_equal 'http://example.com/test', request_proxy.normalized_uri
24
24
  assert_equal 'POST', request_proxy.method
25
25
  end
26
26
 
27
- def test_that_proxy_post_and_get_request_works
27
+ def test_that_proxy_simple_post_request_works_with_form_data
28
+ request = Net::HTTP::Post.new('/test')
29
+ params = {'key' => 'value'}
30
+ request.set_form_data(params)
31
+ request_proxy = OAuth::RequestProxy.proxy(request, {:uri => 'http://example.com/test'})
32
+
33
+ expected_parameters = {'key' => ['value']}
34
+ assert_equal expected_parameters, request_proxy.parameters_for_signature
35
+ assert_equal 'http://example.com/test', request_proxy.normalized_uri
36
+ assert_equal 'POST', request_proxy.method
37
+ end
38
+
39
+ def test_that_proxy_simple_put_request_works_with_argugments
40
+ request = Net::HTTP::Put.new('/test')
41
+ params = {'key' => 'value'}
42
+ request_proxy = OAuth::RequestProxy.proxy(request, {:uri => 'http://example.com/test', :parameters => params})
43
+
44
+ expected_parameters = {'key' => ['value']}
45
+ assert_equal expected_parameters, request_proxy.parameters_for_signature
46
+ assert_equal 'http://example.com/test', request_proxy.normalized_uri
47
+ assert_equal 'PUT', request_proxy.method
48
+ end
49
+
50
+ def test_that_proxy_simple_put_request_works_with_form_data
51
+ request = Net::HTTP::Put.new('/test')
52
+ params = {'key' => 'value'}
53
+ request.set_form_data(params)
54
+ request_proxy = OAuth::RequestProxy.proxy(request, {:uri => 'http://example.com/test'})
55
+
56
+ expected_parameters = {}
57
+ assert_equal expected_parameters, request_proxy.parameters_for_signature
58
+ assert_equal 'http://example.com/test', request_proxy.normalized_uri
59
+ assert_equal 'PUT', request_proxy.method
60
+ end
61
+
62
+ def test_that_proxy_post_request_works_with_mixed_parameter_sources
28
63
  request = Net::HTTP::Post.new('/test?key=value')
29
- params = {'key2' => 'value2'}
30
- request_proxy = OAuth::RequestProxy.proxy(request, {:uri => 'http://example.com/test?key=value', :parameters => params})
64
+ request.set_form_data({'key2' => 'value2'})
65
+ request_proxy = OAuth::RequestProxy.proxy(request, {:uri => 'http://example.com/test?key=value', :parameters => {'key3' => 'value3'}})
31
66
 
32
- expected_parameters = {'key' => ['value'], 'key2' => ['value2']}
33
- assert_equal expected_parameters, request_proxy.parameters
67
+ expected_parameters = {'key' => ['value'], 'key2' => ['value2'], 'key3' => ['value3']}
68
+ assert_equal expected_parameters, request_proxy.parameters_for_signature
34
69
  assert_equal 'http://example.com/test', request_proxy.normalized_uri
35
70
  assert_equal 'POST', request_proxy.method
36
71
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: metavida-oauth
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.2
4
+ version: 0.3.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pelle Braendgaard