oauth 0.3.7.pre1 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of oauth might be problematic. Click here for more details.

@@ -1,4 +1,4 @@
1
- gem 'actionpack','2.2.2'
1
+ gem 'actionpack', '>2.2.0', '<2.3.0'
2
2
  require File.dirname(__FILE__) + '/test_helper.rb'
3
3
 
4
4
  require 'oauth/request_proxy/action_controller_request'
@@ -62,6 +62,32 @@ class NetHTTPClientTest < Test::Unit::TestCase
62
62
  assert_matching_headers correct_sorted_params, request['authorization']
63
63
  end
64
64
 
65
+ def test_that_using_auth_headers_on_post_requests_with_data_works
66
+ request = Net::HTTP::Post.new(@request_uri.path)
67
+ request.body = "data"
68
+ request.content_type = 'text/ascii'
69
+ request.oauth!(@http, @consumer, @token, {:nonce => @nonce, :timestamp => @timestamp})
70
+
71
+ assert_equal 'POST', request.method
72
+ assert_equal '/test', request.path
73
+ assert_equal 'data', request.body
74
+ assert_equal 'text/ascii', request.content_type
75
+ assert_matching_headers "oauth_nonce=\"225579211881198842005988698334675835446\", oauth_body_hash=\"oXyaqmHoChv3HQ2FCvTluqmAC70%3D\", oauth_signature_method=\"HMAC-SHA1\", oauth_token=\"token_411a7f\", oauth_timestamp=\"1199645624\", oauth_consumer_key=\"consumer_key_86cad9\", oauth_signature=\"0DA6pGTapdHSqC15RZelY5rNLDw%3D\", oauth_version=\"1.0\"", request['authorization']
76
+ end
77
+
78
+ def test_that_body_hash_is_obmitted_when_no_algorithm_is_defined
79
+ request = Net::HTTP::Post.new(@request_uri.path)
80
+ request.body = "data"
81
+ request.content_type = 'text/ascii'
82
+ request.oauth!(@http, @consumer, @token, {:nonce => @nonce, :timestamp => @timestamp, :signature_method => 'plaintext'})
83
+
84
+ assert_equal 'POST', request.method
85
+ assert_equal '/test', request.path
86
+ assert_equal 'data', request.body
87
+ assert_equal 'text/ascii', request.content_type
88
+ assert_matching_headers "oauth_nonce=\"225579211881198842005988698334675835446\", oauth_signature_method=\"plaintext\", oauth_token=\"token_411a7f\", oauth_timestamp=\"1199645624\", oauth_consumer_key=\"consumer_key_86cad9\", oauth_signature=\"5888bf0345e5d237%263196ffd991c8ebdb\", oauth_version=\"1.0\"", request['authorization']
89
+ end
90
+
65
91
  def test_that_version_is_added_to_existing_user_agent
66
92
  request = Net::HTTP::Post.new(@request_uri.path)
67
93
  request['User-Agent'] = "MyApp"
@@ -127,6 +153,7 @@ class NetHTTPClientTest < Test::Unit::TestCase
127
153
 
128
154
  def test_that_using_post_with_uri_params_works
129
155
  request = Net::HTTP::Post.new(@request_uri.path + "?" + request_parameters_to_s)
156
+ request.set_form_data( {} ) # just to make sure we have a correct mime type and thus no body hash
130
157
  request.oauth!(@http, @consumer, @token, {:scheme => 'query_string', :nonce => @nonce, :timestamp => @timestamp})
131
158
 
132
159
  assert_equal 'POST', request.method
@@ -134,7 +161,7 @@ class NetHTTPClientTest < Test::Unit::TestCase
134
161
  assert_equal '/test', uri.path
135
162
  assert_equal nil, uri.fragment
136
163
  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", uri.query.split("&").sort.join('&')
137
- assert_equal nil, request.body
164
+ assert_equal "", request.body
138
165
  assert_equal nil, request['authorization']
