metavida-oauth 0.3.2 → 0.3.2.1

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.
@@ -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