is_bot 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
File without changes
data/Gemfile ADDED
@@ -0,0 +1,6 @@
1
+ # A sample Gemfile
2
+ source "http://rubygems.org"
3
+
4
+ gem "rails", "3.0.3"
5
+ gem "rspec", "2.4.0"
6
+ gem "sqlite3", "1.3.3"
data/Gemfile.lock ADDED
@@ -0,0 +1,83 @@
1
+ GEM
2
+ remote: http://rubygems.org/
3
+ specs:
4
+ abstract (1.0.0)
5
+ actionmailer (3.0.3)
6
+ actionpack (= 3.0.3)
7
+ mail (~> 2.2.9)
8
+ actionpack (3.0.3)
9
+ activemodel (= 3.0.3)
10
+ activesupport (= 3.0.3)
11
+ builder (~> 2.1.2)
12
+ erubis (~> 2.6.6)
13
+ i18n (~> 0.4)
14
+ rack (~> 1.2.1)
15
+ rack-mount (~> 0.6.13)
16
+ rack-test (~> 0.5.6)
17
+ tzinfo (~> 0.3.23)
18
+ activemodel (3.0.3)
19
+ activesupport (= 3.0.3)
20
+ builder (~> 2.1.2)
21
+ i18n (~> 0.4)
22
+ activerecord (3.0.3)
23
+ activemodel (= 3.0.3)
24
+ activesupport (= 3.0.3)
25
+ arel (~> 2.0.2)
26
+ tzinfo (~> 0.3.23)
27
+ activeresource (3.0.3)
28
+ activemodel (= 3.0.3)
29
+ activesupport (= 3.0.3)
30
+ activesupport (3.0.3)
31
+ arel (2.0.7)
32
+ builder (2.1.2)
33
+ diff-lcs (1.1.2)
34
+ erubis (2.6.6)
35
+ abstract (>= 1.0.0)
36
+ i18n (0.5.0)
37
+ mail (2.2.14)
38
+ activesupport (>= 2.3.6)
39
+ i18n (>= 0.4.0)
40
+ mime-types (~> 1.16)
41
+ treetop (~> 1.4.8)
42
+ mime-types (1.16)
43
+ polyglot (0.3.1)
44
+ rack (1.2.1)
45
+ rack-mount (0.6.13)
46
+ rack (>= 1.0.0)
47
+ rack-test (0.5.7)
48
+ rack (>= 1.0)
49
+ rails (3.0.3)
50
+ actionmailer (= 3.0.3)
51
+ actionpack (= 3.0.3)
52
+ activerecord (= 3.0.3)
53
+ activeresource (= 3.0.3)
54
+ activesupport (= 3.0.3)
55
+ bundler (~> 1.0)
56
+ railties (= 3.0.3)
57
+ railties (3.0.3)
58
+ actionpack (= 3.0.3)
59
+ activesupport (= 3.0.3)
60
+ rake (>= 0.8.7)
61
+ thor (~> 0.14.4)
62
+ rake (0.8.7)
63
+ rspec (2.4.0)
64
+ rspec-core (~> 2.4.0)
65
+ rspec-expectations (~> 2.4.0)
66
+ rspec-mocks (~> 2.4.0)
67
+ rspec-core (2.4.0)
68
+ rspec-expectations (2.4.0)
69
+ diff-lcs (~> 1.1.2)
70
+ rspec-mocks (2.4.0)
71
+ sqlite3 (1.3.3)
72
+ thor (0.14.6)
73
+ treetop (1.4.9)
74
+ polyglot (>= 0.3.1)
75
+ tzinfo (0.3.24)
76
+
77
+ PLATFORMS
78
+ ruby
79
+
80
+ DEPENDENCIES
81
+ rails (= 3.0.3)
82
+ rspec (= 2.4.0)
83
+ sqlite3 (= 1.3.3)
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.0
1
+ 0.2.0
data/is_bot.gemspec ADDED
@@ -0,0 +1,55 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run `rake gemspec`
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{is_bot}
8
+ s.version = "0.1.0"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Anuj Dutta"]
12
+ s.date = %q{2009-11-20}
13
+ s.description = %q{Simple gem to reduce the spam attacks on sign-up, sign-in and other similar sorts of forms.}
14
+ s.email = %q{anuj@andhapp.com}
15
+ s.extra_rdoc_files = [
16
+ "LICENSE",
17
+ "README.markdown"
18
+ ]
19
+ s.files = [
20
+ ".gitignore",
21
+ "LICENSE",
22
+ "README.markdown",
23
+ "Rakefile",
24
+ "VERSION",
25
+ "init.rb",
26
+ "lib/is_bot.rb",
27
+ "lib/is_bot/is_bot.rb",
28
+ "spec/database.yml",
29
+ "spec/is_bot_spec.rb",
30
+ "spec/models.rb",
31
+ "spec/schema.db",
32
+ "spec/spec.opts",
33
+ "spec/spec_helper.rb"
34
+ ]
35
+ s.homepage = %q{http://github.com/andhapp/is_bot}
36
+ s.rdoc_options = ["--charset=UTF-8"]
37
+ s.require_paths = ["lib"]
38
+ s.rubygems_version = %q{1.3.5}
39
+ s.summary = %q{Fight the bot.}
40
+ s.test_files = [
41
+ "spec/is_bot_spec.rb",
42
+ "spec/models.rb",
43
+ "spec/spec_helper.rb"
44
+ ]
45
+
46
+ if s.respond_to? :specification_version then
47
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
48
+ s.specification_version = 3
49
+
50
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
51
+ else
52
+ end
53
+ else
54
+ end
55
+ end
data/lib/is_bot/is_bot.rb CHANGED
@@ -4,20 +4,18 @@ module IsBot
4
4
  base.class_eval do
5
5
  extend ClassMethods
6
6
  class_inheritable_accessor :captcha_in_reverse
7
- end
7
+ end
8
8
  end
9
-
9
+
10
10
  module ClassMethods
11
11
  def validate_captcha(options = {})
12
- configuration = { :message => 'can not create this because you are a bot.', :on => :save }
13
- configuration.merge!(options)
14
- validates_each :captcha_in_reverse, configuration do |record, attr, value|
15
- record.errors.add attr, configuration[:message] if not value.blank?
12
+ validates_each :captcha_in_reverse do |record, attr, value|
13
+ record.errors[attr] << (options[:message] || "You are a bot!") unless value.blank?
16
14
  end
17
15
  end
18
16
  end
19
17
  end
20
-
18
+
21
19
  module ViewHelper
22
20
  def captcha_reverse_field(object, options={})
23
21
  style = (options.delete(:style) || '') << ";"
@@ -26,4 +24,4 @@ module IsBot
26
24
  end
27
25
  end
28
26
 
29
- end
27
+ end
Binary file
data/spec/database.yml CHANGED
@@ -1,3 +1,3 @@
1
1
  test:
2
- :adapter: sqlite3
3
- :database: is_bot.db
2
+ :adapter: sqlite3
3
+ :database: ':memory:'
data/spec/is_bot_spec.rb CHANGED
@@ -1,4 +1,4 @@
1
- %w(spec_helper ../init models).each{|path| require File.join(File.dirname(__FILE__), path) }
1
+ require 'spec_helper'
2
2
 
3
3
  # ********************* SET-UP **************************
4
4
  # ---------- Models
@@ -6,7 +6,7 @@
6
6
  # 1. Bot
7
7
  # 2. Robot
8
8
  # Both the models can be found in the models.rb file
9
- #
9
+ #
10
10
  # ---------- Schema
11
11
  # The schema is described in scehma.rb
12
12
  #
@@ -16,7 +16,7 @@
16
16
  describe IsBot do
17
17
  context "ClassMethods" do
18
18
  context "Set up" do
19
-
19
+
20
20
  it "should be in the list of included modules" do
21
21
  Bot.included_modules.should include(IsBot::CaptchaInReverse)
22
22
  end
@@ -24,7 +24,7 @@ describe IsBot do
24
24
  it "should add a virtual accessor 'captcha_in_reverse' to the class" do
25
25
  bot = Bot.new
26
26
  bot.should.respond_to?(:captcha_in_reverse)
27
- bot.should.respond_to?(:captcha_in_reverse=)
27
+ bot.should.respond_to?(:captcha_in_reverse=)
28
28
  end
29
29
 
30
30
  it "should add a class method 'validate_captcha'" do
@@ -38,13 +38,13 @@ describe IsBot do
38
38
  @bot = Bot.new
39
39
  end
40
40
 
41
- # because a bot would fill in the hidden field really
41
+ # because a bot would fill in the hidden field
42
42
  it "should add to the errors if 'captcha_in_reverse' is not blank?" do
43
43
  lambda {
44
44
  @bot.captcha_in_reverse = "I am a Bot!"
45
45
  @bot.valid?
46
46
  }.should change(@bot.errors, :size).by(1)
47
- @bot.errors.on "captcha_in_reverse" == "can not create this because you are a bot."
47
+ @bot.errors[:captcha_in_reverse] == "You are a bot!"
48
48
  end
49
49
 
50
50
  # because human is not expected to fill this field
@@ -53,41 +53,41 @@ describe IsBot do
53
53
  @bot.captcha_in_reverse = nil
54
54
  @bot.valid?
55
55
  }.should_not change(@bot.errors, :size).by(1)