139
166
  end
140
167
 
@@ -152,6 +179,22 @@ class NetHTTPClientTest < Test::Unit::TestCase
152
179
  assert_equal nil, request['authorization']
153
180
  end
154
181
 
182
+ def test_that_using_post_with_uri_and_data_works
183
+ request = Net::HTTP::Post.new(@request_uri.path + "?" + request_parameters_to_s)
184
+ request.body = "data"
185
+ request.content_type = 'text/ascii'
186
+ request.oauth!(@http, @consumer, @token, {:scheme => :query_string, :nonce => @nonce, :timestamp => @timestamp})
187
+
188
+ assert_equal 'POST', request.method
189
+ uri = URI.parse(request.path)
190
+ assert_equal '/test', uri.path
191
+ assert_equal nil, uri.fragment
192
+ assert_equal "data", request.body
193
+ assert_equal 'text/ascii', request.content_type
194
+ assert_equal "key=value&oauth_body_hash=oXyaqmHoChv3HQ2FCvTluqmAC70%3D&oauth_consumer_key=consumer_key_86cad9&oauth_nonce=225579211881198842005988698334675835446&oauth_signature=MHRKU42iVHU4Ke9kBUDa9Zw6IAM%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1199645624&oauth_token=token_411a7f&oauth_version=1.0", uri.query.split("&").sort.join('&')
195
+ assert_equal nil, request['authorization']
196
+ end
197
+
155
198
 
156
199
  def test_example_from_specs
157
200
  consumer=OAuth::Consumer.new("dpf43f3p2l4k3l03","kd94hf93k423kf44")
@@ -200,12 +243,12 @@ class NetHTTPClientTest < Test::Unit::TestCase
200
243
  assert_equal "oauth_token=requestkey&oauth_token_secret=requestsecret",response.body
201
244
  end
202
245
 
203
- def test_that_put_bodies_not_signed
246
+ def test_that_put_bodies_signed
204
247
  request = Net::HTTP::Put.new(@request_uri.path)
205
248
  request.body = "<?xml version=\"1.0\"?><foo><bar>baz</bar></foo>"
206
249
  request["Content-Type"] = "application/xml"
207
250
  signature_base_string=request.signature_base_string(@http, @consumer, nil, { :nonce => @nonce, :timestamp => @timestamp })
208
- assert_equal "PUT&http%3A%2F%2Fexample.com%2Ftest&oauth_consumer_key%3Dconsumer_key_86cad9%26oauth_nonce%3D225579211881198842005988698334675835446%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1199645624%26oauth_version%3D1.0", signature_base_string
251
+ assert_equal "PUT&http%3A%2F%2Fexample.com%2Ftest&oauth_body_hash%3DDvAa1AWdFoH9K%252B%252F2AHm3f6wH27k%253D%26oauth_consumer_key%3Dconsumer_key_86cad9%26oauth_nonce%3D225579211881198842005988698334675835446%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1199645624%26oauth_version%3D1.0", signature_base_string
209
252
  end
210
253
 
211
254
  def test_that_put_bodies_not_signed_even_if_form_urlencoded
@@ -222,12 +265,12 @@ class NetHTTPClientTest < Test::Unit::TestCase
222
265
  assert_equal "POST&http%3A%2F%2Fexample.com%2Ftest&key2%3Dvalue2%26oauth_consumer_key%3Dconsumer_key_86cad9%26oauth_nonce%3D225579211881198842005988698334675835446%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1199645624%26oauth_version%3D1.0", signature_base_string
223
266
  end
224
267
 
225
- def test_that_post_bodies_not_signed_if_other_content_type
268
+ def test_that_post_bodies_signed_if_other_content_type
226
269
  request = Net::HTTP::Post.new(@request_uri.path)
227
270
  request.body = "<?xml version=\"1.0\"?><foo><bar>baz</bar></foo>"
