recaptcha 0.2.3 → 0.3.0

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.
@@ -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