56
- end
56
+ end
57
57
 
58
58
  context "Custom validation" do
59
59
  it "should accept a custom error message" do
60
- robot = Robot.new(:captcha_in_reverse => "I am a Bot!")
60
+ robot = Robot.new(:captcha_in_reverse => "I am a Bot!")
61
61
  robot.valid?
62
- robot.errors.on "captcha_in_reverse" == "You are a BOT. Go away."
62
+ robot.errors[:captcha_in_reverse] == "You are a BOT. Go away"
63
63
  end
64
64
  end
65
65
 
66
66
  end
67
67
  end
68
-
68
+
69
69
  context "Helper" do
70
70
  context "set up" do
71
71
  it "should include the defined custom helper module" do
72
72
  ViewHelper::ViewField.included_modules.should include(IsBot::ViewHelper)
73
73
  end
74
74
  end
75
-
75
+
76
76
  context "input tag" do
77
77
  it "should create one for adding captcha" do
78
78
  ViewHelper::ViewField.new.should.respond_to?(:captcha_reverse_field)
79
79
  end
80
-
80
+
81
81
  it "should be hidden" do
82
82
  captcha_field = ViewHelper::ViewField.new.captcha_reverse_field(:bot)
83
83
  captcha_field.should include("style=\";display: none;\"")