228
271
  request["Content-Type"] = "application/xml"
229
272
  signature_base_string=request.signature_base_string(@http, @consumer, nil, { :nonce => @nonce, :timestamp => @timestamp })
230
- assert_equal "POST&http%3A%2F%2Fexample.com%2Ftest&oauth_consumer_key%3Dconsumer_key_86cad9%26oauth_nonce%3D225579211881198842005988698334675835446%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1199645624%26oauth_version%3D1.0", signature_base_string
273
+ assert_equal "POST&http%3A%2F%2Fexample.com%2Ftest&oauth_body_hash%3DDvAa1AWdFoH9K%252B%252F2AHm3f6wH27k%253D%26oauth_consumer_key%3Dconsumer_key_86cad9%26oauth_nonce%3D225579211881198842005988698334675835446%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1199645624%26oauth_version%3D1.0", signature_base_string
231
274
  end
232
275
 
233
276
  protected
metadata CHANGED
@@ -1,7 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: oauth
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.7.pre1
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 4
8
+ - 0
9
+ version: 0.4.0
5
10
  platform: ruby
6
11
  authors:
7
12
  - Pelle Braendgaard
@@ -16,59 +21,99 @@ autorequire:
16
21
  bindir: bin
17
22
  cert_chain: []
18
23
 
19
- date: 2010-02-15 00:00:00 -08:00
24
+ date: 2010-04-21 00:00:00 -04:00
20
25
  default_executable: oauth
21
26
  dependencies:
22
27
  - !ruby/object:Gem::Dependency
23
28
  name: actionpack
24
- type: :development
25
- version_requirement:
26
- version_requirements: !ruby/object:Gem::Requirement
29
+ prerelease: false
30
+ requirement: &id001 !ruby/object:Gem::Requirement
27
31
  requirements:
28
32
  - - ">="
29
33
  - !ruby/object:Gem::Version
34
+ segments:
35
+ - 2
36
+ - 2
37
+ - 0
30
38
  version: 2.2.0
31
- version:
39
+ - - <
40
+ - !ruby/object:Gem::Version
41
+ segments:
42
+ - 2
43
+ - 3
44
+ - 0
45
+ version: 2.3.0
46
+ type: :development
47
+ version_requirements: *id001
32
48
  - !ruby/object:Gem::Dependency
33
49
  name: rack
34
- type: :development
35
- version_requirement:
36
- version_requirements: !ruby/object:Gem::Requirement
50
+ prerelease: false
51
+ requirement: &id002 !ruby/object:Gem::Requirement
37
52
  requirements:
38
53
  - - ">="
39
54
  - !ruby/object:Gem::Version
55
+ segments:
56
+ - 1
57
+ - 0
58
+ - 0
40
59
  version: 1.0.0
41
- version:
60
+ type: :development
61
+ version_requirements: *id002
42
62
  - !ruby/object:Gem::Dependency
43
63
  name: mocha
44
- type: :development
45
- version_requirement:
46
- version_requirements: !ruby/object:Gem::Requirement
64
+ prerelease: false
65
+ requirement: &id003 !ruby/object:Gem::Requirement
47
66
  requirements:
48
67
  - - ">="
49
68
  - !ruby/object:Gem::Version
69
+ segments:
70
+ - 0
71
+ - 9
72
+ - 8
50
73
  version: 0.9.8
51
- version:
74
+ type: :development
75
+ version_requirements: *id003
52
76
  - !ruby/object:Gem::Dependency
53
77
  name: typhoeus
54
- type: :development
55
- version_requirement:
56
- version_requirements: !ruby/object:Gem::Requirement
78
+ prerelease: false
79
+ requirement: &id004 !ruby/object:Gem::Requirement
57
80
  requirements:
58
81
  - - ">="
59
82
  - !ruby/object:Gem::Version
83
+ segments:
84
+ - 0
85
+ - 1
86
+ - 13
60
87
  version: 0.1.13
