recaptcha 0.2.3 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -7,19 +7,25 @@ Info:: http://ambethia.com/recaptcha
7
7
  Git:: http://github.com/ambethia/recaptcha/tree/master
8
8
  Bugs:: http://github.com/ambethia/recaptcha/issues
9
9
 
10
- This plugin adds helpers for the {reCAPTCHA API}[http://recaptcha.net]. In your views you can use
11
- the +recaptcha_tags+ method to embed the needed javascript, and you can validate in your controllers
12
- with +verify_recaptcha+.
10
+ This plugin adds helpers for the {reCAPTCHA API}[http://recaptcha.net]. In your
11
+ views you can use the +recaptcha_tags+ method to embed the needed javascript,
12
+ and you can validate in your controllers with +verify_recaptcha+.
13
13
 
14
- You'll want to add your public and private API keys in the environment variables +RECAPTCHA_PUBLIC_KEY+
15
- and +RECAPTCHA_PRIVATE_KEY+, respectively. You could also specify them in <tt>config/environment.rb</tt> if you
16
- are so inclined (see below). Exceptions will be raised if you call these methods and the keys can't be found.
14
+ Beforehand you need to configure Recaptcha with your custom private and public
15
+ key. You may find detailed examples below. Exceptions will be raised if you
16
+ call these methods and the keys can't be found.
17
+
18
+ == About this fork
19
+
20
+ This fork tries to introduces a more convenient way to configure recaptcha's
21
+ settings. The API will be inspired by {Thoughtbot's
22
+ Hoptoad}[http://robots.thoughtbot.com/post/344833329/mygem-configure-block].
17
23
 
18
24
  == Rails Installation
19
25
 
20
26
  reCAPTCHA for Rails can be installed as a gem:
21
27
 
22
- config.gem "ambethia-recaptcha", :lib => "recaptcha/rails", :source => "http://gems.github.com"
28
+ config.gem "recaptcha", :lib => "recaptcha/rails"
23
29
 
24
30
  Or, as a standard rails plugin:
25
31
 
@@ -35,27 +41,43 @@ Initial Merb compatability funded by ALM Labs.
35
41
 
36
42
  == Setting up your API Keys
37
43
 
38
- There are two ways to setup your reCAPTCHA API keys once you {obtain}[http://recaptcha.net/whyrecaptcha.html]
39
- a pair. You can pass in your keys as options at runtime, for example:
44
+ There are multiple ways to setup your reCAPTCHA API key once you
45
+ {obtain}[http://recaptcha.net/whyrecaptcha.html] a pair.
40
46
 
41
- recaptcha_tags :public_key => '6Lc6BAAAAAAAAChqRbQZcn_yyyyyyyyyyyyyyyyy'
47
+ === Recaptcha.configure
42
48
 
43
- and later,
49
+ You may use the block style configuration. The following code could be placed
50
+ into a +config/initializers/recaptcha.rb+ when used in a Rails project.
44
51
 
45
- verify_recaptcha :private_key => '6Lc6BAAAAAAAAKN3DRm6VA_xxxxxxxxxxxxxxxxx'
52
+ Recaptcha.configure do |config|
53
+ config.public_key = '6Lc6BAAAAAAAAChqRbQZcn_yyyyyyyyyyyyyyyyy'
54
+ config.private_key = '6Lc6BAAAAAAAAKN3DRm6VA_xxxxxxxxxxxxxxxxx'
55
+ end
56
+
57
+ This way, you may also set additional options to fit recaptcha into your
58
+ deployment environment.
46
59
 
60
+ === Shell environment
47
61
 
48
- Or, preferably, you can keep your keys out of your code base by exporting the environment variables
49
- mentioned earlier. You might do this in the .profile/rc, or equivalent for the user running your
50
- application:
62
+ Or, you can keep your keys out of your code base by exporting the following
63
+ environment variables. You might do this in the .profile/rc, or equivalent for
64
+ the user running your application:
51
65
 
52
66
  export RECAPTCHA_PUBLIC_KEY = '6Lc6BAAAAAAAAChqRbQZcn_yyyyyyyyyyyyyyyyy'
53
67
  export RECAPTCHA_PRIVATE_KEY = '6Lc6BAAAAAAAAKN3DRm6VA_xxxxxxxxxxxxxxxxx'
54
68
 
55
- If that's not your thing, and dropping things into <tt>config/environment.rb</tt> is, you can just do:
69
+ === Per call
70
+
71
+ You can also pass in your keys as options at runtime, for example:
72
+
73
+ recaptcha_tags :public_key => '6Lc6BAAAAAAAAChqRbQZcn_yyyyyyyyyyyyyyyyy'
74
+
75
+ and later,
76
+
77
+ verify_recaptcha :private_key => '6Lc6BAAAAAAAAKN3DRm6VA_xxxxxxxxxxxxxxxxx'
56
78
 
57
- ENV['RECAPTCHA_PUBLIC_KEY'] = '6Lc6BAAAAAAAAChqRbQZcn_yyyyyyyyyyyyyyyyy'
58
- ENV['RECAPTCHA_PRIVATE_KEY'] = '6Lc6BAAAAAAAAKN3DRm6VA_xxxxxxxxxxxxxxxxx'
79
+ This option might be useful, if the same code base is used for multiple
80
+ reCAPTCHA setups.
59
81
 
60
82
  == +recaptcha_tags+
61
83
 
@@ -81,12 +103,13 @@ error will be added to the object for you to use.
81
103
  Some of the options available:
82
104
 
83
105
  <tt>:model</tt>:: Model to set errors
106
+ <tt>:attribute</tt>:: Model attribute to receive errors (default :base)
84
107
  <tt>:message</tt>:: Custom error message
85
108
  <tt>:private_key</tt>:: Your private API key, takes precedence over the ENV variable (default +nil+).
86
109
  <tt>:timeout</tt>:: The number of seconds to wait for reCAPTCHA servers before give up. (default +3+)
87
110
 
88
111
  respond_to do |format|
89
- if verify_recaptcha(:model => @post, :message => 'Oh! It's error with reCAPTCHA!') && @post.save
112
+ if verify_recaptcha(:model => @post, :message => "Oh! It's error with reCAPTCHA!") && @post.save
90
113
  # ...
91
114
  else
92
115
  # ...
data/Rakefile CHANGED
@@ -10,6 +10,8 @@ begin
10
10
  gem.authors = ["Jason L. Perry"]
11
11
  gem.email = "jasper@ambethia.com"
12
12
  gem.files.reject! { |fn| fn.include? ".gitignore" }
13
+ gem.add_development_dependency "mocha"
14
+ gem.add_development_dependency "activesupport"
13
15
  end
14
16
  Jeweler::GemcutterTasks.new
15
17
  rescue LoadError
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.3
1
+ 0.3.0
@@ -1,3 +1,4 @@
1
+ require 'recaptcha/configuration'
1
2
  require 'recaptcha/client_helper'
2
3
  require 'recaptcha/verify'
3
4
 
@@ -12,12 +13,28 @@ module Recaptcha
12
13
  end
13
14
 
14
15
 
15
- RECAPTCHA_API_SERVER = 'http://api.recaptcha.net';
16
- RECAPTCHA_API_SECURE_SERVER = 'https://api-secure.recaptcha.net';
17
- RECAPTCHA_VERIFY_SERVER = 'api-verify.recaptcha.net';
16
+ RECAPTCHA_API_SERVER_URL = 'http://www.google.com/recaptcha/api'
17
+ RECAPTCHA_API_SECURE_SERVER_URL = 'https://www.google.com/recaptcha/api'
18
+ RECAPTCHA_VERIFY_URL = 'http://www.google.com/recaptcha/api'
18
19
 
19
20
  SKIP_VERIFY_ENV = ['test', 'cucumber']
20
21
 
22
+ # Gives access to the current Configuration.
23
+ def self.configuration
24
+ @configuration ||= Configuration.new
25
+ end
26
+
27
+ # Allows easy setting of multiple configuration options. See Configuration
28
+ # for all available options.
29
+ #--
30
+ # The temp assignment is only used to get a nicer rdoc. Feel free to remove
31
+ # this hack.
32
+ #++
33
+ def self.configure
34
+ config = configuration
35
+ yield(config)
36
+ end
37
+
21
38
  class RecaptchaError < StandardError
22
39
  end
23
- end
40
+ end
@@ -1,13 +1,13 @@
1
1
  module Recaptcha
2
2
  module ClientHelper
3
3
  # Your public API can be specified in the +options+ hash or preferably
4
- # the environment variable +RECAPTCHA_PUBLIC_KEY+.
4
+ # using the Configuration.
5
5
  def recaptcha_tags(options = {})
6
6
  # Default options
7
- key = options[:public_key] ||= ENV['RECAPTCHA_PUBLIC_KEY']
7
+ key = options[:public_key] ||= Recaptcha.configuration.public_key
8
8
  raise RecaptchaError, "No public key specified." unless key
9
9
  error = options[:error] ||= (defined? flash ? flash[:recaptcha_error] : "")
10
- uri = options[:ssl] ? RECAPTCHA_API_SECURE_SERVER : RECAPTCHA_API_SERVER
10
+ uri = Recaptcha.configuration.api_server_url(options[:ssl])
11
11
  html = ""
12
12
  if options[:display]
13
13
  html << %{<script type="text/javascript">\n}
@@ -22,21 +22,21 @@ module Recaptcha
22
22
  html << %{</script>\n}
23
23
  else
24
24
  html << %{<script type="text/javascript" src="#{uri}/challenge?k=#{key}}
25
- html << %{#{error ? "&error=#{CGI::escape(error)}" : ""}"></script>\n}
25
+ html << %{#{error ? "&amp;error=#{CGI::escape(error)}" : ""}"></script>\n}
26
26
  unless options[:noscript] == false
27
27
  html << %{<noscript>\n }
28
28
  html << %{<iframe src="#{uri}/noscript?k=#{key}" }
29
29
  html << %{height="#{options[:iframe_height] ||= 300}" }
30
30
  html << %{width="#{options[:iframe_width] ||= 500}" }
31
- html << %{frameborder="0"></iframe><br/>\n }
31
+ html << %{style="border:none;"></iframe><br/>\n }
32
32
  html << %{<textarea name="recaptcha_challenge_field" }
33
33
  html << %{rows="#{options[:textarea_rows] ||= 3}" }
34
34
  html << %{cols="#{options[:textarea_cols] ||= 40}"></textarea>\n }
35
- html << %{<input type="hidden" name="recaptcha_response_field" value="manual_challenge">}
35
+ html << %{<input type="hidden" name="recaptcha_response_field" value="manual_challenge"/>}
36
36
  html << %{</noscript>\n}
37
37
  end
38
38
  end
39
- return html
39
+ return html.html_safe
40
40
  end # recaptcha_tags
41
41
  end # ClientHelper
42
42
  end # Recaptcha
@@ -0,0 +1,52 @@
1
+ module Recaptcha
2
+ # This class enables detailed configuration of the recaptcha services.
3
+ #
4
+ # By calling
5
+ #
6
+ # Recaptcha.configuration # => instance of Recaptcha::Configuration
7
+ #
8
+ # or
9
+ # Recaptcha.configure do |config|
10
+ # config # => instance of Recaptcha::Configuration
11
+ # end
12
+ #
13
+ # you are able to perform configuration updates.
14
+ #
15
+ # Your are able to customize all attributes listed below. All values have
16
+ # sensitive default and will very likely not need to be changed.
17
+ #
18
+ # Please note that the public and private key for the reCAPTCHA API Access
19
+ # have no useful default value. The keys may be set via the Shell enviroment
20
+ # or using this configuration. Settings within this configuration always take
21
+ # precedence.
22
+ #
23
+ # Setting the keys with this Configuration
24
+ #
25
+ # Recaptcha.configure do |config|
26
+ # config.public_key = '6Lc6BAAAAAAAAChqRbQZcn_yyyyyyyyyyyyyyyyy'
27
+ # config.private_key = '6Lc6BAAAAAAAAKN3DRm6VA_xxxxxxxxxxxxxxxxx'
28
+ # end
29
+ #
30
+ class Configuration
31
+ attr_accessor :nonssl_api_server_url,
32
+ :ssl_api_server_url,
33
+ :verify_url,
34
+ :skip_verify_env,
35
+ :private_key,
36
+ :public_key
37
+
38
+ def initialize #:nodoc:
39
+ @nonssl_api_server_url = RECAPTCHA_API_SERVER_URL
40
+ @ssl_api_server_url = RECAPTCHA_API_SECURE_SERVER_URL
41
+ @verify_url = RECAPTCHA_VERIFY_URL
42
+ @skip_verify_env = SKIP_VERIFY_ENV
43
+
44
+ @private_key = ENV['RECAPTCHA_PRIVATE_KEY']
45
+ @public_key = ENV['RECAPTCHA_PUBLIC_KEY']
46
+ end
47
+
48
+ def api_server_url(ssl = false) #:nodoc:
49
+ ssl ? ssl_api_server_url : nonssl_api_server_url
50
+ end
51
+ end
52
+ end
@@ -1,22 +1,23 @@
1
1
  module Recaptcha
2
2
  module Verify
3
3
  # Your private API can be specified in the +options+ hash or preferably
4
- # the environment variable +RECAPTCHA_PUBLIC_KEY+.
4
+ # using the Configuration.
5
5
  def verify_recaptcha(options = {})
6
6
  if !options.is_a? Hash
7
7
  options = {:model => options}
8
8
  end
9
9
 
10
10
  env = options[:env] || ENV['RAILS_ENV']
11
- return true if SKIP_VERIFY_ENV.include? env
11
+ return true if Recaptcha.configuration.skip_verify_env.include? env
12
12
  model = options[:model]
13
- private_key = options[:private_key] || ENV['RECAPTCHA_PRIVATE_KEY']
13
+ attribute = options[:attribute] || :base
14
+ private_key = options[:private_key] || Recaptcha.configuration.private_key
14
15
  raise RecaptchaError, "No private key specified." unless private_key
15
16
 
16
17
  begin
17
18
  recaptcha = nil
18
19
  Timeout::timeout(options[:timeout] || 3) do
19
- recaptcha = Net::HTTP.post_form URI.parse("http://#{RECAPTCHA_VERIFY_SERVER}/verify"), {
20
+ recaptcha = Net::HTTP.post_form URI.parse(Recaptcha.configuration.verify_url), {
20
21
  "privatekey" => private_key,
21
22
  "remoteip" => request.remote_ip,
22
23
  "challenge" => params[:recaptcha_challenge_field],
@@ -28,7 +29,7 @@ module Recaptcha
28
29
  flash[:recaptcha_error] = error
29
30
  if model
30
31
  model.valid?
31
- model.errors.add :base, options[:message] || "Word verification response is incorrect, please try again."
32
+ model.errors.add attribute, options[:message] || "Word verification response is incorrect, please try again."
32
33
  end
33
34
  return false
34
35
  else
@@ -39,7 +40,7 @@ module Recaptcha
39
40
  flash[:recaptcha_error] = "recaptcha-not-reachable"
40
41
  if model
41
42
  model.valid?
42
- model.errors.add :base, options[:message] || "Oops, we failed to validate your word verification response. Please try again."
43
+ model.errors.add attribute, options[:message] || "Oops, we failed to validate your word verification response. Please try again."
43
44
  end
44
45
  return false
45
46
  rescue Exception => e
@@ -1,56 +1,62 @@
1
1
  # Generated by jeweler
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{recaptcha}
8
- s.version = "0.2.3"
8
+ s.version = "0.3.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Jason L. Perry"]
12
- s.date = %q{2009-10-23}
12
+ s.date = %q{2010-12-16}
13
13
  s.description = %q{This plugin adds helpers for the reCAPTCHA API }
14
14
  s.email = %q{jasper@ambethia.com}
15
15
  s.extra_rdoc_files = [
16
16
  "LICENSE",
17
- "README.rdoc"
17
+ "README.rdoc"
18
18
  ]
19
19
  s.files = [
20
20
  "CHANGELOG",
21
- "LICENSE",
22
- "README.rdoc",
23
- "Rakefile",
24
- "VERSION",
25
- "init.rb",
26
- "lib/recaptcha.rb",
27
- "lib/recaptcha/client_helper.rb",
28
- "lib/recaptcha/merb.rb",
29
- "lib/recaptcha/rails.rb",
30
- "lib/recaptcha/verify.rb",
31
- "recaptcha.gemspec",
32
- "tasks/recaptcha_tasks.rake",
33
- "test/recaptcha_test.rb",
34
- "test/verify_recaptcha_test.rb"
21
+ "LICENSE",
22
+ "README.rdoc",
23
+ "Rakefile",
24
+ "VERSION",
25
+ "init.rb",
26
+ "lib/recaptcha.rb",
27
+ "lib/recaptcha/client_helper.rb",
28
+ "lib/recaptcha/configuration.rb",
29
+ "lib/recaptcha/merb.rb",
30
+ "lib/recaptcha/rails.rb",
31
+ "lib/recaptcha/verify.rb",
32
+ "recaptcha.gemspec",
33
+ "tasks/recaptcha_tasks.rake",
34
+ "test/recaptcha_test.rb",
35
+ "test/verify_recaptcha_test.rb"
35
36
  ]
36
37
  s.homepage = %q{http://ambethia.com/recaptcha}
37
- s.rdoc_options = ["--charset=UTF-8"]
38
38
  s.require_paths = ["lib"]
39
- s.rubygems_version = %q{1.3.5}
39
+ s.rubygems_version = %q{1.3.7}
40
40
  s.summary = %q{Helpers for the reCAPTCHA API}
41
41
  s.test_files = [
42
42
  "test/recaptcha_test.rb",
43
- "test/verify_recaptcha_test.rb"
43
+ "test/verify_recaptcha_test.rb"
44
44
  ]
45
45
 
46
46
  if s.respond_to? :specification_version then
47
47
  current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
48
48
  s.specification_version = 3
49
49
 
50
- if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
50
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
51
+ s.add_development_dependency(%q<mocha>, [">= 0"])
52
+ s.add_development_dependency(%q<activesupport>, [">= 0"])
51
53
  else
54
+ s.add_dependency(%q<mocha>, [">= 0"])
55
+ s.add_dependency(%q<activesupport>, [">= 0"])
52
56
  end
53
57
  else
58
+ s.add_dependency(%q<mocha>, [">= 0"])
59
+ s.add_dependency(%q<activesupport>, [">= 0"])
54
60
  end
55
61
  end
56
62
 
@@ -1,6 +1,6 @@
1
1
  require 'test/unit'
2
2
  require 'cgi'
3
- require File.dirname(__FILE__) + '/../lib/recaptcha'
3
+ require File.dirname(File.expand_path(__FILE__)) + '/../lib/recaptcha'
4
4
 
5
5
  class RecaptchaClientHelperTest < Test::Unit::TestCase
6
6
  include Recaptcha
@@ -11,17 +11,19 @@ class RecaptchaClientHelperTest < Test::Unit::TestCase
11
11
 
12
12
  def setup
13
13
  @session = {}
14
- ENV['RECAPTCHA_PUBLIC_KEY'] = '0000000000000000000000000000000000000000'
15
- ENV['RECAPTCHA_PRIVATE_KEY'] = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
14
+ Recaptcha.configure do |config|
15
+ config.public_key = '0000000000000000000000000000000000000000'
16
+ config.private_key = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
17
+ end
16
18
  end
17
19
 
18
20
  def test_recaptcha_tags
19
21
  # Might as well match something...
20
- assert_match /http:\/\/api.recaptcha.net/, recaptcha_tags
22
+ assert_match /http:\/\/www.google.com\/recaptcha\/api\/challenge/, recaptcha_tags
21
23
  end
22
24
 
23
25
  def test_recaptcha_tags_with_ssl
24
- assert_match /https:\/\/api-secure.recaptcha.net/, recaptcha_tags(:ssl => true)
26
+ assert_match /https:\/\/www.google.com\/recaptcha\/api\/challenge/, recaptcha_tags(:ssl => true)
25
27
  end
26
28
 
27
29
  def test_recaptcha_tags_without_noscript
@@ -30,7 +32,7 @@ class RecaptchaClientHelperTest < Test::Unit::TestCase
30
32
 
31
33
  def test_should_raise_exception_without_public_key
32
34
  assert_raise RecaptchaError do
33
- ENV['RECAPTCHA_PUBLIC_KEY'] = nil
35
+ Recaptcha.configuration.public_key = nil
34
36
  recaptcha_tags
35
37
  end
36
38
  end
@@ -1,30 +1,29 @@
1
1
  require 'test/unit'
2
- require 'rails/version' # For getting the rails version constants
3
- require 'active_support/vendor' # For loading I18n
2
+ require 'active_support/core_ext/string'
3
+ require 'rubygems'
4
4
  require 'mocha'
5
5
  require 'net/http'
6
- require File.dirname(__FILE__) + '/../lib/recaptcha'
6
+ require File.dirname(File.expand_path(__FILE__)) + '/../lib/recaptcha'
7
7
 
8
8
  class RecaptchaVerifyTest < Test::Unit::TestCase
9
9
  def setup
10
-
11
- ENV['RECAPTCHA_PRIVATE_KEY'] = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
10
+ Recaptcha.configuration.private_key = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
12
11
  @controller = TestController.new
13
12
  @controller.request = stub(:remote_ip => "1.1.1.1")
14
13
  @controller.params = {:recaptcha_challenge_field => "challenge", :recaptcha_response_field => "response"}
15
14
 
16
15
  @expected_post_data = {}
17
- @expected_post_data["privatekey"] = ENV['RECAPTCHA_PRIVATE_KEY']
16
+ @expected_post_data["privatekey"] = Recaptcha.configuration.private_key
18
17
  @expected_post_data["remoteip"] = @controller.request.remote_ip
19
18
  @expected_post_data["challenge"] = "challenge"
20
19
  @expected_post_data["response"] = "response"
21
20
 
22
- @expected_uri = URI.parse("http://#{Recaptcha::RECAPTCHA_VERIFY_SERVER}/verify")
21
+ @expected_uri = URI.parse(Recaptcha.configuration.verify_url)
23
22
  end
24
23
 
25
24
  def test_should_raise_exception_without_private_key
26
25
  assert_raise Recaptcha::RecaptchaError do
27
- ENV['RECAPTCHA_PRIVATE_KEY'] = nil
26
+ Recaptcha.configuration.private_key = nil
28
27
  @controller.verify_recaptcha
29
28
  end
30
29
  end
@@ -33,52 +32,52 @@ class RecaptchaVerifyTest < Test::Unit::TestCase
33
32
  expect_http_post(response_with_body("false\ninvalid-site-private-key"))
34
33
 
35
34
  assert !@controller.verify_recaptcha
36
- assert_equal "invalid-site-private-key", @controller.session[:recaptcha_error]
35
+ assert_equal "invalid-site-private-key", @controller.flash[:recaptcha_error]
37
36
  end
38
37
 
39
38
  def test_returns_true_on_success
40
- @controller.session[:recaptcha_error] = "previous error that should be cleared"
39
+ @controller.flash[:recaptcha_error] = "previous error that should be cleared"
41
40
  expect_http_post(response_with_body("true\n"))
42
41
 
43
42
  assert @controller.verify_recaptcha
44
- assert_nil @controller.session[:recaptcha_error]
43
+ assert_nil @controller.flash[:recaptcha_error]
45
44
  end
46
45
 
47
46
  def test_errors_should_be_added_to_model
48
47
  expect_http_post(response_with_body("false\nbad-news"))
49
48
 
50
49
  errors = mock
51
- errors.expects(:add).with(:base, "Captcha response is incorrect, please try again.")
50
+ errors.expects(:add).with(:base, "Word verification response is incorrect, please try again.")
52
51
  model = mock(:valid? => false, :errors => errors)
53
52
 
54
53
  assert !@controller.verify_recaptcha(:model => model)
55
- assert_equal "bad-news", @controller.session[:recaptcha_error]
54
+ assert_equal "bad-news", @controller.flash[:recaptcha_error]
56
55
  end
57
56
 
58
57
  def test_returns_true_on_success_with_optional_key
59
- @controller.session[:recaptcha_error] = "previous error that should be cleared"
58
+ @controller.flash[:recaptcha_error] = "previous error that should be cleared"
60
59
  # reset private key
61
60
  @expected_post_data["privatekey"] = 'ADIFFERENTPRIVATEKEYXXXXXXXXXXXXXX'
62
61
  expect_http_post(response_with_body("true\n"))
63
62
 
64
63
  assert @controller.verify_recaptcha(:private_key => 'ADIFFERENTPRIVATEKEYXXXXXXXXXXXXXX')
65
- assert_nil @controller.session[:recaptcha_error]
64
+ assert_nil @controller.flash[:recaptcha_error]
66
65
  end
67
66
 
68
67
  def test_timeout
69
68
  expect_http_post(Timeout::Error, :exception => true)
70
69
  assert !@controller.verify_recaptcha()
71
- assert_equal "recaptcha-not-reachable", @controller.session[:recaptcha_error]
70
+ assert_equal "recaptcha-not-reachable", @controller.flash[:recaptcha_error]
72
71
  end
73
72
 
74
73
  private
75
74
 
76
75
  class TestController
77
76
  include Recaptcha::Verify
78
- attr_accessor :request, :params, :session
77
+ attr_accessor :request, :params, :flash
79
78
 
80
79
  def initialize
81
- @session = {}
80
+ @flash = {}
82
81
  end
83
82
  end
84
83
 
metadata CHANGED
@@ -1,7 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: recaptcha
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 3
8
+ - 0
9
+ version: 0.3.0
5
10
  platform: ruby
6
11
  authors:
7
12
  - Jason L. Perry
@@ -9,10 +14,35 @@ autorequire:
9
14
  bindir: bin
10
15
  cert_chain: []
11
16
 
12
- date: 2009-10-23 00:00:00 -04:00
17
+ date: 2010-12-16 00:00:00 -05:00
13
18
  default_executable:
14
- dependencies: []
15
-
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: mocha
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ none: false
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ segments:
29
+ - 0
30
+ version: "0"
31
+ type: :development
32
+ version_requirements: *id001
33
+ - !ruby/object:Gem::Dependency
34
+ name: activesupport
35
+ prerelease: false
36
+ requirement: &id002 !ruby/object:Gem::Requirement
37
+ none: false
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ segments:
42
+ - 0
43
+ version: "0"
44
+ type: :development
45
+ version_requirements: *id002
16
46
  description: "This plugin adds helpers for the reCAPTCHA API "
17
47
  email: jasper@ambethia.com
18
48
  executables: []
@@ -31,6 +61,7 @@ files:
31
61
  - init.rb
32
62
  - lib/recaptcha.rb
33
63
  - lib/recaptcha/client_helper.rb
64
+ - lib/recaptcha/configuration.rb
34
65
  - lib/recaptcha/merb.rb
35
66
  - lib/recaptcha/rails.rb
36
67
  - lib/recaptcha/verify.rb
@@ -43,26 +74,30 @@ homepage: http://ambethia.com/recaptcha
43
74
  licenses: []
44
75
 
45
76
  post_install_message:
46
- rdoc_options:
47
- - --charset=UTF-8
77
+ rdoc_options: []
78
+
48
79
  require_paths:
49
80
  - lib
50
81
  required_ruby_version: !ruby/object:Gem::Requirement
82
+ none: false
51
83
  requirements:
52
84
  - - ">="
53
85
  - !ruby/object:Gem::Version
86
+ segments:
87
+ - 0
54
88
  version: "0"
55
- version:
56
89
  required_rubygems_version: !ruby/object:Gem::Requirement
90
+ none: false
57
91
  requirements:
58
92
  - - ">="
59
93
  - !ruby/object:Gem::Version
94
+ segments:
95
+ - 0
60
96
  version: "0"
61
- version:
62
97
  requirements: []
63
98
 
64
99
  rubyforge_project:
65
- rubygems_version: 1.3.5
100
+ rubygems_version: 1.3.7
66
101
  signing_key:
67
102
  specification_version: 3
68
103
  summary: Helpers for the reCAPTCHA API