84
84
  end
85
-
85
+
86
86
  it "should include the custom defined styles" do
87
87
  captcha_field = ViewHelper::ViewField.new.captcha_reverse_field(:bot, {:style => "color:red"})
88
- captcha_field.should include("style=\"color:red;display: none;\"")
88
+ captcha_field.should include("style=\"color:red;display: none;\"")
89
89
  end
90
90
  end
91
91
  end
92
-
93
- end
92
+
93
+ end
data/spec/models.rb CHANGED
@@ -4,4 +4,4 @@ end
4
4
 
5
5
  class Robot < ActiveRecord::Base
6
6
  validate_captcha :message => "You are a BOT. Go away."
7
- end
7
+ end
data/spec/spec_helper.rb CHANGED
@@ -1,20 +1,21 @@
1
- require File.join(File.dirname(__FILE__), "..", "lib", "is_bot")
2
-
3
- require 'activerecord'
1
+ require 'active_record'
4
2
  require 'action_view'
5
3
  require 'yaml'
6
- require 'spec'
7
-
4
+ require 'rspec'
5
+
6
+ require File.expand_path("../../init", __FILE__)
7
+ require File.expand_path("../models", __FILE__)
8
+
8
9
  def connect(environment)
9
10
  conf = YAML::load(File.open(File.dirname(__FILE__) + '/database.yml'))
10
11
  ActiveRecord::Base.establish_connection(conf[environment])
11
12
  end
12
-
13
+
13
14
  connect('test')
14
15
  load(File.join(File.dirname(__FILE__), "schema.db"))
15
16
 
16
17
  module ViewHelper; class ViewField < ActionView::Base; end end
17
18
 
18
- Spec::Runner.configure do |config|
19
+ RSpec.configure do |config|
19
20
  config.include(ViewHelper)
