rack-recaptcha 0.6.5 → 0.6.6

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -192,6 +192,10 @@ Rob Worley - [robworley](https://github.com/robworley)
192
192
 
193
193
  * Adding language setting for recaptcha form
194
194
 
195
+ sam71 - [sam71](https://github.com/sam71)
196
+
197
+ * Fix recaptcha hanging when used in proxy environment.
198
+
195
199
  #### Note on Patches/Pull Requests
196
200
 
197
201
  * Fork the project.
@@ -59,13 +59,15 @@ module Rack
59
59
  }
60
60
 
61
61
  uri = URI.parse(VERIFY_URL)
62
- http = Net::HTTP.start(uri.host, uri.port)
62
+
63
63
 
64
64
  if self.class.proxy_host && self.class.proxy_port
65
65
  http = Net::HTTP.Proxy(self.class.proxy_host,
66
66
  self.class.proxy_port,
67
67
  self.class.proxy_user,
68
68
  self.class.proxy_password).start(uri.host, uri.port)
69
+ else
70
+ http = Net::HTTP.start(uri.host, uri.port)
69
71
  end
70
72
 
71
73
  request = Net::HTTP::Post.new(uri.path)
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = %q{rack-recaptcha}
3
- s.version = "0.6.5"
3
+ s.version = "0.6.6"
4
4
  s.required_rubygems_version = ">=1.3.6"
5
5
  s.authors = ["Arthur Chiu"]
6
6
  s.date = %q{2010-07-18}
@@ -16,7 +16,7 @@ Gem::Specification.new do |s|
16
16
  s.test_files = Dir.glob("test/**/*")
17
17
  s.add_runtime_dependency "json", ">= 0"
18
18
  s.add_development_dependency "rake", "~> 0.9.2"
19
- s.add_development_dependency "riot", "~> 0.12.3"
19
+ s.add_development_dependency "minitest", "~> 4.6"
20
20
  s.add_development_dependency "rack-test", "~> 0.5.7"
21
21
  s.add_development_dependency "fakeweb", "~> 1.3.0"
22
22
  s.add_development_dependency "rr", "~> 1.0.2"
@@ -1,4 +1,4 @@
1
- require File.expand_path '../teststrap', __FILE__
1
+ require File.expand_path '../test_helper', __FILE__
2
2
 
3
3
  class HelperTest
4
4
  attr_accessor :request
@@ -13,7 +13,6 @@ class HelperTest
13
13
  end
14
14
  end
15
15
 
16
-
17
16
  # With "attr_accessor :request" HelperTest has "request" defined as a method
18
17
  # even when @request is set to nil
19
18
  #
@@ -27,150 +26,139 @@ class HelperTestWithoutRequest
27
26
  include Rack::Recaptcha::Helpers
28
27
  end
29
28
 
30
- context "Rack::Recaptcha::Helpers" do
31
- helper(:helper_test) { HelperTest.new }
32
-
33
- setup { Rack::Recaptcha.public_key = '0'*40 }
34
-
35
- context "recaptcha_tag" do
36
-
37
- context "ajax" do
38
- context "with display" do
39
- setup do
40
- mock(helper_test.request.env).[]('recaptcha.msg').returns(nil)
41
- helper_test.recaptcha_tag(:ajax,:display => {:theme => 'red'})
42
- end
43
-
44
- asserts_topic('has js').matches %r{recaptcha_ajax.js}
45
- asserts_topic('has div').matches %r{<div id="ajax_recaptcha"></div>}
46
- asserts_topic('has display').matches %r{RecaptchaOptions}
47
- asserts_topic('has theme').matches %r{"theme":"red"}
48
- end
49
-
50
- context "without display" do
51
- setup do
52
- mock(helper_test.request.env).[]('recaptcha.msg').returns(nil)
53
- helper_test.recaptcha_tag(:ajax)
54
- end
55
-
56
- asserts_topic('has js').matches %r{recaptcha_ajax.js}
57
- asserts_topic('has div').matches %r{<div id="ajax_recaptcha"></div>}
58
- denies_topic('has display').matches %r{RecaptchaOptions}
59
- denies_topic('has theme').matches %r{"theme":"red"}
60
- end
29
+ describe Rack::Recaptcha::Helpers do
30
+
31
+ def helper_test
32
+ HelperTest.new
33
+ end
34
+
35
+ def helper_test_without_request
36
+ HelperTestWithoutRequest.new
37
+ end
38
+
39
+ before do
40
+ Rack::Recaptcha.public_key = ::PUBLIC_KEY
41
+ end
42
+
43
+ describe ".recaptcha_tag" do
44
+
45
+ it "should render ajax with display" do
46
+ mock(helper_test.request.env).[]('recaptcha.msg').returns(nil)
47
+ topic = helper_test.recaptcha_tag(:ajax,:display => {:theme => 'red'})
48
+
49
+ assert_match %r{recaptcha_ajax.js}, topic
50
+ assert_match %r{<div id="ajax_recaptcha"></div>}, topic
51
+ assert_match %r{RecaptchaOptions}, topic
52
+ assert_match %r{"theme":"red"}, topic
61
53
  end
62
54
 
63
- context "noscript" do
64
- setup do
65
- mock(helper_test.request.env).[]('recaptcha.msg').returns(nil)
66
- helper_test.recaptcha_tag :noscript, :public_key => "hello_world_world", :language => :en
67
- end
68
-
69
- asserts_topic("iframe").matches %r{iframe}
70
- asserts_topic("no script tag").matches %r{<noscript>}
71
- asserts_topic("public key").matches %r{hello_world_world}
72
- asserts_topic("has language").matches %r{hl=en}
73
- denies_topic("has js").matches %r{recaptcha_ajax.js}
55
+ it "should render ajax without display" do
56
+ mock(helper_test.request.env).[]('recaptcha.msg').returns(nil)
57
+ topic = helper_test.recaptcha_tag(:ajax)
58
+
59
+ assert_match %r{recaptcha_ajax.js}, topic
60
+ assert_match %r{<div id="ajax_recaptcha"></div>}, topic
61
+ refute_match %r{RecaptchaOptions}, topic
62
+ refute_match %r{"theme":"red"}, topic
74
63
  end
75
64
 
76
- context "challenge" do
77
- setup do
78
- mock(helper_test.request.env).[]('recaptcha.msg').returns(nil)
79
- helper_test.recaptcha_tag(:challenge, :language => :en)
80
- end
81
-
82
- asserts_topic("has script tag").matches %r{script}
83
- asserts_topic("has challenge js").matches %r{challenge}
84
- denies_topic("has js").matches %r{recaptcha_ajax.js}
85
- denies_topic("has display").matches %r{RecaptchaOptions}
86
- asserts_topic("has public_key").matches %r{#{'0'*40}}
87
- asserts_topic("has language").matches %r{hl=en}
65
+ it "should render noscript" do
66
+ mock(helper_test.request.env).[]('recaptcha.msg').returns(nil)
67
+ topic = helper_test.recaptcha_tag :noscript, :public_key => "hello_world_world", :language => :en
68
+
69
+ assert_match %r{iframe}, topic
70
+ assert_match %r{<noscript>}, topic
71
+ assert_match %r{hello_world_world}, topic
72
+ assert_match %r{hl=en}, topic
73
+ refute_match %r{recaptcha_ajax.js}, topic
88
74
  end
89
75
 
90
- context "server" do
76
+ it "should render challenge" do
77
+ mock(helper_test.request.env).[]('recaptcha.msg').returns(nil)
78
+ topic = helper_test.recaptcha_tag(:challenge, :language => :en)
91
79
 
92
- asserts("using ssl url") do
93
- mock(helper_test.request.env).[]('recaptcha.msg').returns(nil)
94
- helper_test.recaptcha_tag(:challenge, :ssl => true)
95
- end.matches %r{#{Rack::Recaptcha::API_SECURE_URL}}
80
+ assert_match %r{script}, topic
81
+ assert_match %r{challenge}, topic
82
+ refute_match %r{recaptcha_ajax.js}, topic
83
+ refute_match %r{RecaptchaOptions}, topic
84
+ assert_match %r{#{'0'*40}}, topic
85
+ assert_match %r{hl=en}, topic
86
+ end
96
87
 
97
- asserts("using non ssl url") do
98
- mock(helper_test.request.env).[]('recaptcha.msg').returns(nil)
99
- helper_test.recaptcha_tag(:ajax)
100
- end.matches %r{#{Rack::Recaptcha::API_URL}}
88
+ it "should render script with SSL URL" do
89
+ mock(helper_test.request.env).[]('recaptcha.msg').returns(nil)
90
+ topic = helper_test.recaptcha_tag(:challenge, :ssl => true)
91
+ assert_match %r{#{Rack::Recaptcha::API_SECURE_URL}}, topic
101
92
  end
102
93
 
94
+ it "should render script with no SSL URL" do
95
+ mock(helper_test.request.env).[]('recaptcha.msg').returns(nil)
96
+ topic = helper_test.recaptcha_tag(:ajax)
97
+ assert_match %r{#{Rack::Recaptcha::API_URL}}, topic
98
+ end
103
99
  end
104
100
 
105
- context "recaptcha_tag_errors" do
106
- context "challenge with error" do
107
- setup do
108
- mock(helper_test.request.env).[]('recaptcha.msg').returns("Sample Error")
109
- helper_test.recaptcha_tag(:challenge)
110
- end
111
-
112
- asserts_topic("has script tag").matches %r{script}
113
- asserts_topic("has challenge js").matches %r{challenge}
114
- denies_topic("has js").matches %r{recaptcha_ajax.js}
115
- denies_topic("has display").matches %r{RecaptchaOptions}
116
- asserts_topic("has public_key").matches %r{#{'0'*40}}
117
- asserts_topic("has previous error").matches %r{Sample%20Error}
101
+ describe ".recaptcha_tag with errors" do
102
+ it "should render challenge with error" do
103
+ mock(helper_test.request.env).[]('recaptcha.msg').returns("Sample Error")
104
+ topic = helper_test.recaptcha_tag(:challenge)
105
+
106
+ assert_match %r{script}, topic
107
+ assert_match %r{challenge}, topic
108
+ refute_match %r{recaptcha_ajax.js}, topic
109
+ refute_match %r{RecaptchaOptions}, topic
110
+ assert_match %r{#{'0'*40}}, topic
111
+ assert_match %r{Sample%20Error}, topic
118
112
  end
119
113
 
120
- context "noscript with error" do
121
- setup do
122
- mock(helper_test.request.env).[]('recaptcha.msg').returns("Sample Error")
123
- helper_test.recaptcha_tag :noscript, :public_key => "hello_world_world"
124
- end
125
-
126
- asserts_topic("iframe").matches %r{iframe}
127
- asserts_topic("no script tag").matches %r{<noscript>}
128
- asserts_topic("public key").matches %r{hello_world_world}
129
- denies_topic("has js").matches %r{recaptcha_ajax.js}
130
- asserts_topic("has previous error").matches %r{Sample%20Error}
131
- end
114
+ it "should render noscript with error" do
115
+ mock(helper_test.request.env).[]('recaptcha.msg').returns("Sample Error")
116
+ topic = helper_test.recaptcha_tag :noscript, :public_key => "hello_world_world"
132
117
 
118
+ assert_match %r{iframe}, topic
119
+ assert_match %r{<noscript>}, topic
120
+ assert_match %r{hello_world_world}, topic
121
+ refute_match %r{recaptcha_ajax.js}, topic
122
+ assert_match %r{Sample%20Error}, topic
123
+ end
133
124
  end
134
125
 
135
- context "recaptcha_valid?" do
136
-
137
- asserts "that it passes when recaptcha.valid is true" do
126
+ describe ".recaptcha_valid?" do
127
+ it "should assert that it passes when recaptcha.valid is true" do
138
128
  Rack::Recaptcha.test_mode = nil
139
129
  mock(helper_test.request.env).[]('recaptcha.valid').returns(true)
140
- helper_test.recaptcha_valid?
130
+ assert helper_test.recaptcha_valid?
141
131
  end
142
132
 
143
- denies "that it passes when recaptcha.valid is false" do
133
+ it "should refute that it passes when recaptcha.valid is false" do
144
134
  Rack::Recaptcha.test_mode = nil
145
135
  mock(helper_test.request.env).[]('recaptcha.valid').returns(false)
146
- helper_test.recaptcha_valid?
136
+ refute helper_test.recaptcha_valid?
147
137
  end
148
138
 
149
- asserts "that it passes when test mode set to pass" do
139
+ it "should assert that it passes when test mode set to pass" do
150
140
  Rack::Recaptcha.test_mode!
151
- helper_test.recaptcha_valid?
141
+ assert helper_test.recaptcha_valid?
152
142
  end
153
143
 
154
- denies "that it passes when test mode set to fail" do
144
+ it "should assert that it passes when test mode set to fail" do
155
145
  Rack::Recaptcha.test_mode! :return => false
156
- helper_test.recaptcha_valid?
146
+ refute helper_test.recaptcha_valid?
157
147
  end
158
-
159
148
  end
160
- end
161
149
 
150
+ describe ".recaptcha_tag without request object" do
162
151
 
163
- context Rack::Recaptcha::Helpers do
164
- helper(:helper_test) { HelperTestWithoutRequest.new }
165
- context "request object not available. Rack-recaptcha shouldn't die" do
166
- setup do
167
- helper_test.recaptcha_tag(:challenge)
168
- end
152
+ it "should work without request object" do
153
+ topic = helper_test_without_request.recaptcha_tag(:challenge)
169
154
 
170
- asserts_topic("has script tag").matches %r{script}
171
- asserts_topic("has challenge js").matches %r{challenge}
172
- denies_topic("has js").matches %r{recaptcha_ajax.js}
173
- denies_topic("has display").matches %r{RecaptchaOptions}
174
- asserts_topic("has public_key").matches %r{#{'0'*40}}
155
+ assert_match %r{script}, topic
156
+ assert_match %r{challenge}, topic
157
+ refute_match %r{recaptcha_ajax.js}, topic
158
+ refute_match %r{RecaptchaOptions}, topic
159
+ assert_match %r{#{'0'*40}}, topic
175
160
  end
161
+
162
+ end
163
+
176
164
  end
@@ -1,55 +1,32 @@
1
- require File.expand_path '../teststrap', __FILE__
1
+ require File.expand_path '../test_helper', __FILE__
2
2
 
3
- FakeWeb.allow_net_connect = false
4
- context "Rack::Recaptcha" do
5
-
6
- context "basic request" do
7
- setup { get("/") ; last_response }
8
-
9
- asserts(:status).equals 200
10
- asserts(:body).equals "Hello world"
11
- end
12
-
13
- context "exposes" do
14
- setup { Rack::Recaptcha }
15
-
16
- asserts(:private_key).equals PRIVATE_KEY
17
- asserts(:public_key).equals PUBLIC_KEY
3
+ describe Rack::Recaptcha do
4
+ before do
5
+ FakeWeb.allow_net_connect = false
18
6
  end
19
7
 
20
- context "#test_mode!" do
21
- setup { Rack::Recaptcha }
22
-
23
- asserts "that it sets @@test_mode to be true" do
24
- topic.test_mode!
25
- topic.test_mode
8
+ describe "#test_mode!" do
9
+ it "should set test_mode to true" do
10
+ Rack::Recaptcha.test_mode!
11
+ assert Rack::Recaptcha.test_mode
26
12
  end
27
13
 
28
- denies "that it sets @@test_mode to be true if option set to false" do
29
- topic.test_mode! :return => false
30
- topic.test_mode
14
+ it "should set test_mode to true" do
15
+ Rack::Recaptcha.test_mode! :return => false
16
+ refute Rack::Recaptcha.test_mode
31
17
  end
32
18
  end
33
19
 
34
- context "login path" do
35
-
36
- asserts "GET login" do
37
- get '/login'
38
- last_response.body
39
- end.equals 'login'
40
-
41
-
42
- asserts "POST login passes and" do
43
- FakeWeb.register_uri(:post, Rack::Recaptcha::VERIFY_URL, :body => "true\nsuccess")
44
- post("/login", 'recaptcha_challenge_field' => 'challenge', 'recaptcha_response_field' => 'response')
45
- last_response.body
46
- end.equals 'post login'
47
-
48
- asserts "POST login fails and" do
49
- FakeWeb.register_uri(:post, Rack::Recaptcha::VERIFY_URL, :body => "false\nfailed")
50
- post("/login", 'recaptcha_challenge_field' => 'challenge', 'recaptcha_response_field' => 'response')
51
- last_response.body
52
- end.equals 'post fail'
20
+ it "should hit the login and pass" do
21
+ FakeWeb.register_uri(:post, Rack::Recaptcha::VERIFY_URL, :body => "true\nsuccess")
22
+ post("/login", 'recaptcha_challenge_field' => 'challenge', 'recaptcha_response_field' => 'response')
23
+ assert_equal 'post login', last_response.body
53
24
  end
54
25
 
26
+ it "should hit the login and fail" do
27
+ FakeWeb.register_uri(:post, Rack::Recaptcha::VERIFY_URL, :body => "false\nfailed")
28
+ post("/login", 'recaptcha_challenge_field' => 'challenge', 'recaptcha_response_field' => 'response')
29
+ assert_equal 'post fail', last_response.body
30
+ end
55
31
  end
32
+
@@ -1,20 +1,21 @@
1
1
  require 'rubygems'
2
+ gem 'minitest'
3
+ require 'minitest/autorun'
2
4
  require 'rack/test'
3
5
  require 'rack/mock'
4
6
  require 'rack/utils'
5
7
  require 'rack/session/cookie'
6
8
  require 'rack/builder'
7
- require 'rr'
8
- require 'riot'
9
- require 'riot/rr'
10
9
  require 'fakeweb'
10
+ require 'rr'
11
11
  require File.expand_path '../../lib/rack/recaptcha', __FILE__
12
12
 
13
- PUBLIC_KEY = '0'*40
13
+ PUBLIC_KEY = '0'*40
14
14
  PRIVATE_KEY = 'X'*40
15
15
 
16
- class Riot::Situation
16
+ class MiniTest::Spec
17
17
  include Rack::Test::Methods
18
+ include RR::Adapters::MiniTest
18
19
 
19
20
  def app
20
21
  main_app = lambda { |env|
@@ -40,6 +41,3 @@ class Riot::Situation
40
41
  builder.to_app
41
42
  end
42
43
  end
43
-
44
- class Riot::Context
45
- end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rack-recaptcha
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.5
4
+ version: 0.6.6
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -44,13 +44,13 @@ dependencies:
44
44
  - !ruby/object:Gem::Version
45
45
  version: 0.9.2
46
46
  - !ruby/object:Gem::Dependency
47
- name: riot
47
+ name: minitest
48
48
  requirement: !ruby/object:Gem::Requirement
49
49
  none: false
50
50
  requirements:
51
51
  - - ~>
52
52
  - !ruby/object:Gem::Version
53
- version: 0.12.3
53
+ version: '4.6'
54
54
  type: :development
55
55
  prerelease: false
56
56
  version_requirements: !ruby/object:Gem::Requirement
@@ -58,7 +58,7 @@ dependencies:
58
58
  requirements:
59
59
  - - ~>
60
60
  - !ruby/object:Gem::Version
61
- version: 0.12.3
61
+ version: '4.6'
62
62
  - !ruby/object:Gem::Dependency
63
63
  name: rack-test
64
64
  requirement: !ruby/object:Gem::Requirement
@@ -125,7 +125,7 @@ files:
125
125
  - lib/rack/recaptcha.rb
126
126
  - test/helpers_test.rb
127
127
  - test/recaptcha_test.rb
128
- - test/teststrap.rb
128
+ - test/test_helper.rb
129
129
  homepage: http://github.com/achiu/rack-recaptcha
130
130
  licenses: []
131
131
  post_install_message:
@@ -147,11 +147,11 @@ required_rubygems_version: !ruby/object:Gem::Requirement
147
147
  version: 1.3.6
148
148
  requirements: []
149
149
  rubyforge_project:
150
- rubygems_version: 1.8.21
150
+ rubygems_version: 1.8.23
151
151
  signing_key:
152
152
  specification_version: 3
153
153
  summary: Rack middleware for Recaptcha
154
154
  test_files:
155
155
  - test/helpers_test.rb
156
156
  - test/recaptcha_test.rb
157
- - test/teststrap.rb
157
+ - test/test_helper.rb