validators 2.5.3 → 2.5.4
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.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/.travis.yml +8 -4
- data/Rakefile +9 -4
- data/data/disposable.json +1412 -23
- data/data/tld.json +391 -5
- data/lib/validators/version.rb +1 -1
- data/{spec → test}/schema.rb +0 -0
- data/{spec → test}/support/dates.rb +0 -0
- data/{spec → test}/support/emails.rb +0 -0
- data/{spec → test}/support/hostnames.rb +0 -0
- data/{spec → test}/support/ips.rb +0 -0
- data/{spec → test}/support/models.rb +0 -0
- data/{spec → test}/support/translations.yml +0 -0
- data/{spec → test}/support/urls.rb +0 -0
- data/test/test_helper.rb +41 -0
- data/test/validators/disposable_email_test.rb +23 -0
- data/test/validators/ip_test.rb +21 -0
- data/{spec/validators/validates_cnpj_format_of_spec.rb → test/validators/validates_cnpj_format_of_test.rb} +10 -10
- data/{spec/validators/validates_cpf_format_of_spec.rb → test/validators/validates_cpf_format_of_test.rb} +10 -10
- data/test/validators/validates_datetime/after_option_test.rb +75 -0
- data/test/validators/validates_datetime/before_option_test.rb +20 -0
- data/test/validators/validates_datetime/defaults_test.rb +37 -0
- data/test/validators/validates_email_format_of_test.rb +76 -0
- data/test/validators/validates_hostname_format_of/with_tld_validation_test.rb +25 -0
- data/test/validators/validates_hostname_format_of/without_tld_validation_test.rb +27 -0
- data/test/validators/validates_ip_address/ipv4_test.rb +20 -0
- data/test/validators/validates_ip_address/ipv6_test.rb +20 -0
- data/test/validators/validates_ip_address_test.rb +33 -0
- data/test/validators/validates_ownership_of_test.rb +65 -0
- data/test/validators/validates_ssh_private_key/bits_test.rb +44 -0
- data/test/validators/validates_ssh_private_key/common_test.rb +37 -0
- data/test/validators/validates_ssh_private_key/dsa_test.rb +36 -0
- data/test/validators/validates_ssh_private_key/rsa_test.rb +36 -0
- data/test/validators/validates_ssh_public_key_test.rb +37 -0
- data/test/validators/validates_url_format_of/with_tld_validation_test.rb +15 -0
- data/test/validators/validates_url_format_of/without_tld_validation_test.rb +48 -0
- data/validators.gemspec +2 -2
- metadata +65 -49
- data/.rspec +0 -1
- data/spec/spec_helper.rb +0 -38
- data/spec/validators/disposable_email_spec.rb +0 -31
- data/spec/validators/ip_spec.rb +0 -25
- data/spec/validators/validates_datetime_spec.rb +0 -125
- data/spec/validators/validates_email_format_of_spec.rb +0 -70
- data/spec/validators/validates_hostname_format_of_spec.rb +0 -53
- data/spec/validators/validates_ip_address_spec.rb +0 -59
- data/spec/validators/validates_ownership_of_spec.rb +0 -69
- data/spec/validators/validates_ssh_private_key_spec.rb +0 -152
- data/spec/validators/validates_ssh_public_key_spec.rb +0 -39
- data/spec/validators/validates_url_format_of_spec.rb +0 -65
@@ -0,0 +1,37 @@
|
|
1
|
+
require "test_helper"
|
2
|
+
|
3
|
+
class ValidatesSshPrivateKeyCommonTest < Minitest::Test
|
4
|
+
let(:model) { Class.new {
|
5
|
+
def self.name
|
6
|
+
"User"
|
7
|
+
end
|
8
|
+
|
9
|
+
include ActiveModel::Model
|
10
|
+
validates_ssh_private_key :key
|
11
|
+
attr_accessor :key
|
12
|
+
} }
|
13
|
+
|
14
|
+
test "requires valid key" do
|
15
|
+
record = model.new(key: "invalid")
|
16
|
+
record.valid?
|
17
|
+
|
18
|
+
refute record.errors[:key].empty?
|
19
|
+
end
|
20
|
+
|
21
|
+
test "accepts valid key" do
|
22
|
+
record = model.new(key: SSHKey.generate.private_key)
|
23
|
+
record.valid?
|
24
|
+
|
25
|
+
assert record.errors[:key].empty?
|
26
|
+
end
|
27
|
+
|
28
|
+
test "sets translated error message" do
|
29
|
+
I18n.locale = "pt-BR"
|
30
|
+
message = "não é uma chave privada de SSH válida"
|
31
|
+
|
32
|
+
record = model.new(key: "invalid")
|
33
|
+
record.valid?
|
34
|
+
|
35
|
+
assert_includes record.errors[:key], message
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require "test_helper"
|
2
|
+
|
3
|
+
class DsaTest < Minitest::Test
|
4
|
+
let(:model) { Class.new {
|
5
|
+
def self.name
|
6
|
+
"User"
|
7
|
+
end
|
8
|
+
|
9
|
+
include ActiveModel::Model
|
10
|
+
validates_ssh_private_key :key, type: "dsa"
|
11
|
+
attr_accessor :key
|
12
|
+
} }
|
13
|
+
|
14
|
+
test "accepts dsa key" do
|
15
|
+
record = model.new(key: SSHKey.generate(type: "dsa").private_key)
|
16
|
+
record.valid?
|
17
|
+
|
18
|
+
assert record.errors[:key].empty?
|
19
|
+
end
|
20
|
+
|
21
|
+
test "rejects rsa key" do
|
22
|
+
record = model.new(key: SSHKey.generate(type: 'rsa').private_key)
|
23
|
+
record.valid?
|
24
|
+
|
25
|
+
refute record.errors[:key].empty?
|
26
|
+
end
|
27
|
+
|
28
|
+
test "sets translated error message" do
|
29
|
+
I18n.locale = "pt-BR"
|
30
|
+
|
31
|
+
record = model.new(key: SSHKey.generate(type: 'rsa').private_key)
|
32
|
+
record.valid?
|
33
|
+
|
34
|
+
assert_includes record.errors[:key], "precisa ser uma chave DSA"
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require "test_helper"
|
2
|
+
|
3
|
+
class RsaTest < Minitest::Test
|
4
|
+
let(:model) { Class.new {
|
5
|
+
def self.name
|
6
|
+
"User"
|
7
|
+
end
|
8
|
+
|
9
|
+
include ActiveModel::Model
|
10
|
+
validates_ssh_private_key :key, type: 'rsa'
|
11
|
+
attr_accessor :key
|
12
|
+
} }
|
13
|
+
|
14
|
+
test "accepts rsa key" do
|
15
|
+
record = model.new(key: SSHKey.generate(type: "rsa").private_key)
|
16
|
+
record.valid?
|
17
|
+
|
18
|
+
assert record.errors[:key].empty?
|
19
|
+
end
|
20
|
+
|
21
|
+
test "rejects dsa key" do
|
22
|
+
record = model.new(key: SSHKey.generate(type: "dsa").private_key)
|
23
|
+
record.valid?
|
24
|
+
|
25
|
+
refute record.errors[:key].empty?
|
26
|
+
end
|
27
|
+
|
28
|
+
test "sets translated error message" do
|
29
|
+
I18n.locale = "pt-BR"
|
30
|
+
|
31
|
+
record = model.new(key: SSHKey.generate(type: "dsa").private_key)
|
32
|
+
record.valid?
|
33
|
+
|
34
|
+
assert_includes record.errors[:key], "precisa ser uma chave RSA"
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require "test_helper"
|
2
|
+
|
3
|
+
class ValidatesSsshPublicKeyCommonTest < Minitest::Test
|
4
|
+
let(:model) { Class.new {
|
5
|
+
def self.name
|
6
|
+
"User"
|
7
|
+
end
|
8
|
+
|
9
|
+
include ActiveModel::Model
|
10
|
+
validates_ssh_public_key :key
|
11
|
+
attr_accessor :key
|
12
|
+
} }
|
13
|
+
|
14
|
+
test "requires valid key" do
|
15
|
+
record = model.new(key: nil)
|
16
|
+
record.valid?
|
17
|
+
|
18
|
+
refute record.errors[:key].empty?
|
19
|
+
end
|
20
|
+
|
21
|
+
test "accepts valid key" do
|
22
|
+
record = model.new(key: SSHKey.generate.ssh_public_key)
|
23
|
+
record.valid?
|
24
|
+
|
25
|
+
assert record.errors[:key].empty?
|
26
|
+
end
|
27
|
+
|
28
|
+
test "sets translated error message" do
|
29
|
+
I18n.locale = "pt-BR"
|
30
|
+
message = "não é uma chave pública de SSH válida"
|
31
|
+
|
32
|
+
record = model.new(key: "invalid")
|
33
|
+
record.valid?
|
34
|
+
|
35
|
+
assert_includes record.errors[:key], message
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require "test_helper"
|
2
|
+
|
3
|
+
class ValidatesurlFormatUrlWithTldValidationTest < Minitest::Test
|
4
|
+
test "rejects invalid TLD" do
|
5
|
+
user = UserWithTLD.new('http://example.xy')
|
6
|
+
refute user.valid?
|
7
|
+
end
|
8
|
+
|
9
|
+
TLDs.each do |tld|
|
10
|
+
test "accepts #{tld} as TLD" do
|
11
|
+
user = UserWithTLD.new("http://example.#{tld}")
|
12
|
+
assert user.valid?
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
require "test_helper"
|
2
|
+
|
3
|
+
class ValidatesurlFormatUrlWithoutTldValidationTest < Minitest::Test
|
4
|
+
setup do
|
5
|
+
User.validates_url_format_of :url, :allow_blank => false
|
6
|
+
end
|
7
|
+
|
8
|
+
VALID_URLS.each do |url|
|
9
|
+
test "accepts #{url.inspect} as a valid url" do
|
10
|
+
user = User.new(:url => url)
|
11
|
+
assert user.valid?
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
INVALID_URLS.each do |url|
|
16
|
+
test "rejects #{url.inspect} as a valid url" do
|
17
|
+
user = User.new(:url => url)
|
18
|
+
refute user.valid?
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
test "defines alias method" do
|
23
|
+
assert User.respond_to?(:validates_url)
|
24
|
+
end
|
25
|
+
|
26
|
+
test "uses default error message" do
|
27
|
+
user = User.new(:url => "invalid")
|
28
|
+
refute user.valid?
|
29
|
+
assert_includes user.errors[:url], "is not a valid address"
|
30
|
+
end
|
31
|
+
|
32
|
+
test "uses I18n string as error message [pt-BR]" do
|
33
|
+
I18n.locale = :'pt-BR'
|
34
|
+
user = User.new(:url => "invalid")
|
35
|
+
refute user.valid?
|
36
|
+
assert_includes user.errors[:url], "não parece ser uma URL válida"
|
37
|
+
end
|
38
|
+
|
39
|
+
test "rejects nil urls" do
|
40
|
+
user = User.new(url: nil)
|
41
|
+
refute user.valid?
|
42
|
+
end
|
43
|
+
|
44
|
+
test "rejects blank urls" do
|
45
|
+
user = User.new(url: '')
|
46
|
+
refute user.valid?
|
47
|
+
end
|
48
|
+
end
|
data/validators.gemspec
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require "./lib/validators/version"
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
|
-
s.required_ruby_version = ">=
|
4
|
+
s.required_ruby_version = ">= 2.0"
|
5
5
|
s.name = "validators"
|
6
6
|
s.version = Validators::Version::STRING
|
7
7
|
s.platform = Gem::Platform::RUBY
|
@@ -18,7 +18,7 @@ Gem::Specification.new do |s|
|
|
18
18
|
s.require_paths = ["lib"]
|
19
19
|
|
20
20
|
s.add_development_dependency "activerecord", ">= 3.0"
|
21
|
-
s.add_development_dependency "
|
21
|
+
s.add_development_dependency "minitest-utils"
|
22
22
|
s.add_development_dependency "sqlite3-ruby"
|
23
23
|
s.add_development_dependency "rake"
|
24
24
|
s.add_development_dependency "pry-meta"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: validators
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.5.
|
4
|
+
version: 2.5.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nando Vieira
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-06-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -25,7 +25,7 @@ dependencies:
|
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '3.0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: minitest-utils
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - ">="
|
@@ -132,7 +132,6 @@ extensions: []
|
|
132
132
|
extra_rdoc_files: []
|
133
133
|
files:
|
134
134
|
- ".gitignore"
|
135
|
-
- ".rspec"
|
136
135
|
- ".travis.yml"
|
137
136
|
- Gemfile
|
138
137
|
- README.md
|
@@ -157,27 +156,36 @@ files:
|
|
157
156
|
- lib/validators/validates_ssh_public_key.rb
|
158
157
|
- lib/validators/validates_url_format_of.rb
|
159
158
|
- lib/validators/version.rb
|
160
|
-
-
|
161
|
-
-
|
162
|
-
-
|
163
|
-
-
|
164
|
-
-
|
165
|
-
-
|
166
|
-
-
|
167
|
-
-
|
168
|
-
-
|
169
|
-
-
|
170
|
-
-
|
171
|
-
-
|
172
|
-
-
|
173
|
-
-
|
174
|
-
-
|
175
|
-
-
|
176
|
-
-
|
177
|
-
-
|
178
|
-
-
|
179
|
-
-
|
180
|
-
-
|
159
|
+
- test/schema.rb
|
160
|
+
- test/support/dates.rb
|
161
|
+
- test/support/emails.rb
|
162
|
+
- test/support/hostnames.rb
|
163
|
+
- test/support/ips.rb
|
164
|
+
- test/support/models.rb
|
165
|
+
- test/support/translations.yml
|
166
|
+
- test/support/urls.rb
|
167
|
+
- test/test_helper.rb
|
168
|
+
- test/validators/disposable_email_test.rb
|
169
|
+
- test/validators/ip_test.rb
|
170
|
+
- test/validators/validates_cnpj_format_of_test.rb
|
171
|
+
- test/validators/validates_cpf_format_of_test.rb
|
172
|
+
- test/validators/validates_datetime/after_option_test.rb
|
173
|
+
- test/validators/validates_datetime/before_option_test.rb
|
174
|
+
- test/validators/validates_datetime/defaults_test.rb
|
175
|
+
- test/validators/validates_email_format_of_test.rb
|
176
|
+
- test/validators/validates_hostname_format_of/with_tld_validation_test.rb
|
177
|
+
- test/validators/validates_hostname_format_of/without_tld_validation_test.rb
|
178
|
+
- test/validators/validates_ip_address/ipv4_test.rb
|
179
|
+
- test/validators/validates_ip_address/ipv6_test.rb
|
180
|
+
- test/validators/validates_ip_address_test.rb
|
181
|
+
- test/validators/validates_ownership_of_test.rb
|
182
|
+
- test/validators/validates_ssh_private_key/bits_test.rb
|
183
|
+
- test/validators/validates_ssh_private_key/common_test.rb
|
184
|
+
- test/validators/validates_ssh_private_key/dsa_test.rb
|
185
|
+
- test/validators/validates_ssh_private_key/rsa_test.rb
|
186
|
+
- test/validators/validates_ssh_public_key_test.rb
|
187
|
+
- test/validators/validates_url_format_of/with_tld_validation_test.rb
|
188
|
+
- test/validators/validates_url_format_of/without_tld_validation_test.rb
|
181
189
|
- validators.gemspec
|
182
190
|
homepage: http://rubygems.org/gems/validators
|
183
191
|
licenses:
|
@@ -191,7 +199,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
191
199
|
requirements:
|
192
200
|
- - ">="
|
193
201
|
- !ruby/object:Gem::Version
|
194
|
-
version: '
|
202
|
+
version: '2.0'
|
195
203
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
196
204
|
requirements:
|
197
205
|
- - ">="
|
@@ -199,30 +207,38 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
199
207
|
version: '0'
|
200
208
|
requirements: []
|
201
209
|
rubyforge_project:
|
202
|
-
rubygems_version: 2.
|
210
|
+
rubygems_version: 2.6.11
|
203
211
|
signing_key:
|
204
212
|
specification_version: 4
|
205
213
|
summary: Add some nice ActiveModel/ActiveRecord validators.
|
206
214
|
test_files:
|
207
|
-
-
|
208
|
-
-
|
209
|
-
-
|
210
|
-
-
|
211
|
-
-
|
212
|
-
-
|
213
|
-
-
|
214
|
-
-
|
215
|
-
-
|
216
|
-
-
|
217
|
-
-
|
218
|
-
-
|
219
|
-
-
|
220
|
-
-
|
221
|
-
-
|
222
|
-
-
|
223
|
-
-
|
224
|
-
-
|
225
|
-
-
|
226
|
-
-
|
227
|
-
-
|
228
|
-
|
215
|
+
- test/schema.rb
|
216
|
+
- test/support/dates.rb
|
217
|
+
- test/support/emails.rb
|
218
|
+
- test/support/hostnames.rb
|
219
|
+
- test/support/ips.rb
|
220
|
+
- test/support/models.rb
|
221
|
+
- test/support/translations.yml
|
222
|
+
- test/support/urls.rb
|
223
|
+
- test/test_helper.rb
|
224
|
+
- test/validators/disposable_email_test.rb
|
225
|
+
- test/validators/ip_test.rb
|
226
|
+
- test/validators/validates_cnpj_format_of_test.rb
|
227
|
+
- test/validators/validates_cpf_format_of_test.rb
|
228
|
+
- test/validators/validates_datetime/after_option_test.rb
|
229
|
+
- test/validators/validates_datetime/before_option_test.rb
|
230
|
+
- test/validators/validates_datetime/defaults_test.rb
|
231
|
+
- test/validators/validates_email_format_of_test.rb
|
232
|
+
- test/validators/validates_hostname_format_of/with_tld_validation_test.rb
|
233
|
+
- test/validators/validates_hostname_format_of/without_tld_validation_test.rb
|
234
|
+
- test/validators/validates_ip_address/ipv4_test.rb
|
235
|
+
- test/validators/validates_ip_address/ipv6_test.rb
|
236
|
+
- test/validators/validates_ip_address_test.rb
|
237
|
+
- test/validators/validates_ownership_of_test.rb
|
238
|
+
- test/validators/validates_ssh_private_key/bits_test.rb
|
239
|
+
- test/validators/validates_ssh_private_key/common_test.rb
|
240
|
+
- test/validators/validates_ssh_private_key/dsa_test.rb
|
241
|
+
- test/validators/validates_ssh_private_key/rsa_test.rb
|
242
|
+
- test/validators/validates_ssh_public_key_test.rb
|
243
|
+
- test/validators/validates_url_format_of/with_tld_validation_test.rb
|
244
|
+
- test/validators/validates_url_format_of/without_tld_validation_test.rb
|
data/.rspec
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
--color
|
data/spec/spec_helper.rb
DELETED
@@ -1,38 +0,0 @@
|
|
1
|
-
require "codeclimate-test-reporter"
|
2
|
-
CodeClimate::TestReporter.start
|
3
|
-
|
4
|
-
require "bundler/setup"
|
5
|
-
require "active_record"
|
6
|
-
require "validators"
|
7
|
-
require "active_support/all"
|
8
|
-
|
9
|
-
Time.zone = "America/Sao_Paulo"
|
10
|
-
TLDs = Validators::TLD.all.sample(50)
|
11
|
-
DISPOSABLE_EMAILS = Validators::DisposableHostnames.all.sample(50)
|
12
|
-
|
13
|
-
Dir[File.dirname(__FILE__) + "/support/**/*.rb"].each {|f| require f}
|
14
|
-
|
15
|
-
ActiveRecord::Base.establish_connection :adapter => "sqlite3", :database => ":memory:"
|
16
|
-
load "schema.rb"
|
17
|
-
|
18
|
-
I18n.enforce_available_locales = false
|
19
|
-
I18n.load_path << File.dirname(__FILE__) + "/support/translations.yml"
|
20
|
-
|
21
|
-
RSpec.configure do |config|
|
22
|
-
config.before do
|
23
|
-
I18n.locale = :en
|
24
|
-
Time.zone = "America/Sao_Paulo"
|
25
|
-
|
26
|
-
ActiveRecord::Base.descendants.each do |model|
|
27
|
-
next if model.name == "ActiveRecord::SchemaMigration"
|
28
|
-
|
29
|
-
model.delete_all
|
30
|
-
|
31
|
-
Object.class_eval {
|
32
|
-
remove_const model.name if const_defined?(model.name)
|
33
|
-
}
|
34
|
-
end
|
35
|
-
|
36
|
-
load File.dirname(__FILE__) + "/support/models.rb"
|
37
|
-
end
|
38
|
-
end
|
@@ -1,31 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe ".validates_email_format_of" do
|
4
|
-
context "when using disposable e-mail" do
|
5
|
-
before do
|
6
|
-
User.validates_email_format_of :email
|
7
|
-
end
|
8
|
-
|
9
|
-
DISPOSABLE_EMAILS.each do |domain|
|
10
|
-
it "rejects disposable e-mail (#{domain})" do
|
11
|
-
user = User.new(email: "user@#{domain}")
|
12
|
-
user.valid?
|
13
|
-
|
14
|
-
expect(user.errors[:email]).to include(I18n.t('activerecord.errors.messages.disposable_email'))
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
context "disable disposable e-mail" do
|
20
|
-
before do
|
21
|
-
User.validates_email_format_of :email, disposable: true
|
22
|
-
end
|
23
|
-
|
24
|
-
it "accepts e-mail" do
|
25
|
-
user = User.new(email: "user@mailinator.com")
|
26
|
-
user.valid?
|
27
|
-
|
28
|
-
expect(user.errors[:email]).to be_empty
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
data/spec/validators/ip_spec.rb
DELETED
@@ -1,25 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Validators::Ip do
|
4
|
-
context "IPv4" do
|
5
|
-
VALID_IPV4.each do |ip|
|
6
|
-
it "should accept #{ip.inspect} as ip address" do
|
7
|
-
expect(Validators::Ip).to be_v4(ip)
|
8
|
-
end
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|
12
|
-
context "IPv6" do
|
13
|
-
VALID_IPV6.each do |ip|
|
14
|
-
it "should accept #{ip.inspect} as ip address" do
|
15
|
-
expect(Validators::Ip).to be_v6(ip)
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
(VALID_IPV4 + VALID_IPV6).each do |ip|
|
21
|
-
it "should accept #{ip.inspect} as ip address" do
|
22
|
-
expect(Validators::Ip).to be_valid(ip)
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
@@ -1,125 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe ".validates_datetime" do
|
4
|
-
subject { User.new }
|
5
|
-
|
6
|
-
context "default options" do
|
7
|
-
before do
|
8
|
-
User.validates_datetime :registered_at
|
9
|
-
User.validates :birthday, :datetime => true
|
10
|
-
end
|
11
|
-
|
12
|
-
VALID_DATES.each do |date|
|
13
|
-
it "accepts #{date.inspect} as valid date" do
|
14
|
-
subject.registered_at = date
|
15
|
-
subject.birthday = date
|
16
|
-
|
17
|
-
expect(subject).to be_valid
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
INVALID_DATES.each do |date|
|
22
|
-
it "rejects #{date.inspect} as valid date" do
|
23
|
-
subject.registered_at = date
|
24
|
-
subject.birthday = date
|
25
|
-
expect(subject).not_to be_valid
|
26
|
-
|
27
|
-
expect(subject.errors[:registered_at]).not_to be_empty
|
28
|
-
expect(subject.errors[:birthday]).not_to be_empty
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
it "includes default error message" do
|
33
|
-
subject.registered_at = nil
|
34
|
-
expect(subject).not_to be_valid
|
35
|
-
|
36
|
-
expect(subject.errors[:registered_at]).to eq(["is not a valid date"])
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
context "after option" do
|
41
|
-
it "rejects when date is set to before :after option" do
|
42
|
-
future_date = 1.week.from_now
|
43
|
-
User.validates_datetime :registered_at, :after => future_date
|
44
|
-
subject.registered_at = Time.now
|
45
|
-
|
46
|
-
expect(subject).not_to be_valid
|
47
|
-
expect(subject.errors[:registered_at]).to eq(["needs to be after #{I18n.l(future_date)}"])
|
48
|
-
end
|
49
|
-
|
50
|
-
it "accepts when date is set accordingly to the :after option" do
|
51
|
-
User.validates_datetime :registered_at, :after => 1.week.from_now
|
52
|
-
subject.registered_at = 2.weeks.from_now
|
53
|
-
|
54
|
-
expect(subject).to be_valid
|
55
|
-
end
|
56
|
-
|
57
|
-
it "validates using today as date" do
|
58
|
-
User.validates_datetime :registered_at, :after => :today
|
59
|
-
|
60
|
-
subject.registered_at = Time.now
|
61
|
-
expect(subject).not_to be_valid
|
62
|
-
|
63
|
-
subject.registered_at = Date.today
|
64
|
-
expect(subject).not_to be_valid
|
65
|
-
|
66
|
-
subject.registered_at = Date.tomorrow
|
67
|
-
expect(subject).to be_valid
|
68
|
-
|
69
|
-
subject.registered_at = 1.day.from_now
|
70
|
-
expect(subject).to be_valid
|
71
|
-
end
|
72
|
-
|
73
|
-
it "validates using now as date" do
|
74
|
-
User.validates_datetime :registered_at, :after => :now
|
75
|
-
|
76
|
-
subject.registered_at = Time.now
|
77
|
-
expect(subject).not_to be_valid
|
78
|
-
|
79
|
-
subject.registered_at = Date.today
|
80
|
-
expect(subject).not_to be_valid
|
81
|
-
|
82
|
-
subject.registered_at = Date.tomorrow
|
83
|
-
expect(subject).to be_valid
|
84
|
-
|
85
|
-
subject.registered_at = 1.day.from_now
|
86
|
-
expect(subject).to be_valid
|
87
|
-
end
|
88
|
-
|
89
|
-
it "validates using method as date" do
|
90
|
-
User.validates_datetime :starts_at
|
91
|
-
User.validates_datetime :ends_at, :after => :starts_at, :if => :starts_at?
|
92
|
-
|
93
|
-
subject.starts_at = nil
|
94
|
-
subject.ends_at = Time.now
|
95
|
-
expect(subject).not_to be_valid
|
96
|
-
expect(subject.errors[:ends_at]).to be_empty
|
97
|
-
|
98
|
-
subject.starts_at = Time.parse("Apr 26 2010")
|
99
|
-
subject.ends_at = Time.parse("Apr 25 2010")
|
100
|
-
expect(subject).not_to be_valid
|
101
|
-
expect(subject.errors[:ends_at]).to eq(["needs to be after #{I18n.l(Time.parse("Apr 26 2010"))}"])
|
102
|
-
|
103
|
-
subject.starts_at = Time.now
|
104
|
-
subject.ends_at = 1.hour.from_now
|
105
|
-
expect(subject).to be_valid
|
106
|
-
end
|
107
|
-
end
|
108
|
-
|
109
|
-
context "before option" do
|
110
|
-
it "rejects when date is set to after :before option" do
|
111
|
-
User.validates_datetime :registered_at, :before => 1.week.ago
|
112
|
-
subject.registered_at = Time.now
|
113
|
-
|
114
|
-
expect(subject).not_to be_valid
|
115
|
-
expect(subject.errors[:registered_at]).to eq(["needs to be before #{I18n.l(1.week.ago)}"])
|
116
|
-
end
|
117
|
-
|
118
|
-
it "accepts when date is set accordingly to the :before option" do
|
119
|
-
User.validates_datetime :registered_at, :before => 1.week.ago
|
120
|
-
subject.registered_at = 2.weeks.ago
|
121
|
-
|
122
|
-
expect(subject).to be_valid
|
123
|
-
end
|
124
|
-
end
|
125
|
-
end
|