20
- end
21
+ end
metadata CHANGED
@@ -1,7 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: is_bot
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 2
8
+ - 0
9
+ version: 0.2.0
5
10
  platform: ruby
6
11
  authors:
7
12
  - Anuj Dutta
@@ -9,10 +14,54 @@ autorequire:
9
14
  bindir: bin
10
15
  cert_chain: []
11
16
 
12
- date: 2009-11-20 00:00:00 +05:30
17
+ date: 2011-01-23 00:00:00 +00:00
13
18
  default_executable:
14
- dependencies: []
15
-
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: rails
22
+ requirement: &id001 !ruby/object:Gem::Requirement
23
+ none: false
24
+ requirements:
25
+ - - "="
26
+ - !ruby/object:Gem::Version
27
+ segments:
28
+ - 3
29
+ - 0
30
+ - 3
31
+ version: 3.0.3
32
+ type: :runtime
33
+ prerelease: false
34
+ version_requirements: *id001
35
+ - !ruby/object:Gem::Dependency
36
+ name: rspec
37
+ requirement: &id002 !ruby/object:Gem::Requirement
38
+ none: false
39
+ requirements:
40
+ - - "="
41
+ - !ruby/object:Gem::Version
42
+ segments:
43
+ - 2
44
+ - 4
45
+ - 0
46
+ version: 2.4.0
47
+ type: :runtime
48
+ prerelease: false
49
+ version_requirements: *id002
50
+ - !ruby/object:Gem::Dependency
51
+ name: sqlite3
52
+ requirement: &id003 !ruby/object:Gem::Requirement
53
+ none: false
54
+ requirements:
55
+ - - "="
56
+ - !ruby/object:Gem::Version
57
+ segments:
58
+ - 1
59
+ - 3
60
+ - 3
61
+ version: 1.3.3
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: *id003
16
65
  description: Simple gem to reduce the spam attacks on sign-up, sign-in and other similar sorts of forms.
17
66
  email: anuj@andhapp.com
18
67
  executables: []
@@ -23,45 +72,52 @@ extra_rdoc_files:
23
72
  - LICENSE
24
73
  - README.markdown
25
74
  files:
26
- - .gitignore
75
+ - .rspec
76
+ - Gemfile
77
+ - Gemfile.lock
27
78
  - LICENSE
28
79
  - README.markdown
29
80
  - Rakefile
30
81
  - VERSION
31
82
  - init.rb
83
+ - is_bot.gemspec
32
84
  - lib/is_bot.rb
33
85
  - lib/is_bot/is_bot.rb
86
+ - pkg/is_bot-0.1.0.gem
34
87
  - spec/database.yml
35
88
  - spec/is_bot_spec.rb
36
89
  - spec/models.rb
37
90
  - spec/schema.db
38
- - spec/spec.opts
39
91
  - spec/spec_helper.rb
40
92
  has_rdoc: true
41
93
  homepage: http://github.com/andhapp/is_bot
42
94
  licenses: []
43
95
 
44
96
  post_install_message:
45
- rdoc_options:
46
- - --charset=UTF-8
97
+ rdoc_options: []
98
+
47
99
  require_paths:
48
100
  - lib
49
101
  required_ruby_version: !ruby/object:Gem::Requirement
102
+ none: false
50
103
  requirements:
51
104
  - - ">="
52
105
  - !ruby/object:Gem::Version
106
+ segments:
107
+ - 0
53
108
  version: "0"
54
- version:
55
109
  required_rubygems_version: !ruby/object:Gem::Requirement
110
+ none: false
56
111
  requirements:
57
112
  - - ">="
58
113
  - !ruby/object:Gem::Version
114
+ segments:
115
+ - 0
59
116
  version: "0"
60
- version:
61
117
  requirements: []
62
118
 
63
119
  rubyforge_project:
64
- rubygems_version: 1.3.5
120
+ rubygems_version: 1.3.7
65
121
  signing_key:
66
122
  specification_version: 3
67
123
  summary: Fight the bot.
data/.gitignore DELETED
@@ -1,2 +0,0 @@
1
- is_bot.database
2
- is_bot.db