activevalidators 5.1.0 → 6.0.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.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/.circleci/config.yml +69 -20
- data/ChangeLog.md +13 -1
- data/README.md +1 -1
- data/activevalidators.gemspec +1 -1
- data/certs/franckverrot.pem +21 -21
- data/test/validations/barcode_test.rb +12 -12
- data/test/validations/credit_card_test.rb +5 -5
- data/test/validations/email_test.rb +32 -32
- data/test/validations/hex_color_test.rb +12 -12
- data/test/validations/ip_test.rb +16 -16
- data/test/validations/nino_test.rb +14 -14
- data/test/validations/password_test.rb +6 -6
- data/test/validations/phone_test.rb +16 -16
- data/test/validations/postal_code_test.rb +18 -18
- data/test/validations/regexp_test.rb +6 -6
- data/test/validations/respond_to_test.rb +6 -6
- data/test/validations/sin_test.rb +12 -12
- data/test/validations/siren_test.rb +14 -14
- data/test/validations/slug_test.rb +8 -8
- data/test/validations/ssn_test.rb +10 -10
- data/test/validations/tracking_number_test.rb +5 -5
- data/test/validations/twitter_test.rb +43 -43
- data/test/validations/url_test.rb +30 -30
- metadata +23 -23
- metadata.gz.sig +0 -0
@@ -14,42 +14,42 @@ describe "Hex-Color Validation" do
|
|
14
14
|
it "accepts blank value" do
|
15
15
|
subject.text_color = ''
|
16
16
|
|
17
|
-
subject.must_be
|
18
|
-
subject.errors.must_be
|
17
|
+
_(subject).must_be(:valid?)
|
18
|
+
_(subject.errors).must_be(:empty?)
|
19
19
|
end
|
20
20
|
|
21
21
|
it "accepts 3 hex characters" do
|
22
22
|
subject.text_color = 'abc'
|
23
23
|
|
24
|
-
subject.must_be
|
25
|
-
subject.errors.must_be
|
24
|
+
_(subject).must_be(:valid?)
|
25
|
+
_(subject.errors).must_be(:empty?)
|
26
26
|
end
|
27
27
|
|
28
28
|
it "accepts 6 hex characters" do
|
29
29
|
subject.text_color = 'abc012'
|
30
30
|
|
31
|
-
subject.must_be
|
32
|
-
subject.errors.must_be
|
31
|
+
_(subject).must_be(:valid?)
|
32
|
+
_(subject.errors).must_be(:empty?)
|
33
33
|
end
|
34
34
|
|
35
35
|
it "rejects non-hex characters" do
|
36
36
|
subject.text_color = 'efg345'
|
37
37
|
|
38
|
-
subject.must_be
|
39
|
-
subject.errors[:text_color].must_include
|
38
|
+
_(subject).must_be(:invalid?)
|
39
|
+
_(subject.errors[:text_color]).must_include(invalid_message)
|
40
40
|
end
|
41
41
|
|
42
42
|
it "rejects too few characters" do
|
43
43
|
subject.text_color = 'ef'
|
44
44
|
|
45
|
-
subject.must_be
|
46
|
-
subject.errors[:text_color].must_include
|
45
|
+
_(subject).must_be(:invalid?)
|
46
|
+
_(subject.errors[:text_color]).must_include(invalid_message)
|
47
47
|
end
|
48
48
|
|
49
49
|
it "rejects too many characters" do
|
50
50
|
subject.text_color = 'efab001'
|
51
51
|
|
52
|
-
subject.must_be
|
53
|
-
subject.errors[:text_color].must_include
|
52
|
+
_(subject).must_be(:invalid?)
|
53
|
+
_(subject.errors[:text_color]).must_include(invalid_message)
|
54
54
|
end
|
55
55
|
end
|
data/test/validations/ip_test.rb
CHANGED
@@ -6,27 +6,27 @@ describe "IP Validation" do
|
|
6
6
|
describe "IPv4 Validation" do
|
7
7
|
it "accepts valid IPs" do
|
8
8
|
subject = build_ip_record :v4, :ip => '192.168.1.1'
|
9
|
-
subject.valid
|
10
|
-
subject.errors.size.must_equal
|
9
|
+
_(subject.valid?).must_equal(true)
|
10
|
+
_(subject.errors.size).must_equal(0)
|
11
11
|
end
|
12
12
|
|
13
13
|
it "accepts IPAddrs" do
|
14
14
|
subject = build_ip_record :v4, :ip => IPAddr.new('192.168.1.1')
|
15
|
-
subject.valid
|
16
|
-
subject.errors.size.must_equal
|
15
|
+
_(subject.valid?).must_equal(true)
|
16
|
+
_(subject.errors.size).must_equal(0)
|
17
17
|
end
|
18
18
|
|
19
19
|
describe "for invalid IPs" do
|
20
20
|
it "rejects invalid IPs" do
|
21
21
|
subject = build_ip_record :v4, :ip => '267.34.56.3'
|
22
|
-
subject.valid
|
23
|
-
subject.errors.size.must_equal
|
22
|
+
_(subject.valid?).must_equal(false)
|
23
|
+
_(subject.errors.size).must_equal(1)
|
24
24
|
end
|
25
25
|
|
26
26
|
it "generates an error message of type invalid" do
|
27
27
|
subject = build_ip_record :v4, :ip => '267.34.56.3'
|
28
|
-
subject.valid
|
29
|
-
subject.errors[:ip].include?(subject.errors.generate_message(:ip, :invalid)).must_equal
|
28
|
+
_(subject.valid?).must_equal(false)
|
29
|
+
_(subject.errors[:ip].include?(subject.errors.generate_message(:ip, :invalid))).must_equal(true)
|
30
30
|
end
|
31
31
|
end
|
32
32
|
end
|
@@ -34,27 +34,27 @@ describe "IP Validation" do
|
|
34
34
|
describe "IPv6 Validation" do
|
35
35
|
it "accepts valid IPs" do
|
36
36
|
subject = build_ip_record :v6, :ip => '::1'
|
37
|
-
subject.valid
|
38
|
-
subject.errors.size.must_equal
|
37
|
+
_(subject.valid?).must_equal(true)
|
38
|
+
_(subject.errors.size).must_equal(0)
|
39
39
|
end
|
40
40
|
|
41
41
|
it "accepts IPAddrs" do
|
42
42
|
subject = build_ip_record :v6, :ip => IPAddr.new('::1')
|
43
|
-
subject.valid
|
44
|
-
subject.errors.size.must_equal
|
43
|
+
_(subject.valid?).must_equal(true)
|
44
|
+
_(subject.errors.size).must_equal(0)
|
45
45
|
end
|
46
46
|
|
47
47
|
describe "for invalid IPs" do
|
48
48
|
it "rejects invalid IPs" do
|
49
49
|
subject = build_ip_record :v6, :ip => '192.168.1.1'
|
50
|
-
subject.valid
|
51
|
-
subject.errors.size.must_equal
|
50
|
+
_(subject.valid?).must_equal(false)
|
51
|
+
_(subject.errors.size).must_equal(1)
|
52
52
|
end
|
53
53
|
|
54
54
|
it "generates an error message of type invalid" do
|
55
55
|
subject = build_ip_record :v6, :ip => '192.168.1.1'
|
56
|
-
subject.valid
|
57
|
-
subject.errors[:ip].include?(subject.errors.generate_message(:ip, :invalid)).must_equal
|
56
|
+
_(subject.valid?).must_equal(false)
|
57
|
+
_(subject.errors[:ip].include?(subject.errors.generate_message(:ip, :invalid))).must_equal(true)
|
58
58
|
end
|
59
59
|
end
|
60
60
|
end
|
@@ -6,7 +6,7 @@ describe "NINO validations" do
|
|
6
6
|
describe "for invalid" do
|
7
7
|
it "rejects empty nino" do
|
8
8
|
subject = build_nino_record({:nino => ''})
|
9
|
-
subject.valid
|
9
|
+
_(subject.valid?).must_equal(false)
|
10
10
|
end
|
11
11
|
|
12
12
|
it "rejects nino, which has invalid first letter" do
|
@@ -14,7 +14,7 @@ describe "NINO validations" do
|
|
14
14
|
invalid_first_letter.each do |letter|
|
15
15
|
invalid_nino = letter + 'B123456C'
|
16
16
|
subject = build_nino_record({:nino => invalid_nino})
|
17
|
-
subject.valid
|
17
|
+
_(subject.valid?).must_equal(false)
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
@@ -23,23 +23,23 @@ describe "NINO validations" do
|
|
23
23
|
invalid_second_letter.each do |letter|
|
24
24
|
invalid_nino = 'a' + letter + '123456C'
|
25
25
|
subject = build_nino_record({:nino => invalid_nino})
|
26
|
-
subject.valid
|
26
|
+
_(subject.valid?).must_equal(false)
|
27
27
|
end
|
28
28
|
end
|
29
29
|
|
30
30
|
it "rejects too long nino" do
|
31
31
|
subject = build_nino_record({:nino => 'AB123456C100200'})
|
32
|
-
subject.valid
|
32
|
+
_(subject.valid?).must_equal(false)
|
33
33
|
end
|
34
34
|
|
35
35
|
it "rejects nino with invalid prefix" do
|
36
36
|
subject = build_nino_record({:nino => '#$123456C'})
|
37
|
-
subject.valid
|
37
|
+
_(subject.valid?).must_equal(false)
|
38
38
|
end
|
39
39
|
|
40
40
|
it "rejects nino with invalid chars in number section" do
|
41
41
|
subject = build_nino_record({:nino => 'AB@2%4#6C'})
|
42
|
-
subject.valid
|
42
|
+
_(subject.valid?).must_equal(false)
|
43
43
|
end
|
44
44
|
|
45
45
|
it "rejects wrong suffixes" do
|
@@ -47,7 +47,7 @@ describe "NINO validations" do
|
|
47
47
|
invalid_suffix.each do |suffix|
|
48
48
|
invalid_nino = 'AB123456' + suffix
|
49
49
|
subject = build_nino_record({:nino => invalid_nino})
|
50
|
-
subject.valid
|
50
|
+
_(subject.valid?).must_equal(false)
|
51
51
|
end
|
52
52
|
end
|
53
53
|
|
@@ -56,7 +56,7 @@ describe "NINO validations" do
|
|
56
56
|
non_allocated_prefixes.each do |suffix|
|
57
57
|
invalid_nino = suffix + '123456C'
|
58
58
|
subject = build_nino_record({:nino => invalid_nino})
|
59
|
-
subject.valid
|
59
|
+
_(subject.valid?).must_equal(false)
|
60
60
|
end
|
61
61
|
end
|
62
62
|
|
@@ -65,30 +65,30 @@ describe "NINO validations" do
|
|
65
65
|
administrative_numbers.each do |suffix|
|
66
66
|
invalid_nino = suffix + '123456C'
|
67
67
|
subject = build_nino_record({:nino => invalid_nino})
|
68
|
-
subject.valid
|
68
|
+
_(subject.valid?).must_equal(false)
|
69
69
|
end
|
70
70
|
end
|
71
71
|
|
72
72
|
it "rejects temporary numbers" do
|
73
73
|
subject = build_nino_record({:nino => '63T12345'})
|
74
|
-
subject.valid
|
74
|
+
_(subject.valid?).must_equal(false)
|
75
75
|
end
|
76
76
|
end
|
77
77
|
|
78
78
|
describe "for valid" do
|
79
79
|
it "acepts correct nino" do
|
80
80
|
subject = build_nino_record({:nino => 'AB123456C'})
|
81
|
-
subject.valid
|
81
|
+
_(subject.valid?).must_equal(true)
|
82
82
|
end
|
83
83
|
|
84
84
|
it "acepts nino, divided by spaces" do
|
85
85
|
subject = build_nino_record({:nino => 'AB 12 34 56 C'})
|
86
|
-
subject.valid
|
86
|
+
_(subject.valid?).must_equal(true)
|
87
87
|
end
|
88
88
|
|
89
89
|
it "acepts downcase nino" do
|
90
90
|
subject = build_nino_record({:nino => 'ab 12 34 56 c'})
|
91
|
-
subject.valid
|
91
|
+
_(subject.valid?).must_equal(true)
|
92
92
|
end
|
93
93
|
|
94
94
|
it "acepts correct suffixes" do
|
@@ -96,7 +96,7 @@ describe "NINO validations" do
|
|
96
96
|
valid_suffix.each do |suffix|
|
97
97
|
valid_nino = 'AB123456' + suffix
|
98
98
|
subject = build_nino_record({:nino => valid_nino})
|
99
|
-
subject.valid
|
99
|
+
_(subject.valid?).must_equal(true)
|
100
100
|
end
|
101
101
|
end
|
102
102
|
end
|
@@ -13,22 +13,22 @@ describe "Password Validation" do
|
|
13
13
|
describe "valid passwords" do
|
14
14
|
it "accepts a #{strength} password like #{passwords[:valid]}" do
|
15
15
|
subject = build_password_record strength, :password => passwords[:valid]
|
16
|
-
subject.valid
|
17
|
-
subject.errors.size.must_equal
|
16
|
+
_(subject.valid?).must_equal(true)
|
17
|
+
_(subject.errors.size).must_equal(0)
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
21
21
|
describe "invalid passwords" do
|
22
22
|
it "rejects invalid passwords like #{passwords[:invalid]}" do
|
23
23
|
subject = build_password_record strength, :password => passwords[:invalid]
|
24
|
-
subject.valid
|
25
|
-
subject.errors.size.must_equal
|
24
|
+
_(subject.valid?).must_equal(false)
|
25
|
+
_(subject.errors.size).must_equal(1)
|
26
26
|
end
|
27
27
|
|
28
28
|
it "generates an error message of type invalid" do
|
29
29
|
subject = build_password_record strength, :password => passwords[:invalid]
|
30
|
-
subject.valid
|
31
|
-
subject.errors[:password].include?(subject.errors.generate_message(:password, :invalid)).must_equal
|
30
|
+
_(subject.valid?).must_equal(false)
|
31
|
+
_(subject.errors[:password].include?(subject.errors.generate_message(:password, :invalid))).must_equal(true)
|
32
32
|
end
|
33
33
|
end
|
34
34
|
end
|
@@ -12,13 +12,13 @@ describe "Phone Validation" do
|
|
12
12
|
it "allows numbers matching that country" do
|
13
13
|
subject = build_phone_validation(country: :gb)
|
14
14
|
subject.phone = '+441234567890'
|
15
|
-
subject.valid
|
15
|
+
_(subject.valid?).must_equal(true)
|
16
16
|
end
|
17
17
|
|
18
18
|
it "does not allow numbers from other countries" do
|
19
19
|
subject = build_phone_validation(country: :gb)
|
20
20
|
subject.phone = '+19999999999'
|
21
|
-
subject.valid
|
21
|
+
_(subject.valid?).must_equal(false)
|
22
22
|
end
|
23
23
|
end
|
24
24
|
|
@@ -26,36 +26,36 @@ describe "Phone Validation" do
|
|
26
26
|
it 'should validate format of phone with ###-###-####' do
|
27
27
|
subject = build_phone_validation true
|
28
28
|
subject.phone = '1-999-999-9999'
|
29
|
-
subject.valid
|
30
|
-
subject.errors.size.must_equal
|
29
|
+
_(subject.valid?).must_equal(true)
|
30
|
+
_(subject.errors.size).must_equal(0)
|
31
31
|
end
|
32
32
|
|
33
33
|
it 'should validate format of phone with ##########' do
|
34
34
|
subject = build_phone_validation true
|
35
35
|
subject.phone = '19999999999'
|
36
|
-
subject.valid
|
37
|
-
subject.errors.size.must_equal
|
36
|
+
_(subject.valid?).must_equal(true)
|
37
|
+
_(subject.errors.size).must_equal(0)
|
38
38
|
end
|
39
39
|
|
40
40
|
it 'should validate format of phone with ###.###.####' do
|
41
41
|
subject = build_phone_validation true
|
42
42
|
subject.phone = '1999.999.9999'
|
43
|
-
subject.valid
|
44
|
-
subject.errors.size.must_equal
|
43
|
+
_(subject.valid?).must_equal(true)
|
44
|
+
_(subject.errors.size).must_equal(0)
|
45
45
|
end
|
46
46
|
|
47
47
|
it 'should validate format of phone with ### ### ####' do
|
48
48
|
subject = build_phone_validation true
|
49
49
|
subject.phone = '1999 999 9999'
|
50
|
-
subject.valid
|
51
|
-
subject.errors.size.must_equal
|
50
|
+
_(subject.valid?).must_equal(true)
|
51
|
+
_(subject.errors.size).must_equal(0)
|
52
52
|
end
|
53
53
|
|
54
54
|
it 'should validate format of phone with (###) ###-####' do
|
55
55
|
subject = build_phone_validation true
|
56
56
|
subject.phone = '1(999) 999-9999'
|
57
|
-
subject.valid
|
58
|
-
subject.errors.size.must_equal
|
57
|
+
_(subject.valid?).must_equal(true)
|
58
|
+
_(subject.errors.size).must_equal(0)
|
59
59
|
end
|
60
60
|
|
61
61
|
end
|
@@ -65,17 +65,17 @@ describe "Phone Validation" do
|
|
65
65
|
it "rejects invalid formats" do
|
66
66
|
subject = build_phone_validation true
|
67
67
|
subject.phone = '999'
|
68
|
-
subject.valid
|
69
|
-
subject.errors.size.must_equal
|
68
|
+
_(subject.valid?).must_equal(false)
|
69
|
+
_(subject.errors.size).must_equal(1)
|
70
70
|
end
|
71
71
|
|
72
72
|
it "generates an error message of type invalid" do
|
73
73
|
subject = build_phone_validation true
|
74
74
|
subject.phone = '999'
|
75
|
-
subject.valid
|
75
|
+
_(subject.valid?).must_equal(false)
|
76
76
|
|
77
77
|
message = subject.errors.generate_message(:phone, :invalid)
|
78
|
-
subject.errors[:phone].include?(message).must_equal
|
78
|
+
_(subject.errors[:phone].include?(message)).must_equal(true)
|
79
79
|
end
|
80
80
|
end
|
81
81
|
end
|
@@ -12,15 +12,15 @@ describe "Postal Code Validation" do
|
|
12
12
|
it 'should validate format of postal code with #####' do
|
13
13
|
subject = build_postal_code_record true
|
14
14
|
subject.postal_code = '11211'
|
15
|
-
subject.valid
|
16
|
-
subject.errors.size.must_equal
|
15
|
+
_(subject.valid?).must_equal(true)
|
16
|
+
_(subject.errors.size).must_equal(0)
|
17
17
|
end
|
18
18
|
|
19
19
|
it 'should validate format of postal code with #####-#####' do
|
20
20
|
subject = build_postal_code_record true
|
21
21
|
subject.postal_code = '94117-1234'
|
22
|
-
subject.valid
|
23
|
-
subject.errors.size.must_equal
|
22
|
+
_(subject.valid?).must_equal(true)
|
23
|
+
_(subject.errors.size).must_equal(0)
|
24
24
|
end
|
25
25
|
end
|
26
26
|
|
@@ -30,15 +30,15 @@ describe "Postal Code Validation" do
|
|
30
30
|
it "should validate format of lowercase postal code with #{format}" do
|
31
31
|
subject = build_postal_code_record :country => country
|
32
32
|
subject.postal_code = ActiveValidators::OneNineShims::OneNineString.new(format).gsub(/[@#]/, '@' => 'A', '#' => '9')
|
33
|
-
subject.valid
|
34
|
-
subject.errors.size.must_equal
|
33
|
+
_(subject.valid?).must_equal(true)
|
34
|
+
_(subject.errors.size).must_equal(0)
|
35
35
|
end
|
36
36
|
|
37
37
|
it "should validate format of upcase postal code with #{format}" do
|
38
38
|
subject = build_postal_code_record :country => country.upcase
|
39
39
|
subject.postal_code = ActiveValidators::OneNineShims::OneNineString.new(format).gsub(/[@#]/, '@' => 'A', '#' => '9')
|
40
|
-
subject.valid
|
41
|
-
subject.errors.size.must_equal
|
40
|
+
_(subject.valid?).must_equal(true)
|
41
|
+
_(subject.errors.size).must_equal(0)
|
42
42
|
end
|
43
43
|
|
44
44
|
# if format is entirely numeric
|
@@ -46,8 +46,8 @@ describe "Postal Code Validation" do
|
|
46
46
|
it "should validate format of integer postal code with #{format}" do
|
47
47
|
subject = build_postal_code_record :country => country
|
48
48
|
subject.postal_code = ActiveValidators::OneNineShims::OneNineString.new(format).gsub(/[@#]/, '@' => 'A', '#' => '9').to_i
|
49
|
-
subject.valid
|
50
|
-
subject.errors.size.must_equal
|
49
|
+
_(subject.valid?).must_equal(true)
|
50
|
+
_(subject.errors.size).must_equal(0)
|
51
51
|
end
|
52
52
|
end
|
53
53
|
end
|
@@ -59,28 +59,28 @@ describe "Postal Code Validation" do
|
|
59
59
|
# aa is not in ActiveModel::Validations::PostalCodeValidator.known_formats
|
60
60
|
subject = build_postal_code_record :country => 'aa'
|
61
61
|
subject.postal_code = '999'
|
62
|
-
subject.valid
|
63
|
-
subject.errors.size.must_equal
|
62
|
+
_(subject.valid?).must_equal(true)
|
63
|
+
_(subject.errors.size).must_equal(0)
|
64
64
|
end
|
65
65
|
end
|
66
66
|
|
67
67
|
describe "for invalid formats" do
|
68
68
|
it "rejects invalid formats" do
|
69
69
|
subject = build_postal_code_record true, :postal_code => '999'
|
70
|
-
subject.valid
|
71
|
-
subject.errors.size.must_equal
|
70
|
+
_(subject.valid?).must_equal(false)
|
71
|
+
_(subject.errors.size).must_equal(1)
|
72
72
|
end
|
73
73
|
|
74
74
|
it "generates an error message of type invalid" do
|
75
75
|
subject = build_postal_code_record true, :postal_code => '999'
|
76
|
-
subject.valid
|
77
|
-
subject.errors[:postal_code].include?(subject.errors.generate_message(:postal_code, :invalid)).must_equal
|
76
|
+
_(subject.valid?).must_equal(false)
|
77
|
+
_(subject.errors[:postal_code].include?(subject.errors.generate_message(:postal_code, :invalid))).must_equal(true)
|
78
78
|
end
|
79
79
|
|
80
80
|
it "rejects injected content" do
|
81
81
|
subject = build_postal_code_record true, :postal_code => "injected\n11211"
|
82
|
-
subject.valid
|
83
|
-
subject.errors.size.must_equal
|
82
|
+
_(subject.valid?).must_equal(false)
|
83
|
+
_(subject.errors.size).must_equal(1)
|
84
84
|
end
|
85
85
|
end
|
86
86
|
end
|
@@ -14,22 +14,22 @@ describe "Regexp Validation" do
|
|
14
14
|
it "accepts blank value" do
|
15
15
|
subject.redirect_rule = ''
|
16
16
|
|
17
|
-
subject.must_be
|
18
|
-
subject.errors.must_be
|
17
|
+
_(subject).must_be(:valid?)
|
18
|
+
_(subject.errors).must_be(:empty?)
|
19
19
|
end
|
20
20
|
|
21
21
|
it "rejects malformed regular expressions" do
|
22
22
|
subject.redirect_rule = '['
|
23
23
|
|
24
|
-
subject.must_be
|
25
|
-
subject.errors[:redirect_rule].must_include
|
24
|
+
_(subject).must_be(:invalid?)
|
25
|
+
_(subject.errors[:redirect_rule]).must_include(invalid_message)
|
26
26
|
end
|
27
27
|
|
28
28
|
it "allow proper regular expressions" do
|
29
29
|
subject.redirect_rule = '^/vanity-url(-2014)?'
|
30
30
|
|
31
|
-
subject.must_be
|
32
|
-
subject.errors.must_be
|
31
|
+
_(subject).must_be(:valid?)
|
32
|
+
_(subject.errors).must_be(:empty?)
|
33
33
|
end
|
34
34
|
|
35
35
|
end
|