ndr_support 5.10.3 → 5.10.5
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/CHANGELOG.md +12 -1
- data/LICENSE.txt +1 -1
- data/README.md +3 -3
- data/lib/ndr_support/concerns/working_days.rb +12 -1
- data/lib/ndr_support/date_and_time_extensions.rb +12 -11
- data/lib/ndr_support/ourdate/build_datetime.rb +1 -5
- data/lib/ndr_support/ourdate.rb +1 -5
- data/lib/ndr_support/string/clean_methodable.rb +4 -4
- data/lib/ndr_support/string/conversions.rb +1 -5
- data/lib/ndr_support/version.rb +1 -1
- data/ndr_support.gemspec +8 -6
- metadata +14 -76
- data/.gitignore +0 -19
- data/.rubocop.yml +0 -1
- data/Gemfile +0 -4
- data/Guardfile +0 -24
- data/Rakefile +0 -12
- data/code_safety.yml +0 -290
- data/gemfiles/Gemfile.rails61 +0 -6
- data/gemfiles/Gemfile.rails70 +0 -6
- data/gemfiles/Gemfile.rails71 +0 -6
- data/test/array_test.rb +0 -20
- data/test/concerns/working_days_test.rb +0 -148
- data/test/date_and_time_extensions_test.rb +0 -56
- data/test/daterange_test.rb +0 -307
- data/test/hash_test.rb +0 -84
- data/test/integer/calculations_test.rb +0 -28
- data/test/integer/rounding_test.rb +0 -14
- data/test/integer/working_days_test.rb +0 -14
- data/test/nil_test.rb +0 -40
- data/test/obfuscator_test.rb +0 -26
- data/test/ourdate_test.rb +0 -26
- data/test/ourtime_test.rb +0 -45
- data/test/password_test.rb +0 -129
- data/test/regexp_range_test.rb +0 -136
- data/test/resources/filesystem_paths.yml +0 -37
- data/test/safe_file_test.rb +0 -670
- data/test/safe_path_test.rb +0 -168
- data/test/string/cleaning_test.rb +0 -247
- data/test/string/conversions_test.rb +0 -375
- data/test/test_helper.rb +0 -46
- data/test/threat_scanner_test.rb +0 -77
- data/test/utf8_encoding/control_characters_test.rb +0 -84
- data/test/utf8_encoding/force_binary_test.rb +0 -64
- data/test/utf8_encoding_test.rb +0 -170
- data/test/yaml/serialization_test.rb +0 -200
data/test/password_test.rb
DELETED
|
@@ -1,129 +0,0 @@
|
|
|
1
|
-
require 'test_helper'
|
|
2
|
-
|
|
3
|
-
# Tests password generation and checking library
|
|
4
|
-
class PasswordTest < Minitest::Test
|
|
5
|
-
test 'checking length requirement' do
|
|
6
|
-
refute NdrSupport::Password.valid?('acegi')
|
|
7
|
-
assert NdrSupport::Password.valid?('acegik')
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
test 'checking character uniqueness requirement' do
|
|
11
|
-
refute NdrSupport::Password.valid?('acegacegacegacegacegacegaceg')
|
|
12
|
-
assert NdrSupport::Password.valid?('acefhacefhacefhacefhacefhace')
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
test 'when checking, dictionary words are considered' do
|
|
16
|
-
refute NdrSupport::Password.valid?('google password')
|
|
17
|
-
assert NdrSupport::Password.valid?('google the password')
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
test 'when checking, custom dictionary words are considered' do
|
|
21
|
-
refute NdrSupport::Password.valid?('google passphrase', word_list: ['passphrase'])
|
|
22
|
-
assert NdrSupport::Password.valid?('google the passphrase', word_list: ['passphrase'])
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
test 'when checking, custom dictionary words that are also sequences are not over-counted' do
|
|
26
|
-
refute NdrSupport::Password.valid?('hijkl a ', word_list: %w(hijkl hijklm))
|
|
27
|
-
refute NdrSupport::Password.valid?('hijklm a ', word_list: %w(hijkl hijklm))
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
test 'when checking, custom dictionary words substrings of others should not intefere' do
|
|
31
|
-
refute NdrSupport::Password.valid?('acegik a', word_list: %w(cegi acegik))
|
|
32
|
-
refute NdrSupport::Password.valid?('acegik a', word_list: %w(acegik cegi))
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
test 'checking blank input' do
|
|
36
|
-
refute NdrSupport::Password.valid?(nil)
|
|
37
|
-
refute NdrSupport::Password.valid?('')
|
|
38
|
-
refute NdrSupport::Password.valid?(' ')
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
test 'checking with increasing sequences' do
|
|
42
|
-
refute NdrSupport::Password.valid?('12345678')
|
|
43
|
-
refute NdrSupport::Password.valid?('1234 5678')
|
|
44
|
-
refute NdrSupport::Password.valid?('456789')
|
|
45
|
-
refute NdrSupport::Password.valid?('456 789')
|
|
46
|
-
refute NdrSupport::Password.valid?('abcdefghijk')
|
|
47
|
-
refute NdrSupport::Password.valid?('abcde fghijk')
|
|
48
|
-
refute NdrSupport::Password.valid?('BCDEFGHIJKL')
|
|
49
|
-
refute NdrSupport::Password.valid?('BCDEFG HIJKL')
|
|
50
|
-
|
|
51
|
-
assert NdrSupport::Password.valid?('more 1234 5678')
|
|
52
|
-
assert NdrSupport::Password.valid?('1234 more 5678')
|
|
53
|
-
assert NdrSupport::Password.valid?('1234 5678 more')
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
test 'checking with decreasing sequences' do
|
|
57
|
-
refute NdrSupport::Password.valid?('87654321')
|
|
58
|
-
refute NdrSupport::Password.valid?('8765 4321')
|
|
59
|
-
refute NdrSupport::Password.valid?('987654')
|
|
60
|
-
refute NdrSupport::Password.valid?('987 654')
|
|
61
|
-
refute NdrSupport::Password.valid?('kjihgfedcba')
|
|
62
|
-
refute NdrSupport::Password.valid?('kjihg fedcba')
|
|
63
|
-
refute NdrSupport::Password.valid?('LKJIHGFEDCB')
|
|
64
|
-
refute NdrSupport::Password.valid?('LKJIHG FEDCB')
|
|
65
|
-
|
|
66
|
-
assert NdrSupport::Password.valid?('more 8765 4321')
|
|
67
|
-
assert NdrSupport::Password.valid?('8765 more 4321')
|
|
68
|
-
assert NdrSupport::Password.valid?('8765 4321 more')
|
|
69
|
-
end
|
|
70
|
-
|
|
71
|
-
test 'checking with increasing then decreasing sequences' do
|
|
72
|
-
refute NdrSupport::Password.valid?('123456787654321')
|
|
73
|
-
refute NdrSupport::Password.valid?('aBcDeFgFeDcBa')
|
|
74
|
-
|
|
75
|
-
assert NdrSupport::Password.valid?('something 123456787654321')
|
|
76
|
-
assert NdrSupport::Password.valid?('something aBcDeFgFeDcBa')
|
|
77
|
-
end
|
|
78
|
-
|
|
79
|
-
test 'checking with decreasing then increasing sequences' do
|
|
80
|
-
refute NdrSupport::Password.valid?('876543212345678')
|
|
81
|
-
refute NdrSupport::Password.valid?('gFeDcBaBcDeFg')
|
|
82
|
-
|
|
83
|
-
assert NdrSupport::Password.valid?('something 876543212345678')
|
|
84
|
-
assert NdrSupport::Password.valid?('something gFeDcBaBcDeFg')
|
|
85
|
-
end
|
|
86
|
-
|
|
87
|
-
test 'checking with repeating characters' do
|
|
88
|
-
refute NdrSupport::Password.valid?('happen')
|
|
89
|
-
assert NdrSupport::Password.valid?('happens')
|
|
90
|
-
assert NdrSupport::Password.valid?('hapqren')
|
|
91
|
-
assert NdrSupport::Password.valid?('hapqsen')
|
|
92
|
-
|
|
93
|
-
refute NdrSupport::Password.valid?('balloon')
|
|
94
|
-
refute NdrSupport::Password.valid?('ballllLLLllLLLllllooooOOooOOoooon')
|
|
95
|
-
assert NdrSupport::Password.valid?('baileon')
|
|
96
|
-
end
|
|
97
|
-
|
|
98
|
-
test 'generating' do
|
|
99
|
-
password = NdrSupport::Password.generate
|
|
100
|
-
|
|
101
|
-
assert NdrSupport::Password.valid?(password)
|
|
102
|
-
assert_equal 4, password.split(/\s/).length
|
|
103
|
-
|
|
104
|
-
password.scan(/\w+/) { |wd| assert NdrSupport::Password::RFC1751_WORDS.include?(wd.upcase) }
|
|
105
|
-
end
|
|
106
|
-
|
|
107
|
-
test 'generating with custom length' do
|
|
108
|
-
password = NdrSupport::Password.generate(number_of_words: 6)
|
|
109
|
-
|
|
110
|
-
assert NdrSupport::Password.valid?(password)
|
|
111
|
-
assert_equal 6, password.split(/\s/).length
|
|
112
|
-
|
|
113
|
-
password.scan(/\w+/) { |wd| assert NdrSupport::Password::RFC1751_WORDS.include?(wd.upcase) }
|
|
114
|
-
end
|
|
115
|
-
|
|
116
|
-
test 'generating with custom separator' do
|
|
117
|
-
password = NdrSupport::Password.generate(separator: '-')
|
|
118
|
-
|
|
119
|
-
assert NdrSupport::Password.valid?(password)
|
|
120
|
-
assert_equal 4, password.split(/-/).length
|
|
121
|
-
|
|
122
|
-
password.scan(/\w+/) { |wd| assert NdrSupport::Password::RFC1751_WORDS.include?(wd.upcase) }
|
|
123
|
-
end
|
|
124
|
-
|
|
125
|
-
test 'generating unrealistically' do
|
|
126
|
-
exception = assert_raises(RuntimeError) { NdrSupport::Password.generate(number_of_words: 1) }
|
|
127
|
-
assert_match(/failed to generate/i, exception.message)
|
|
128
|
-
end
|
|
129
|
-
end
|
data/test/regexp_range_test.rb
DELETED
|
@@ -1,136 +0,0 @@
|
|
|
1
|
-
require 'test_helper'
|
|
2
|
-
|
|
3
|
-
# This tests our RegexpRange class
|
|
4
|
-
class RegexpRangeTest < Minitest::Test
|
|
5
|
-
def setup
|
|
6
|
-
@lines = [
|
|
7
|
-
'0Lorem ipsum dolor sit amet',
|
|
8
|
-
'1consectetur adipisicing elit',
|
|
9
|
-
'2sed do eiusmod tempor incididunt ut labore et dolore magna aliqua',
|
|
10
|
-
'3Ut enim ad minim veniam, quis nostrud exercitation ullamco',
|
|
11
|
-
'4laboris nisi ut aliquip ex ea commodo consequat'
|
|
12
|
-
]
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
test 'to_yaml' do
|
|
16
|
-
regexp_range = RegexpRange.new(0, /^3Ut/)
|
|
17
|
-
|
|
18
|
-
# Don't test YAML serialisation directly, but make it can be loaded:
|
|
19
|
-
deserialized_regexp_range = YAML.safe_load(regexp_range.to_yaml,
|
|
20
|
-
permitted_classes: [RegexpRange, Regexp])
|
|
21
|
-
assert_instance_of RegexpRange, deserialized_regexp_range
|
|
22
|
-
assert_equal regexp_range.begin, deserialized_regexp_range.begin
|
|
23
|
-
assert_equal regexp_range.end, deserialized_regexp_range.end
|
|
24
|
-
assert_equal regexp_range.excl, deserialized_regexp_range.excl
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
test 'to_range with number and number' do
|
|
28
|
-
assert_equal Range.new(2, 3, true), RegexpRange.new(2, 3, true).to_range(@lines)
|
|
29
|
-
assert_equal Range.new(2, 3, false), RegexpRange.new(2, 3, false).to_range(@lines)
|
|
30
|
-
assert_equal Range.new(0, -1, true), RegexpRange.new(0, -1, true).to_range(@lines)
|
|
31
|
-
assert_equal Range.new(0, -1, false), RegexpRange.new(0, -1, false).to_range(@lines)
|
|
32
|
-
|
|
33
|
-
assert_equal @lines[Range.new(2, 3, true)],
|
|
34
|
-
@lines[RegexpRange.new(2, 3, true).to_range(@lines)]
|
|
35
|
-
assert_equal @lines[Range.new(2, 3, false)],
|
|
36
|
-
@lines[RegexpRange.new(2, 3, false).to_range(@lines)]
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
test 'to_range with number and regexp' do
|
|
40
|
-
assert_equal Range.new(2, 3, true), RegexpRange.new(2, /^3Ut/, true).to_range(@lines)
|
|
41
|
-
assert_equal Range.new(2, 3, false), RegexpRange.new(2, /^3Ut/, false).to_range(@lines)
|
|
42
|
-
|
|
43
|
-
assert_equal @lines[Range.new(2, 3, true)],
|
|
44
|
-
@lines[RegexpRange.new(2, /^3Ut/, true).to_range(@lines)]
|
|
45
|
-
assert_equal @lines[Range.new(2, 3, false)],
|
|
46
|
-
@lines[RegexpRange.new(2, /^3Ut/, false).to_range(@lines)]
|
|
47
|
-
|
|
48
|
-
assert_raises RegexpRange::PatternMatchError do
|
|
49
|
-
RegexpRange.new(2, /^NO_MATCH$/, true).to_range(@lines)
|
|
50
|
-
end
|
|
51
|
-
assert_raises RegexpRange::PatternMatchError do
|
|
52
|
-
RegexpRange.new(2, /^NO_MATCH$/, false).to_range(@lines)
|
|
53
|
-
end
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
test 'to_range with regexp and number' do
|
|
57
|
-
assert_equal Range.new(1, -1, true), RegexpRange.new(/^1consec/, -1, true).to_range(@lines)
|
|
58
|
-
assert_equal Range.new(1, -1, false), RegexpRange.new(/^1consec/, -1, false).to_range(@lines)
|
|
59
|
-
assert_equal Range.new(1, 5, true), RegexpRange.new(/^1consec/, 5, true).to_range(@lines)
|
|
60
|
-
assert_equal Range.new(1, 5, false), RegexpRange.new(/^1consec/, 5, false).to_range(@lines)
|
|
61
|
-
|
|
62
|
-
assert_equal @lines[Range.new(1, -1, true)],
|
|
63
|
-
@lines[RegexpRange.new(/^1consec/, -1, true).to_range(@lines)]
|
|
64
|
-
assert_equal @lines[Range.new(1, -1, false)],
|
|
65
|
-
@lines[RegexpRange.new(/^1consec/, -1, false).to_range(@lines)]
|
|
66
|
-
|
|
67
|
-
assert_raises RegexpRange::PatternMatchError do
|
|
68
|
-
RegexpRange.new(/^NO_MATCH$/, 5, true).to_range(@lines)
|
|
69
|
-
end
|
|
70
|
-
assert_raises RegexpRange::PatternMatchError do
|
|
71
|
-
RegexpRange.new(/^NO_MATCH$/, 5, false).to_range(@lines)
|
|
72
|
-
end
|
|
73
|
-
end
|
|
74
|
-
|
|
75
|
-
test 'to_range with regexp and regexp' do
|
|
76
|
-
assert_equal Range.new(1, 3, true),
|
|
77
|
-
RegexpRange.new(/^1consec/, /^3Ut/, true).to_range(@lines)
|
|
78
|
-
assert_equal Range.new(1, 3, false),
|
|
79
|
-
RegexpRange.new(/^1consec/, /^3Ut/, false).to_range(@lines)
|
|
80
|
-
|
|
81
|
-
assert_equal @lines[Range.new(1, 3, true)],
|
|
82
|
-
@lines[RegexpRange.new(/^1consec/, /^3Ut/, true).to_range(@lines)]
|
|
83
|
-
assert_equal @lines[Range.new(1, 3, false)],
|
|
84
|
-
@lines[RegexpRange.new(/^1consec/, /^3Ut/, false).to_range(@lines)]
|
|
85
|
-
|
|
86
|
-
assert_raises RegexpRange::PatternMatchError do
|
|
87
|
-
RegexpRange.new(/^NO_MATCH$/, /^NO_MATCH$/, true).to_range(@lines)
|
|
88
|
-
end
|
|
89
|
-
assert_raises RegexpRange::PatternMatchError do
|
|
90
|
-
RegexpRange.new(/^NO_MATCH$/, /^NO_MATCH$/, false).to_range(@lines)
|
|
91
|
-
end
|
|
92
|
-
end
|
|
93
|
-
|
|
94
|
-
test 'comparison to self' do
|
|
95
|
-
rr1 = RegexpRange.new(/start/, /end/, false)
|
|
96
|
-
assert_equal rr1, rr1
|
|
97
|
-
end
|
|
98
|
-
|
|
99
|
-
test 'comparison to identical regexprange' do
|
|
100
|
-
rr1 = RegexpRange.new(/start/, /end/, false)
|
|
101
|
-
rr2 = RegexpRange.new(/start/, /end/, false)
|
|
102
|
-
assert_equal rr1, rr2
|
|
103
|
-
end
|
|
104
|
-
|
|
105
|
-
test 'comparison to different regexprange' do
|
|
106
|
-
rr1 = RegexpRange.new(/start/, /end/, false)
|
|
107
|
-
rr2 = RegexpRange.new(/start/, /end/, true)
|
|
108
|
-
refute_equal rr1, rr2
|
|
109
|
-
|
|
110
|
-
rr3 = RegexpRange.new(/start/, /end/, false)
|
|
111
|
-
rr4 = RegexpRange.new(/start/, /finish/, false)
|
|
112
|
-
refute_equal rr3, rr4
|
|
113
|
-
|
|
114
|
-
rr5 = RegexpRange.new(/start/, /end/, true)
|
|
115
|
-
rr6 = RegexpRange.new(/begin/, /end/, true)
|
|
116
|
-
refute_equal rr5, rr6
|
|
117
|
-
end
|
|
118
|
-
|
|
119
|
-
test 'hash key comparison' do
|
|
120
|
-
rr1 = RegexpRange.new(/start/, /end/, false)
|
|
121
|
-
rr2 = RegexpRange.new(/start/, /end/, false)
|
|
122
|
-
rr3 = RegexpRange.new(/start/, /end/, true)
|
|
123
|
-
|
|
124
|
-
hash = Hash.new { |h, k| h[k] = 0 }
|
|
125
|
-
|
|
126
|
-
hash[rr1] += 1
|
|
127
|
-
hash[rr2] += 1
|
|
128
|
-
hash[rr3] += 1
|
|
129
|
-
|
|
130
|
-
assert_equal 2, hash.keys.length
|
|
131
|
-
|
|
132
|
-
assert_equal 2, hash[rr1]
|
|
133
|
-
assert_equal 2, hash[rr2]
|
|
134
|
-
assert_equal 1, hash[rr3]
|
|
135
|
-
end
|
|
136
|
-
end
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
# This allows us different filesystem paths for different platforms
|
|
2
|
-
---
|
|
3
|
-
test_files: &test_files
|
|
4
|
-
root: <%= Dir.mktmpdir %>
|
|
5
|
-
|
|
6
|
-
? !ruby/regexp /.*/
|
|
7
|
-
:
|
|
8
|
-
dbs_outbox:
|
|
9
|
-
root: "/mounts/ron/dbs_outbox"
|
|
10
|
-
prms:
|
|
11
|
-
- r
|
|
12
|
-
- w
|
|
13
|
-
- x
|
|
14
|
-
broken_space:
|
|
15
|
-
root: "potato"
|
|
16
|
-
prms:
|
|
17
|
-
- r
|
|
18
|
-
- w
|
|
19
|
-
- x
|
|
20
|
-
test_space_r:
|
|
21
|
-
<<: *test_files
|
|
22
|
-
prms:
|
|
23
|
-
- r
|
|
24
|
-
test_space_w:
|
|
25
|
-
<<: *test_files
|
|
26
|
-
prms:
|
|
27
|
-
- w
|
|
28
|
-
test_space_rw:
|
|
29
|
-
<<: *test_files
|
|
30
|
-
prms:
|
|
31
|
-
- r
|
|
32
|
-
- w
|
|
33
|
-
permanent_test_files:
|
|
34
|
-
root: <%#= Rails.root.join("test","unit","files") %>
|
|
35
|
-
prms:
|
|
36
|
-
- r
|
|
37
|
-
- w
|