rack-recaptcha 0.4.1 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore CHANGED
@@ -17,5 +17,6 @@ tmtags
17
17
  coverage
18
18
  rdoc
19
19
  pkg
20
+ .rvmrc
20
21
 
21
22
  ## PROJECT::SPECIFIC
data/README.md CHANGED
@@ -43,11 +43,16 @@ Now configure your app to use the middleware. This might be different across eac
43
43
  config.middleware.use Rack::Recaptcha, :public_key => 'KEY', :private_key => 'SECRET'
44
44
  end
45
45
 
46
- ## application_helper.rb
46
+ ## application_helper.rb or whatever helper you want it in.
47
47
  module ApplicationHelper
48
48
  include Rack::Recaptcha::Helpers
49
49
  end
50
50
 
51
+ ## application_controller.rb or whatever controller you want it in.
52
+ module ApplicationController
53
+ include Rack::Recaptcha::Helpers
54
+ end
55
+
51
56
  ### Helpers
52
57
 
53
58
  The `Rack::Recaptcha::Helpers` module (for Sinatra, Rails, Padrino) adds these methods to your app:
@@ -63,6 +68,17 @@ The `Rack::Recaptcha::Helpers` module (for Sinatra, Rails, Padrino) adds these m
63
68
 
64
69
  * `recaptcha_valid?` -- returns whether or not the verification passed.
65
70
 
71
+ The `recaptcha_valid?` helper can also be overloaded during tests. You
72
+ can set its response to either true or false by doing the follow:
73
+
74
+ Rack::Recaptcha.test_mode!
75
+
76
+ will have the helper return true or
77
+
78
+ Rack::Recaptcha.test_mode! :return => false
79
+
80
+ to have the helper always return false.
81
+
66
82
  #### Example
67
83
 
68
84
  In Padrino, here's how you would use the helpers.
@@ -10,7 +10,12 @@ module Rack
10
10
  RESPONSE_FIELD = 'recaptcha_response_field'
11
11
 
12
12
  class << self
13
- attr_accessor :private_key, :public_key
13
+ attr_accessor :private_key, :public_key, :test_mode
14
+
15
+ def test_mode!(options = {})
16
+ value = options[:return]
17
+ self.test_mode = value.nil? ? true : options[:return]
18
+ end
14
19
  end
15
20
 
16
21
  # Initialize the Rack Middleware. Some of the available options are:
@@ -63,7 +63,8 @@ module Rack
63
63
 
64
64
  # Helper to return whether the recaptcha was accepted.
65
65
  def recaptcha_valid?
66
- request.env['recaptcha.valid']
66
+ test = Rack::Recaptcha.test_mode
67
+ test.nil? ? request.env['recaptcha.valid'] : test
67
68
  end
68
69
 
69
70
  end
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = %q{rack-recaptcha}
3
- s.version = "0.4.1"
3
+ s.version = "0.5.0"
4
4
  s.required_rubygems_version = ">=1.3.6"
5
5
  s.authors = ["Arthur Chiu"]
6
6
  s.date = %q{2010-07-18}
@@ -73,21 +73,25 @@ context "Rack::Recaptcha::Helpers" do
73
73
  end
74
74
 
75
75
  context "recaptcha_valid?" do
76
-
77
- context "passing" do
78
- setup do
79
- mock(helper_test.request.env).[]('recaptcha.valid').returns(true)
80
- end
81
76
 
82
- asserts("retrieves request") { helper_test.recaptcha_valid? }
77
+ asserts "that it passes when recaptcha.valid is true" do
78
+ mock(helper_test.request.env).[]('recaptcha.valid').returns(true)
79
+ helper_test.recaptcha_valid?
83
80
  end
84
81
 
85
- context "failing" do
86
- setup do
87
- mock(helper_test.request.env).[]('recaptcha.valid').returns(false)
88
- end
82
+ denies "that it passes when recaptcha.valid is false" do
83
+ mock(helper_test.request.env).[]('recaptcha.valid').returns(false)
84
+ helper_test.recaptcha_valid?
85
+ end
86
+
87
+ asserts "that it passes when test mode set to pass" do
88
+ Rack::Recaptcha.test_mode!
89
+ helper_test.recaptcha_valid?
90
+ end
89
91
 