61
- version:
88
+ type: :development
89
+ version_requirements: *id004
62
90
  - !ruby/object:Gem::Dependency
63
91
  name: em-http-request
64
- type: :development
65
- version_requirement:
66
- version_requirements: !ruby/object:Gem::Requirement
92
+ prerelease: false
93
+ requirement: &id005 !ruby/object:Gem::Requirement
67
94
  requirements:
68
95
  - - ">="
69
96
  - !ruby/object:Gem::Version
97
+ segments:
98
+ - 0
70
99
  version: "0"
71
- version:
100
+ type: :development
101
+ version_requirements: *id005
102
+ - !ruby/object:Gem::Dependency
103
+ name: curb
104
+ prerelease: false
105
+ requirement: &id006 !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - ">="
108
+ - !ruby/object:Gem::Version
109
+ segments:
110
+ - 0
111
+ - 6
112
+ - 6
113
+ - 0
114
+ version: 0.6.6.0
115
+ type: :development
116
+ version_requirements: *id006
72
117
  description: OAuth Core Ruby implementation
73
118
  email: oauth-ruby@googlegroups.com
74
119
  executables:
@@ -76,13 +121,13 @@ executables:
76
121
  extensions: []
77
122
 
78
123
  extra_rdoc_files:
124
+ - LICENSE
79
125
  - README.rdoc
80
126
  - TODO
81
127
  files:
82
128
  - .gitignore
83
- - History.txt
84
- - License.txt
85
- - Manifest.txt
129
+ - HISTORY
130
+ - LICENSE
86
131
  - README.rdoc
87
132
  - Rakefile
88
133
  - TODO
@@ -133,12 +178,7 @@ files:
133
178
  - lib/oauth/tokens/request_token.rb
134
179
  - lib/oauth/tokens/server_token.rb
135
180
  - lib/oauth/tokens/token.rb
136
- - lib/oauth/version.rb
137
181
  - oauth.gemspec
138
- - script/destroy
139
- - script/generate
140
- - script/txt2html
141
- - setup.rb
142
182
  - tasks/deployment.rake
143
183
  - tasks/environment.rake
144
184
  - tasks/website.rake
@@ -170,11 +210,6 @@ files:
170
210
  - test/test_signature_plain_text.rb
171
211
  - test/test_token.rb
172
212
  - test/test_typhoeus_request_proxy.rb
173
- - website/index.html
174
- - website/index.txt
175
- - website/javascripts/rounded_corners_lite.inc.js
176
- - website/stylesheets/screen.css
177
- - website/template.rhtml
178
213
  has_rdoc: true
179
214
  homepage:
180
215
  licenses: []
@@ -188,18 +223,20 @@ required_ruby_version: !ruby/object:Gem::Requirement
188
223
  requirements:
189
224
  - - ">="
190
225
  - !ruby/object:Gem::Version
226
+ segments:
227
+ - 0
191
228
  version: "0"
192
- version:
193
229
  required_rubygems_version: !ruby/object:Gem::Requirement
194
230
  requirements:
195
- - - ">"
231
+ - - ">="
196
232
  - !ruby/object:Gem::Version
197
- version: 1.3.1
198
- version:
233
+ segments:
234
+ - 0
235
+ version: "0"
199
236
  requirements: []
200
237
 
201
238
  rubyforge_project: oauth
202
- rubygems_version: 1.3.5
239
+ rubygems_version: 1.3.6
203
240
  signing_key:
204
241
  specification_version: 3
205
242
  summary: OAuth Core Ruby implementation
