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.
Files changed (47) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +12 -1
  3. data/LICENSE.txt +1 -1
  4. data/README.md +3 -3
  5. data/lib/ndr_support/concerns/working_days.rb +12 -1
  6. data/lib/ndr_support/date_and_time_extensions.rb +12 -11
  7. data/lib/ndr_support/ourdate/build_datetime.rb +1 -5
  8. data/lib/ndr_support/ourdate.rb +1 -5
  9. data/lib/ndr_support/string/clean_methodable.rb +4 -4
  10. data/lib/ndr_support/string/conversions.rb +1 -5
  11. data/lib/ndr_support/version.rb +1 -1
  12. data/ndr_support.gemspec +8 -6
  13. metadata +14 -76
  14. data/.gitignore +0 -19
  15. data/.rubocop.yml +0 -1
  16. data/Gemfile +0 -4
  17. data/Guardfile +0 -24
  18. data/Rakefile +0 -12
  19. data/code_safety.yml +0 -290
  20. data/gemfiles/Gemfile.rails61 +0 -6
  21. data/gemfiles/Gemfile.rails70 +0 -6
  22. data/gemfiles/Gemfile.rails71 +0 -6
  23. data/test/array_test.rb +0 -20
  24. data/test/concerns/working_days_test.rb +0 -148
  25. data/test/date_and_time_extensions_test.rb +0 -56
  26. data/test/daterange_test.rb +0 -307
  27. data/test/hash_test.rb +0 -84
  28. data/test/integer/calculations_test.rb +0 -28
  29. data/test/integer/rounding_test.rb +0 -14
  30. data/test/integer/working_days_test.rb +0 -14
  31. data/test/nil_test.rb +0 -40
  32. data/test/obfuscator_test.rb +0 -26
  33. data/test/ourdate_test.rb +0 -26
  34. data/test/ourtime_test.rb +0 -45
  35. data/test/password_test.rb +0 -129
  36. data/test/regexp_range_test.rb +0 -136
  37. data/test/resources/filesystem_paths.yml +0 -37
  38. data/test/safe_file_test.rb +0 -670
  39. data/test/safe_path_test.rb +0 -168
  40. data/test/string/cleaning_test.rb +0 -247
  41. data/test/string/conversions_test.rb +0 -375
  42. data/test/test_helper.rb +0 -46
  43. data/test/threat_scanner_test.rb +0 -77
  44. data/test/utf8_encoding/control_characters_test.rb +0 -84
  45. data/test/utf8_encoding/force_binary_test.rb +0 -64
  46. data/test/utf8_encoding_test.rb +0 -170
  47. data/test/yaml/serialization_test.rb +0 -200
@@ -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
@@ -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