acts_as_textcaptcha 3.0.3 → 3.0.4
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/.travis.yml +1 -0
- data/README.rdoc +2 -1
- data/lib/acts_as_textcaptcha/textcaptcha.rb +9 -5
- data/lib/acts_as_textcaptcha/version.rb +1 -1
- data/test/schema.rb +4 -0
- data/test/test_models.rb +8 -0
- data/test/textcaptcha_test.rb +9 -0
- metadata +19 -21
data/.travis.yml
CHANGED
data/README.rdoc
CHANGED
@@ -172,8 +172,9 @@ What do you need?
|
|
172
172
|
* {Rails}[http://github.com/rails/rails] >= 2.3.2 (including Rails 3)
|
173
173
|
* {Ruby}[http://ruby-lang.org/] >= 1.8.7 (also tested with REE and Ruby 1.9.2)
|
174
174
|
* {bcrypt-ruby}[http://bcrypt-ruby.rubyforge.org/] gem (to securely encrypt spam answers)
|
175
|
-
* {Text CAPTCHA API key}[http://textcaptcha.com/register] (_optional_, since you can define your own logic questions
|
175
|
+
* {Text CAPTCHA API key}[http://textcaptcha.com/register] (_optional_, since you can define your own logic questions)
|
176
176
|
* {MiniTest}[https://rubygems.org/gems/minitest] (_optional_ if you want to run the tests, built into Ruby 1.9)
|
177
|
+
* {SimpleCov}[https://rubygems.org/gems/simplecov] (_optional_ if you want to run the tests with code coverage reporting)
|
177
178
|
|
178
179
|
== Links
|
179
180
|
|
@@ -92,12 +92,16 @@ module ActsAsTextcaptcha
|
|
92
92
|
end
|
93
93
|
end
|
94
94
|
|
95
|
-
# fall back to textcaptcha_config questions
|
95
|
+
# fall back to textcaptcha_config questions if they are configured correctly
|
96
96
|
if textcaptcha_config[:questions]
|
97
|
-
random_question
|
98
|
-
|
99
|
-
|
100
|
-
|
97
|
+
random_question = textcaptcha_config[:questions][rand(textcaptcha_config[:questions].size)].symbolize_keys!
|
98
|
+
if random_question[:question] && random_question[:answers]
|
99
|
+
self.spam_question = random_question[:question]
|
100
|
+
self.spam_answers = encrypt_answers(random_question[:answers].split(',').map!{ |answer| md5_answer(answer) })
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
unless self.spam_question && self.spam_answers
|
101
105
|
self.spam_question = 'ActsAsTextcaptcha >> no API key (or questions) set and/or the textcaptcha service is currently unavailable (answer ok to bypass)'
|
102
106
|
self.spam_answers = 'ok'
|
103
107
|
end
|
data/test/schema.rb
CHANGED
data/test/test_models.rb
CHANGED
@@ -20,6 +20,14 @@ class Review < ActiveRecord::Base
|
|
20
20
|
'questions' => [{ 'question' => 'The green hat is what color?', 'answers' => 'green' }]
|
21
21
|
end
|
22
22
|
|
23
|
+
class MovieReview < ActiveRecord::Base
|
24
|
+
# inline options with all possible options
|
25
|
+
acts_as_textcaptcha 'api_key' => '8u5ixtdnq9csc84cok0owswgo',
|
26
|
+
'bcrypt_salt' => '$2a$10$j0bmycH.SVfD1b5mpEGPpe',
|
27
|
+
'bcrypt_cost' => '3',
|
28
|
+
'questions' => [{ 'Question' => 'The green hat is what color?', 'answers' => nil }]
|
29
|
+
end
|
30
|
+
|
23
31
|
class Note < ActiveRecord::Base
|
24
32
|
# inline options (string keys) with user defined questions only (no textcaptcha service)
|
25
33
|
acts_as_textcaptcha 'questions' => [{ 'question' => '1+1', 'answers' => '2,two' }],
|
data/test/textcaptcha_test.rb
CHANGED
@@ -178,6 +178,15 @@ describe 'Textcaptcha' do
|
|
178
178
|
@comment.spam_question.must_equal 'ActsAsTextcaptcha >> no API key (or questions) set and/or the textcaptcha service is currently unavailable (answer ok to bypass)'
|
179
179
|
@comment.spam_answers.must_equal 'ok'
|
180
180
|
end
|
181
|
+
|
182
|
+
it 'should not generate any spam question or answer when user defined questions set incorrectly' do
|
183
|
+
@comment = MovieReview.new
|
184
|
+
|
185
|
+
FakeWeb.register_uri(:get, %r|http://textcaptcha\.com/api/|, :exception => SocketError)
|
186
|
+
@comment.textcaptcha
|
187
|
+
@comment.spam_question.must_equal 'ActsAsTextcaptcha >> no API key (or questions) set and/or the textcaptcha service is currently unavailable (answer ok to bypass)'
|
188
|
+
@comment.spam_answers.must_equal 'ok'
|
189
|
+
end
|
181
190
|
end
|
182
191
|
|
183
192
|
describe 'configuration' do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: acts_as_textcaptcha
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.0.
|
4
|
+
version: 3.0.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,12 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-
|
13
|
-
default_executable:
|
12
|
+
date: 2011-10-06 00:00:00.000000000Z
|
14
13
|
dependencies:
|
15
14
|
- !ruby/object:Gem::Dependency
|
16
15
|
name: bcrypt-ruby
|
17
|
-
requirement: &
|
16
|
+
requirement: &2165789020 !ruby/object:Gem::Requirement
|
18
17
|
none: false
|
19
18
|
requirements:
|
20
19
|
- - ~>
|
@@ -22,10 +21,10 @@ dependencies:
|
|
22
21
|
version: 2.1.4
|
23
22
|
type: :runtime
|
24
23
|
prerelease: false
|
25
|
-
version_requirements: *
|
24
|
+
version_requirements: *2165789020
|
26
25
|
- !ruby/object:Gem::Dependency
|
27
26
|
name: rails
|
28
|
-
requirement: &
|
27
|
+
requirement: &2165788600 !ruby/object:Gem::Requirement
|
29
28
|
none: false
|
30
29
|
requirements:
|
31
30
|
- - ! '>='
|
@@ -33,10 +32,10 @@ dependencies:
|
|
33
32
|
version: '0'
|
34
33
|
type: :development
|
35
34
|
prerelease: false
|
36
|
-
version_requirements: *
|
35
|
+
version_requirements: *2165788600
|
37
36
|
- !ruby/object:Gem::Dependency
|
38
37
|
name: bundler
|
39
|
-
requirement: &
|
38
|
+
requirement: &2165788140 !ruby/object:Gem::Requirement
|
40
39
|
none: false
|
41
40
|
requirements:
|
42
41
|
- - ! '>='
|
@@ -44,10 +43,10 @@ dependencies:
|
|
44
43
|
version: '0'
|
45
44
|
type: :development
|
46
45
|
prerelease: false
|
47
|
-
version_requirements: *
|
46
|
+
version_requirements: *2165788140
|
48
47
|
- !ruby/object:Gem::Dependency
|
49
48
|
name: minitest
|
50
|
-
requirement: &
|
49
|
+
requirement: &2165787720 !ruby/object:Gem::Requirement
|
51
50
|
none: false
|
52
51
|
requirements:
|
53
52
|
- - ! '>='
|
@@ -55,10 +54,10 @@ dependencies:
|
|
55
54
|
version: '0'
|
56
55
|
type: :development
|
57
56
|
prerelease: false
|
58
|
-
version_requirements: *
|
57
|
+
version_requirements: *2165787720
|
59
58
|
- !ruby/object:Gem::Dependency
|
60
59
|
name: simplecov
|
61
|
-
requirement: &
|
60
|
+
requirement: &2165787300 !ruby/object:Gem::Requirement
|
62
61
|
none: false
|
63
62
|
requirements:
|
64
63
|
- - ! '>='
|
@@ -66,10 +65,10 @@ dependencies:
|
|
66
65
|
version: '0'
|
67
66
|
type: :development
|
68
67
|
prerelease: false
|
69
|
-
version_requirements: *
|
68
|
+
version_requirements: *2165787300
|
70
69
|
- !ruby/object:Gem::Dependency
|
71
70
|
name: rdoc
|
72
|
-
requirement: &
|
71
|
+
requirement: &2165786880 !ruby/object:Gem::Requirement
|
73
72
|
none: false
|
74
73
|
requirements:
|
75
74
|
- - ! '>='
|
@@ -77,10 +76,10 @@ dependencies:
|
|
77
76
|
version: '0'
|
78
77
|
type: :development
|
79
78
|
prerelease: false
|
80
|
-
version_requirements: *
|
79
|
+
version_requirements: *2165786880
|
81
80
|
- !ruby/object:Gem::Dependency
|
82
81
|
name: sqlite3
|
83
|
-
requirement: &
|
82
|
+
requirement: &2165786460 !ruby/object:Gem::Requirement
|
84
83
|
none: false
|
85
84
|
requirements:
|
86
85
|
- - ! '>='
|
@@ -88,10 +87,10 @@ dependencies:
|
|
88
87
|
version: '0'
|
89
88
|
type: :development
|
90
89
|
prerelease: false
|
91
|
-
version_requirements: *
|
90
|
+
version_requirements: *2165786460
|
92
91
|
- !ruby/object:Gem::Dependency
|
93
92
|
name: fakeweb
|
94
|
-
requirement: &
|
93
|
+
requirement: &2165786040 !ruby/object:Gem::Requirement
|
95
94
|
none: false
|
96
95
|
requirements:
|
97
96
|
- - ! '>='
|
@@ -99,7 +98,7 @@ dependencies:
|
|
99
98
|
version: '0'
|
100
99
|
type: :development
|
101
100
|
prerelease: false
|
102
|
-
version_requirements: *
|
101
|
+
version_requirements: *2165786040
|
103
102
|
description: ! "Simple question/answer based spam protection for your Rails models.\n
|
104
103
|
\ You can define your own logic questions and/or fetch questions from the textcaptcha.com
|
105
104
|
API.\n The questions involve human logic and are tough for spam bots to crack.\n
|
@@ -133,7 +132,6 @@ files:
|
|
133
132
|
- test/test_models.rb
|
134
133
|
- test/textcaptcha_helper_test.rb
|
135
134
|
- test/textcaptcha_test.rb
|
136
|
-
has_rdoc: true
|
137
135
|
homepage: http://github.com/matthutchinson/acts_as_textcaptcha
|
138
136
|
licenses: []
|
139
137
|
post_install_message:
|
@@ -154,7 +152,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
154
152
|
version: '0'
|
155
153
|
requirements: []
|
156
154
|
rubyforge_project:
|
157
|
-
rubygems_version: 1.
|
155
|
+
rubygems_version: 1.8.7
|
158
156
|
signing_key:
|
159
157
|
specification_version: 3
|
160
158
|
summary: Spam protection for your models via logic questions and the textcaptcha.com
|