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.
- data/History.txt +6 -0
- data/Rakefile +1 -1
- data/lib/oauth/cli.rb +1 -1
- data/lib/oauth/request_proxy/action_controller_request.rb +1 -1
- data/lib/oauth/version.rb +1 -1
- data/oauth.gemspec +1 -1
- data/test/test_action_controller_request_proxy.rb +89 -7
- data/test/test_net_http_client.rb +14 -14
- data/test/test_net_http_request_proxy.rb +43 -8
- metadata +1 -1
data/History.txt
CHANGED
@@ -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 = "
|
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")
|
data/lib/oauth/cli.rb
CHANGED
@@ -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:
|
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
|
data/lib/oauth/version.rb
CHANGED
data/oauth.gemspec
CHANGED
@@ -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(
|
9
|
-
request = ActionController::TestRequest.new
|
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
|
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
|
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.
|
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
|
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.
|
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
|
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
|
-
|
30
|
-
request_proxy = OAuth::RequestProxy.proxy(request, {:uri => 'http://example.com/test?key=value', :parameters =>
|
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.
|
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
|