data/Manifest.txt DELETED
@@ -1,86 +0,0 @@
1
- History.txt
2
- License.txt
3
- Manifest.txt
4
- README.rdoc
5
- Rakefile
6
- TODO
7
- bin/oauth
8
- examples/yql.rb
9
- lib/oauth.rb
10
- lib/oauth/oauth.rb
11
- lib/oauth/cli.rb
12
- lib/oauth/client.rb
13
- lib/oauth/client/action_controller_request.rb
14
- lib/oauth/client/helper.rb
15
- lib/oauth/client/net_http.rb
16
- lib/oauth/client/em_http.rb
17
- lib/oauth/consumer.rb
18
- lib/oauth/errors.rb
19
- lib/oauth/errors/error.rb
20
- lib/oauth/errors/problem.rb
21
- lib/oauth/errors/unauthorized.rb
22
- lib/oauth/helper.rb
23
- lib/oauth/oauth_test_helper.rb
24
- lib/oauth/request_proxy.rb
25
- lib/oauth/request_proxy/action_controller_request.rb
26
- lib/oauth/request_proxy/base.rb
27
- lib/oauth/request_proxy/jabber_request.rb
28
- lib/oauth/request_proxy/mock_request.rb
29
- lib/oauth/request_proxy/net_http.rb
30
- lib/oauth/request_proxy/rack_request.rb
31
- lib/oauth/request_proxy/em_http_request.rb
32
- lib/oauth/server.rb
33
- lib/oauth/signature.rb
34
- lib/oauth/signature/base.rb
35
- lib/oauth/signature/hmac/base.rb
36
- lib/oauth/signature/hmac/md5.rb
37
- lib/oauth/signature/hmac/rmd160.rb
38
- lib/oauth/signature/hmac/sha1.rb
39
- lib/oauth/signature/hmac/sha2.rb
40
- lib/oauth/signature/md5.rb
41
- lib/oauth/signature/plaintext.rb
42
- lib/oauth/signature/rsa/sha1.rb
43
- lib/oauth/signature/sha1.rb
44
- lib/oauth/token.rb
45
- lib/oauth/tokens/access_token.rb
46
- lib/oauth/tokens/consumer_token.rb
47
- lib/oauth/tokens/request_token.rb
48
- lib/oauth/tokens/server_token.rb
49
- lib/oauth/tokens/token.rb
50
- lib/oauth/version.rb
51
- oauth.gemspec
52
- script/destroy
53
- script/generate
54
- script/txt2html
55
- setup.rb
56
- tasks/deployment.rake
57
- tasks/environment.rake
58
- tasks/website.rake
59
- test/cases/oauth_case.rb
60
- test/cases/spec/1_0-final/test_construct_request_url.rb
61
- test/cases/spec/1_0-final/test_normalize_request_parameters.rb
62
- test/cases/spec/1_0-final/test_parameter_encodings.rb
63
- test/cases/spec/1_0-final/test_signature_base_strings.rb
64
- test/keys/rsa.cert
65
- test/keys/rsa.pem
66
- test/test_access_token.rb
67
- test/test_action_controller_request_proxy.rb
68
- test/test_consumer.rb
69
- test/test_helper.rb
70
- test/test_hmac_sha1.rb
71
- test/test_net_http_client.rb
72
- test/test_net_http_request_proxy.rb
73
- test/test_oauth_helper.rb
74
- test/test_rack_request_proxy.rb
75
- test/test_request_token.rb
76
- test/test_rsa_sha1.rb
77
- test/test_server.rb
78
- test/test_signature.rb
79
- test/test_signature_base.rb
80
- test/test_signature_plain_text.rb
81
- test/test_token.rb
82
- website/index.html
83
- website/index.txt
84
- website/javascripts/rounded_corners_lite.inc.js
85
- website/stylesheets/screen.css
86
- website/template.rhtml
data/lib/oauth/version.rb DELETED
@@ -1,3 +0,0 @@
1
- module OAuth #:nodoc:
2
- VERSION = '0.3.7.pre1'
3
- end
data/script/destroy DELETED
@@ -1,14 +0,0 @@
1
- #!/usr/bin/env ruby
2
- APP_ROOT = File.join(File.dirname(__FILE__), '..')
3
-
4
- begin
5
- require 'rubigen'
6
- rescue LoadError
7
- require 'rubygems'
8
- require 'rubigen'
9
- end
10
- require 'rubigen/scripts/destroy'
11
-
12
- ARGV.shift if ['--help', '-h'].include?(ARGV[0])
13
- RubiGen::Base.use_component_sources! [:rubygems, :newgem, :newgem_theme, :test_unit]
14
- RubiGen::Scripts::Destroy.new.run(ARGV)
data/script/generate DELETED
@@ -1,14 +0,0 @@
1
- #!/usr/bin/env ruby
2
- APP_ROOT = File.join(File.dirname(__FILE__), '..')
3
-
4
- begin
5
- require 'rubigen'
6
- rescue LoadError
7
- require 'rubygems'
8
- require 'rubigen'
9
- end
10
- require 'rubigen/scripts/generate'
11
-
12
- ARGV.shift if ['--help', '-h'].include?(ARGV[0])
13
- RubiGen::Base.use_component_sources! [:rubygems, :newgem, :newgem_theme, :test_unit]
14
- RubiGen::Scripts::Generate.new.run(ARGV)
data/script/txt2html DELETED
@@ -1,74 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require 'rubygems'
4
- begin
5
- require 'newgem'
6
- rescue LoadError
7
- puts "\n\nGenerating the website requires the newgem RubyGem"
8
- puts "Install: gem install newgem\n\n"
9
- exit(1)
10
- end
11
- require 'redcloth'
12
- require 'syntax/convertors/html'
13
- require 'erb'
14
- require File.dirname(__FILE__) + '/../lib/oauth/version.rb'
15
-
16
- version = OAuth::VERSION::STRING
17
- download = 'http://rubyforge.org/projects/oauth'
18
-
19
- class Fixnum
20
- def ordinal
21
- # teens
22
- return 'th' if (10..19).include?(self % 100)
23
- # others
24
- case self % 10
25
- when 1: return 'st'
26
- when 2: return 'nd'
27
- when 3: return 'rd'
28
- else return 'th'
29
- end
30
- end
31
- end
32
-
33
- class Time
34
- def pretty
35
- return "#{mday}#{mday.ordinal} #{strftime('%B')} #{year}"
36
- end
37
- end
38
-
39
- def convert_syntax(syntax, source)
40
- return Syntax::Convertors::HTML.for_syntax(syntax).convert(source).gsub(%r!^<pre>|</pre>$!,'')
41
- end
42
-
43
- if ARGV.length >= 1
44
- src, template = ARGV
45
- template ||= File.join(File.dirname(__FILE__), '/../website/template.rhtml')
46
-
47
- else
48
- puts("Usage: #{File.split($0).last} source.txt [template.rhtml] > output.html")
49
- exit!
50
- end
51
-
52
- template = ERB.new(File.open(template).read)
53
-
54
- title = nil
55
- body = nil
56
- File.open(src) do |fsrc|
57
- title_text = fsrc.readline
58
- body_text = fsrc.read
59
- syntax_items = []
60
- body_text.gsub!(%r!<(pre|code)[^>]*?syntax=['"]([^'"]+)[^>]*>(.*?)</\1>!m){
61
- ident = syntax_items.length
62
- element, syntax, source = $1, $2, $3
63
- syntax_items << "<#{element} class='syntax'>#{convert_syntax(syntax, source)}</#{element}>"
64
- "syntax-temp-#{ident}"
65
- }
66
- title = RedCloth.new(title_text).to_html.gsub(%r!<.*?>!,'').strip
67
- body = RedCloth.new(body_text).to_html
68
- body.gsub!(%r!(?:<pre><code>)?syntax-temp-(\d+)(?:</code></pre>)?!){ syntax_items[$1.to_i] }
69
- end
70
- stat = File.stat(src)
71
- created = stat.ctime
72
- modified = stat.mtime
73
-
74
- $stdout << template.result(binding)