validates_email_format_of 1.5.3 → 1.6.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.
data/init.rb DELETED
@@ -1 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/rails/init')
data/test/database.yml DELETED
@@ -1,3 +0,0 @@
1
- plugin_test:
2
- adapter: sqlite3
3
- database: ":memory:"
@@ -1,3 +0,0 @@
1
- existing:
2
- id: 1
3
- email: test@example.com
@@ -1,33 +0,0 @@
1
- class Person < ActiveRecord::Base
2
- validates_email_format_of :email,
3
- :on => :create,
4
- :message => 'fails with custom message',
5
- :allow_nil => true
6
- end
7
-
8
- class PersonForbidNil < ActiveRecord::Base
9
- set_table_name 'people'
10
-
11
- validates_email_format_of :email,
12
- :on => :create,
13
- :allow_nil => false
14
- end
15
-
16
-
17
- class MxRecord < ActiveRecord::Base
18
- set_table_name 'people'
19
-
20
- validates_email_format_of :email,
21
- :on => :create,
22
- :check_mx => true
23
- end
24
-
25
- if ActiveRecord::VERSION::MAJOR >= 3
26
- class Shorthand < ActiveRecord::Base
27
- set_table_name 'people'
28
-
29
- validates :email, :email_format => { :message => 'fails with shorthand message' },
30
- :length => { :maximum => 1 }
31
-
32
- end
33
- end
data/test/schema.rb DELETED
@@ -1,5 +0,0 @@
1
- ActiveRecord::Schema.define(:version => 0) do
2
- create_table :people, :force => true do |t|
3
- t.column "email", :string
4
- end
5
- end
data/test/test_helper.rb DELETED
@@ -1,38 +0,0 @@
1
- $:.unshift(File.dirname(__FILE__) + '/../lib')
2
-
3
- require 'rubygems'
4
- require 'test/unit'
5
- require 'active_record'
6
- require 'active_record/fixtures'
7
- require "#{File.dirname(__FILE__)}/../init"
8
-
9
- config = YAML::load(IO.read(File.dirname(__FILE__) + '/database.yml'))
10
- ActiveRecord::Base.logger = Logger.new(File.dirname(__FILE__) + "/debug.log")
11
- ActiveRecord::Base.establish_connection(config[ENV['DB'] || 'plugin_test'])
12
-
13
- load(File.dirname(__FILE__) + "/schema.rb") if File.exist?(File.dirname(__FILE__) + "/schema.rb")
14
-
15
- if ActiveSupport.const_defined?(:TestCase)
16
- ActiveSupport::TestCase.send(:include, ActiveRecord::TestFixtures)
17
- TEST_CASE = ActiveSupport::TestCase
18
- else
19
- TEST_CASE = Test::Unit::TestCase
20
- end
21
-
22
- TEST_CASE.fixture_path = File.dirname(__FILE__) + "/fixtures/"
23
- $:.unshift(TEST_CASE.fixture_path)
24
-
25
- class TEST_CASE #:nodoc:
26
- def create_fixtures(*table_names)
27
- if block_given?
28
- Fixtures.create_fixtures(TEST_CASE.fixture_path, table_names) { yield }
29
- else
30
- Fixtures.create_fixtures(TEST_CASE.fixture_path, table_names)
31
- end
32
- end
33
-
34
- self.use_transactional_fixtures = false
35
-
36
- self.use_instantiated_fixtures = false
37
- end
38
-
@@ -1,242 +0,0 @@
1
- # -*- encoding : utf-8 -*-
2
- require File.expand_path(File.dirname(__FILE__) + '/test_helper')
3
-
4
- class ValidatesEmailFormatOfTest < TEST_CASE
5
- fixtures :people
6
-
7
- def setup
8
- @valid_email = 'valid@example.com'
9
- @invalid_email = 'invalid@example.'
10
- end
11
-
12
- def test_with_activerecord
13
- p = create_person(:email => @valid_email)
14
- save_passes(p)
15
-
16
- p = create_person(:email => @invalid_email)
17
- save_fails(p)
18
- end
19
-
20
- def test_without_activerecord
21
- assert_valid(@valid_email)
22
- assert_invalid(@invalid_email)
23
- end
24
-
25
- def test_should_allow_valid_email_addresses
26
- ['valid@example.com',
27
- 'Valid@test.example.com',
28
- 'valid+valid123@test.example.com',
29
- 'valid_valid123@test.example.com',
30
- 'valid-valid+123@test.example.co.uk',
31
- 'valid-valid+1.23@test.example.com.au',
32
- 'valid@example.co.uk',
33
- 'v@example.com',
34
- 'valid@example.ca',
35
- 'valid_@example.com',
36
- 'valid123.456@example.org',
37
- 'valid123.456@example.travel',
38
- 'valid123.456@example.museum',
39
- 'valid@example.mobi',
40
- 'valid@example.info',
41
- 'valid-@example.com',
42
- 'fake@p-t.k12.ok.us',
43
- # allow single character domain parts
44
- 'valid@mail.x.example.com',
45
- 'valid@x.com',
46
- 'valid@example.w-dash.sch.uk',
47
- # from RFC 3696, page 6
48
- 'customer/department=shipping@example.com',
49
- '$A12345@example.com',
50
- '!def!xyz%abc@example.com',
51
- '_somename@example.com',
52
- # apostrophes
53
- "test'test@example.com",
54
- # international domain names
55
- 'test@xn--bcher-kva.ch',
56
- 'test@example.xn--0zwm56d',
57
- 'test@192.192.192.1'
58
- ].each do |email|
59
- assert_valid(email)
60
- end
61
- end
62
-
63
- def test_should_not_allow_invalid_email_addresses
64
- ['invalid@example-com',
65
- # period can not start local part
66
- '.invalid@example.com',
67
- # period can not end local part
68
- 'invalid.@example.com',
69
- # period can not appear twice consecutively in local part
70
- 'invali..d@example.com',
71
- # should not allow underscores in domain names
72
- 'invalid@ex_mple.com',
73
- 'invalid@e..example.com',
74
- 'invalid@p-t..example.com',
75
- 'invalid@example.com.',
76
- 'invalid@example.com_',
77
- 'invalid@example.com-',
78
- 'invalid-example.com',
79
- 'invalid@example.b#r.com',
80
- 'invalid@example.c',
81
- 'invali d@example.com',
82
- # TLD can not be only numeric
83
- 'invalid@example.123',
84
- # unclosed quote
85
- "\"a-17180061943-10618354-1993365053@example.com",
86
- # too many special chars used to cause the regexp to hang
87
- "-+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++@foo",
88
- 'invalidexample.com',
89
- # should not allow special chars after a period in the domain
90
- 'local@sub.)domain.com',
91
- 'local@sub.#domain.com',
92
- # one at a time
93
- "foo@example.com\nexample@gmail.com",
94
- 'invalid@example.',
95
- "\"foo\\\\\"\"@bar.com",
96
- "foo@mail.com\r\nfoo@mail.com",
97
- '@example.com',
98
- 'foo@',
99
- 'foo',
100
- 'Iñtërnâtiônàlizætiøn@hasnt.happened.to.email'
101
- ].each do |email|
102
- assert_invalid(email)
103
- end
104
- end
105
-
106
- # from http://www.rfc-editor.org/errata_search.php?rfc=3696
107
- def test_should_allow_quoted_characters
108
- ['"Abc\@def"@example.com',
109
- '"Fred\ Bloggs"@example.com',
110
- '"Joe.\\Blow"@example.com',
111
- ].each do |email|
112
- assert_valid(email)
113
- end
114
- end
115
-
116
- def test_should_required_balanced_quoted_characters
117
- assert_valid(%!"example\\\\\\""@example.com!)
118
- assert_valid(%!"example\\\\"@example.com!)
119
- assert_invalid(%!"example\\\\""example.com!)
120
- end
121
-
122
- # from http://tools.ietf.org/html/rfc3696, page 5
123
- # corrected in http://www.rfc-editor.org/errata_search.php?rfc=3696
124
- def test_should_not_allow_escaped_characters_without_quotes
125
- ['Fred\ Bloggs_@example.com',
126
- 'Abc\@def+@example.com',
127
- 'Joe.\\Blow@example.com'
128
- ].each do |email|
129
- assert_invalid(email)
130
- end
131
- end
132
-
133
- def test_should_check_length_limits
134
- ['aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@example.com',
135
- 'test@aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.com'
136
- ].each do |email|
137
- assert_invalid(email)
138
- end
139
- end
140
-
141
- def test_overriding_length_checks
142
- assert_not_nil ValidatesEmailFormatOf::validate_email_format('valid@example.com', :local_length => 1)
143
- assert_not_nil ValidatesEmailFormatOf::validate_email_format('valid@example.com', :domain_length => 1)
144
- end
145
-
146
- def test_validating_with_custom_regexp
147
- assert_nil ValidatesEmailFormatOf::validate_email_format('012345@789', :with => /[0-9]+\@[0-9]+/)
148
- end
149
-
150
- def test_should_respect_validate_on_option
151
- p = create_person(:email => @valid_email)
152
- save_passes(p)
153
-
154
- # we only asked to validate on :create so this should fail
155
- assert p.update_attributes(:email => @invalid_email)
156
- assert_equal @invalid_email, p.email
157
- end
158
-
159
- def test_should_allow_custom_error_message
160
- p = create_person(:email => @invalid_email)
161
- save_fails(p)
162
- if ActiveRecord::VERSION::MAJOR >= 3
163
- assert_equal 'fails with custom message', p.errors[:email].first
164
- else
165
- assert_equal 'fails with custom message', p.errors.on(:email)
166
- end
167
- end
168
-
169
- def test_should_allow_nil
170
- p = create_person(:email => nil)
171
- save_passes(p)
172
-
173
- p = PersonForbidNil.new(:email => nil)
174
- save_fails(p)
175
- end
176
-
177
- # TODO: find a future-proof way to check DNS records
178
- def test_check_mx
179
- pmx = MxRecord.new(:email => 'test@dunae.ca')
180
- save_passes(pmx)
181
-
182
- pmx = MxRecord.new(:email => 'test@127.0.0.2')
183
- save_fails(pmx)
184
- end
185
-
186
- # TODO: find a future-proof way to check DNS records
187
- def test_check_mx_fallback_to_a
188
- pmx = MxRecord.new(:email => 'test@code.dunae.ca')
189
- save_passes(pmx)
190
- end
191
-
192
- def test_shorthand
193
- if ActiveRecord::VERSION::MAJOR >= 3
194
- s = Shorthand.new(:email => 'invalid')
195
- assert !s.save
196
- assert_equal 2, s.errors[:email].size
197
- assert_block do
198
- s.errors[:email].any? do |err|
199
- err =~ /fails with shorthand message/
200
- end
201
- end
202
- end
203
- end
204
-
205
- def test_frozen_string
206
- assert_valid(" #{@valid_email} ".freeze)
207
- assert_invalid(" #{@invalid_email} ".freeze)
208
- end
209
-
210
- protected
211
- def create_person(params)
212
- Person.new(params)
213
- end
214
-
215
- def assert_valid(email)
216
- assert_nil ValidatesEmailFormatOf::validate_email_format(email), "#{email} should be considered valid"
217
- end
218
-
219
- def assert_invalid(email)
220
- assert_not_nil ValidatesEmailFormatOf::validate_email_format(email), "#{email} should not be considered valid"
221
- end
222
-
223
- def save_passes(p, email = '')
224
- assert p.valid?, " #{email} should pass"
225
- assert p.save
226
- if ActiveRecord::VERSION::MAJOR >= 3
227
- assert p.errors[:email].empty?
228
- else
229
- assert_nil p.errors.on(:email)
230
- end
231
- end
232
-
233
- def save_fails(p, email = '')
234
- assert !p.valid?, " #{email} should fail"
235
- assert !p.save
236
- if ActiveRecord::VERSION::MAJOR >= 3
237
- assert_equal 1, p.errors[:email].size
238
- else
239
- assert p.errors.on(:email)
240
- end
241
- end
242
- end