validate_email 0.1.2 → 0.1.3
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/lib/validates_email.rb +7 -6
- data/rails/init.rb +1 -1
- data/spec/resources/user.rb +0 -2
- data/spec/resources/user_with_ar.rb +5 -0
- data/spec/resources/user_with_ar_legacy.rb +5 -0
- data/spec/resources/user_with_blank.rb +0 -2
- data/spec/resources/{user_with_legacy_syntax.rb → user_with_legacy.rb} +1 -3
- data/spec/resources/user_with_nil.rb +0 -2
- data/spec/spec_helper.rb +18 -6
- data/spec/validates_email_spec.rb +38 -2
- metadata +54 -10
data/lib/validates_email.rb
CHANGED
@@ -1,18 +1,21 @@
|
|
1
1
|
require 'active_model'
|
2
|
-
require 'active_model/validations'
|
3
2
|
require 'mail'
|
4
3
|
|
5
|
-
module
|
6
|
-
module
|
4
|
+
module ActiveModel
|
5
|
+
module Validations
|
7
6
|
class EmailValidator < ActiveModel::EachValidator
|
7
|
+
|
8
8
|
def initialize(options)
|
9
9
|
options.reverse_merge!(:message => "is not valid email")
|
10
10
|
super(options)
|
11
11
|
end
|
12
12
|
|
13
13
|
def validate_each(record, attribute, value)
|
14
|
+
return if options[:allow_nil] && value.nil?
|
15
|
+
|
14
16
|
begin
|
15
|
-
mail = Mail::Address.new(value)
|
17
|
+
mail = Mail::Address.new(value)
|
18
|
+
|
16
19
|
unless mail.address == value && mail.domain.split(".").length > 1
|
17
20
|
record.errors.add(attribute, options[:message])
|
18
21
|
end
|
@@ -30,5 +33,3 @@ module Perfectline
|
|
30
33
|
end
|
31
34
|
end
|
32
35
|
|
33
|
-
ActiveModel::Validations::HelperMethods.send(:include, Perfectline::ValidatesEmail::ClassMethods)
|
34
|
-
ActiveModel::Validations::EmailValidator = Perfectline::ValidatesEmail::EmailValidator
|
data/rails/init.rb
CHANGED
@@ -1 +1 @@
|
|
1
|
-
require 'validates_email'
|
1
|
+
require 'validates_email'
|
data/spec/resources/user.rb
CHANGED
data/spec/spec_helper.rb
CHANGED
@@ -2,11 +2,23 @@ $LOAD_PATH.unshift(File.dirname(__FILE__) + '/../lib')
|
|
2
2
|
$LOAD_PATH.unshift(File.dirname(__FILE__) + '/resources')
|
3
3
|
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
4
4
|
|
5
|
-
require '
|
6
|
-
require '
|
5
|
+
require 'rspec'
|
6
|
+
require 'sqlite3'
|
7
|
+
require 'active_record'
|
8
|
+
require 'active_record/base'
|
9
|
+
require 'active_record/migration'
|
7
10
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
11
|
+
ActiveRecord::Migration.verbose = false
|
12
|
+
ActiveRecord::Base.establish_connection(
|
13
|
+
"adapter" => "sqlite3",
|
14
|
+
"database" => ":memory"
|
15
|
+
)
|
12
16
|
|
17
|
+
require File.join(File.dirname(__FILE__), '..', 'rails', 'init')
|
18
|
+
|
19
|
+
autoload :User, 'resources/user'
|
20
|
+
autoload :UserWithNil, 'resources/user_with_nil'
|
21
|
+
autoload :UserWithBlank, 'resources/user_with_blank'
|
22
|
+
autoload :UserWithLegacy, 'resources/user_with_legacy'
|
23
|
+
autoload :UserWithAr, 'resources/user_with_ar'
|
24
|
+
autoload :UserWithArLegacy, 'resources/user_with_ar_legacy'
|
@@ -1,6 +1,20 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe "
|
3
|
+
describe "Email validation" do
|
4
|
+
|
5
|
+
before(:all) do
|
6
|
+
ActiveRecord::Schema.define(:version => 1) do
|
7
|
+
|
8
|
+
create_table :users, :force => true do |t|
|
9
|
+
t.column :email_address, :string
|
10
|
+
end
|
11
|
+
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
after(:all) do
|
16
|
+
ActiveRecord::Base.connection.drop_table(:users)
|
17
|
+
end
|
4
18
|
|
5
19
|
context "with regular validator" do
|
6
20
|
before do
|
@@ -87,7 +101,7 @@ describe "Enail validation", Perfectline::ValidatesEmail::EmailValidator do
|
|
87
101
|
|
88
102
|
context "with legacy syntax" do
|
89
103
|
before do
|
90
|
-
@user =
|
104
|
+
@user = UserWithLegacy.new
|
91
105
|
end
|
92
106
|
|
93
107
|
it "should allow nil as email" do
|
@@ -111,4 +125,26 @@ describe "Enail validation", Perfectline::ValidatesEmail::EmailValidator do
|
|
111
125
|
end
|
112
126
|
end
|
113
127
|
|
128
|
+
context "with ActiveRecord" do
|
129
|
+
before do
|
130
|
+
@user = UserWithAr.new
|
131
|
+
end
|
132
|
+
|
133
|
+
it "should not allow invalid email" do
|
134
|
+
@user.email_address = ""
|
135
|
+
@user.should_not be_valid
|
136
|
+
end
|
137
|
+
end
|
138
|
+
|
139
|
+
context "with ActiveRecord and legacy syntax" do
|
140
|
+
before do
|
141
|
+
@user = UserWithArLegacy.new
|
142
|
+
end
|
143
|
+
|
144
|
+
it "should not allow invalid email" do
|
145
|
+
@user.email_address = ""
|
146
|
+
@user.should_not be_valid
|
147
|
+
end
|
148
|
+
end
|
149
|
+
|
114
150
|
end
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 1
|
8
|
-
-
|
9
|
-
version: 0.1.
|
8
|
+
- 3
|
9
|
+
version: 0.1.3
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Tanel Suurhans
|
@@ -22,6 +22,7 @@ dependencies:
|
|
22
22
|
name: rspec
|
23
23
|
prerelease: false
|
24
24
|
requirement: &id001 !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
25
26
|
requirements:
|
26
27
|
- - ">="
|
27
28
|
- !ruby/object:Gem::Version
|
@@ -34,6 +35,7 @@ dependencies:
|
|
34
35
|
name: diff-lcs
|
35
36
|
prerelease: false
|
36
37
|
requirement: &id002 !ruby/object:Gem::Requirement
|
38
|
+
none: false
|
37
39
|
requirements:
|
38
40
|
- - ">="
|
39
41
|
- !ruby/object:Gem::Version
|
@@ -45,9 +47,38 @@ dependencies:
|
|
45
47
|
type: :development
|
46
48
|
version_requirements: *id002
|
47
49
|
- !ruby/object:Gem::Dependency
|
48
|
-
name:
|
50
|
+
name: active_record
|
49
51
|
prerelease: false
|
50
52
|
requirement: &id003 !ruby/object:Gem::Requirement
|
53
|
+
none: false
|
54
|
+
requirements:
|
55
|
+
- - ">="
|
56
|
+
- !ruby/object:Gem::Version
|
57
|
+
segments:
|
58
|
+
- 3
|
59
|
+
- 0
|
60
|
+
- 0
|
61
|
+
version: 3.0.0
|
62
|
+
type: :development
|
63
|
+
version_requirements: *id003
|
64
|
+
- !ruby/object:Gem::Dependency
|
65
|
+
name: sqlite3-ruby
|
66
|
+
prerelease: false
|
67
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
68
|
+
none: false
|
69
|
+
requirements:
|
70
|
+
- - ">="
|
71
|
+
- !ruby/object:Gem::Version
|
72
|
+
segments:
|
73
|
+
- 0
|
74
|
+
version: "0"
|
75
|
+
type: :development
|
76
|
+
version_requirements: *id004
|
77
|
+
- !ruby/object:Gem::Dependency
|
78
|
+
name: mail
|
79
|
+
prerelease: false
|
80
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
51
82
|
requirements:
|
52
83
|
- - ">="
|
53
84
|
- !ruby/object:Gem::Version
|
@@ -57,11 +88,12 @@ dependencies:
|
|
57
88
|
- 5
|
58
89
|
version: 2.2.5
|
59
90
|
type: :runtime
|
60
|
-
version_requirements: *
|
91
|
+
version_requirements: *id005
|
61
92
|
- !ruby/object:Gem::Dependency
|
62
93
|
name: activemodel
|
63
94
|
prerelease: false
|
64
|
-
requirement: &
|
95
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
96
|
+
none: false
|
65
97
|
requirements:
|
66
98
|
- - ">="
|
67
99
|
- !ruby/object:Gem::Version
|
@@ -70,7 +102,7 @@ dependencies:
|
|
70
102
|
- 0
|
71
103
|
version: "3.0"
|
72
104
|
type: :runtime
|
73
|
-
version_requirements: *
|
105
|
+
version_requirements: *id006
|
74
106
|
description: Library for validating email addresses in Rails 3 models.
|
75
107
|
email:
|
76
108
|
- tanel.suurhans@perfectline.ee
|
@@ -86,6 +118,14 @@ files:
|
|
86
118
|
- install.rb
|
87
119
|
- lib/validates_email.rb
|
88
120
|
- rails/init.rb
|
121
|
+
- spec/resources/user_with_blank.rb
|
122
|
+
- spec/resources/user_with_nil.rb
|
123
|
+
- spec/resources/user_with_ar.rb
|
124
|
+
- spec/resources/user_with_ar_legacy.rb
|
125
|
+
- spec/resources/user_with_legacy.rb
|
126
|
+
- spec/resources/user.rb
|
127
|
+
- spec/validates_email_spec.rb
|
128
|
+
- spec/spec_helper.rb
|
89
129
|
has_rdoc: true
|
90
130
|
homepage: http://github.com/perfectline/validates_email/tree/master
|
91
131
|
licenses: []
|
@@ -96,6 +136,7 @@ rdoc_options:
|
|
96
136
|
require_paths:
|
97
137
|
- lib
|
98
138
|
required_ruby_version: !ruby/object:Gem::Requirement
|
139
|
+
none: false
|
99
140
|
requirements:
|
100
141
|
- - ">="
|
101
142
|
- !ruby/object:Gem::Version
|
@@ -103,6 +144,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
103
144
|
- 0
|
104
145
|
version: "0"
|
105
146
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
147
|
+
none: false
|
106
148
|
requirements:
|
107
149
|
- - ">="
|
108
150
|
- !ruby/object:Gem::Version
|
@@ -112,14 +154,16 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
112
154
|
requirements: []
|
113
155
|
|
114
156
|
rubyforge_project:
|
115
|
-
rubygems_version: 1.3.
|
157
|
+
rubygems_version: 1.3.7
|
116
158
|
signing_key:
|
117
159
|
specification_version: 3
|
118
160
|
summary: Library for validating email addresses in Rails 3 models.
|
119
161
|
test_files:
|
120
|
-
- spec/resources/user.rb
|
121
162
|
- spec/resources/user_with_blank.rb
|
122
|
-
- spec/resources/user_with_legacy_syntax.rb
|
123
163
|
- spec/resources/user_with_nil.rb
|
124
|
-
- spec/
|
164
|
+
- spec/resources/user_with_ar.rb
|
165
|
+
- spec/resources/user_with_ar_legacy.rb
|
166
|
+
- spec/resources/user_with_legacy.rb
|
167
|
+
- spec/resources/user.rb
|
125
168
|
- spec/validates_email_spec.rb
|
169
|
+
- spec/spec_helper.rb
|