90
- denies("that it retrieves request") { helper_test.recaptcha_valid? }
92
+ denies "that it passes when test mode set to fil" do
93
+ Rack::Recaptcha.test_mode! :return => false
94
+ helper_test.recaptcha_valid?
91
95
  end
92
96
 
93
97
  end
@@ -17,28 +17,39 @@ context "Rack::Recaptcha" do
17
17
  asserts(:public_key).equals PUBLIC_KEY
18
18
  end
19
19
 
20
- context "login path" do
20
+ context "#test_mode!" do
21
+ setup { Rack::Recaptcha }
21
22
 
22
- context "get" do
23
- setup { get('/login') }
24
- asserts("get login") { last_response.body }.equals 'login'
23
+ asserts "that it sets @@test_mode to be true" do
24
+ topic.test_mode!
25
+ topic.test_mode
25
26
  end
26
27
 
27
- context "post pass" do
28
- setup do
29
- FakeWeb.register_uri(:post, Rack::Recaptcha::VERIFY_URL, :body => "true\nsuccess")
30
- post("/login", 'recaptcha_challenge_field' => 'challenge', 'recaptcha_response_field' => 'response')
31
- end
32
- asserts("post login") { last_response.body }.equals 'post login'
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
33
31
  end
32
+ end
34
33
 
35
- context "post fail" do
36
- setup do
37
- FakeWeb.register_uri(:post, Rack::Recaptcha::VERIFY_URL, :body => "false\nfailed")
38
- post("/login", 'recaptcha_challenge_field' => 'challenge', 'recaptcha_response_field' => 'response')
39
- end
40
- asserts("post fail") { last_response.body }.equals 'post fail'
41
- end
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'
42
53
  end
43
54
 
44
55
  end
metadata CHANGED
@@ -1,13 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rack-recaptcha
3
3
  version: !ruby/object:Gem::Version
4
- hash: 13
5
- prerelease:
4
+ prerelease: false
6
5
  segments:
7
6
  - 0
8
- - 4
9
- - 1
10
- version: 0.4.1
7
+ - 5
8
+ - 0
9
+ version: 0.5.0
11
10
  platform: ruby
12
11
  authors:
13
12
  - Arthur Chiu
@@ -26,7 +25,6 @@ dependencies:
26
25
  requirements:
27
26
  - - ">="
28
27
  - !ruby/object:Gem::Version
29
- hash: 3
30
28
  segments:
31
29
  - 0
32
30
  version: "0"
@@ -40,7 +38,6 @@ dependencies:
40
38
  requirements:
41
39
  - - ~>
42
40
  - !ruby/object:Gem::Version
43
- hash: 41
44
41
  segments:
45
42
  - 0
46
43
  - 12
@@ -56,7 +53,6 @@ dependencies:
56
53
  requirements:
57
54
  - - ~>
58
55
  - !ruby/object:Gem::Version
59
- hash: 5
60
56
  segments:
61
57
  - 0
62
58
  - 5
@@ -72,7 +68,6 @@ dependencies:
72
68
  requirements:
73
69
  - - ~>
74
70
  - !ruby/object:Gem::Version
75
- hash: 27
76
71
  segments:
77
72
  - 1
78
73
  - 3
@@ -88,7 +83,6 @@ dependencies:
88
83
  requirements:
89
84
  - - ~>
90
85
  - !ruby/object:Gem::Version
91
- hash: 19
92
86
  segments:
93
87
  - 1
94
88
  - 0
@@ -131,7 +125,6 @@ required_ruby_version: !ruby/object:Gem::Requirement
131
125
  requirements:
132
126
  - - ">="
133
127
  - !ruby/object:Gem::Version
134
- hash: 3
135
128
  segments:
136
129
  - 0
137
130
  version: "0"
@@ -140,7 +133,6 @@ required_rubygems_version: !ruby/object:Gem::Requirement
140
133
  requirements:
141
134
  - - ">="
142
135
  - !ruby/object:Gem::Version
143
- hash: 23
144
136
  segments:
145
137
  - 1
146
138
  - 3
@@ -149,7 +141,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
149
141
  requirements: []
150
142
 
151
143
  rubyforge_project:
152
- rubygems_version: 1.6.1
144
+ rubygems_version: 1.3.7
153
145
  signing_key:
154
146
  specification_version: 3
155
147
  summary: Rack middleware for Recaptcha