ndr_support 5.3.0 → 5.3.1
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/.travis.yml +2 -1
- data/code_safety.yml +36 -28
- data/gemfiles/Gemfile.rails51 +9 -0
- data/lib/ndr_support.rb +1 -0
- data/lib/ndr_support/date_and_time_extensions.rb +9 -0
- data/lib/ndr_support/obfuscator.rb +24 -0
- data/lib/ndr_support/ourtime.rb +12 -18
- data/lib/ndr_support/string/cleaning.rb +1 -1
- data/lib/ndr_support/string/conversions.rb +8 -0
- data/lib/ndr_support/version.rb +1 -1
- data/ndr_support.gemspec +2 -2
- data/test/daterange_test.rb +8 -0
- data/test/obfuscator_test.rb +26 -0
- data/test/ourtime_test.rb +22 -4
- data/test/string/cleaning_test.rb +7 -0
- data/test/string/conversions_test.rb +6 -0
- data/test/test_helper.rb +1 -0
- metadata +15 -12
- data/gemfiles/Gemfile.rails32 +0 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 32516de19ac1430b0cb34bbe3bb334cfc782c1f4
|
4
|
+
data.tar.gz: 561996469be148817ff80150a3bcd90e637dd14b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e8ff33a5d7f85ad3e32e424f227ad94e26ba93d1fa45a9461a48bb27208380bd614534b4fa8d7b3f8eb9fa1a3ef7cacf84a77d6550f932f827c51ac1ac3e9631
|
7
|
+
data.tar.gz: 400450cc5d245dda33005cabf8c8076aed790f6ab4a0722f03f60e149c82be31739520a4464d9e396de7389edbf3621ebc5737c60b2b7b800ece6d00f065d09b
|
data/.travis.yml
CHANGED
data/code_safety.yml
CHANGED
@@ -10,8 +10,8 @@ file safety:
|
|
10
10
|
safe_revision: a02f14cbf1fc36fbaf820365fdedfdc9af326db1
|
11
11
|
".travis.yml":
|
12
12
|
comments: diff failed; reviewed whole file
|
13
|
-
reviewed_by:
|
14
|
-
safe_revision:
|
13
|
+
reviewed_by: brian.shand
|
14
|
+
safe_revision: fb10f9e24cfe0dde8bba65e61ff46d2b9fe2d7fb
|
15
15
|
CODE_OF_CONDUCT.md:
|
16
16
|
comments:
|
17
17
|
reviewed_by: timgentry
|
@@ -36,10 +36,6 @@ file safety:
|
|
36
36
|
comments:
|
37
37
|
reviewed_by: timgentry
|
38
38
|
safe_revision: e33e9dae7f38bc449ce9276515a539836dbbbd53
|
39
|
-
gemfiles/Gemfile.rails32:
|
40
|
-
comments:
|
41
|
-
reviewed_by: pauleves
|
42
|
-
safe_revision: f76ad0fe72d42b1ff37553c8194935a8b93a6848
|
43
39
|
gemfiles/Gemfile.rails41:
|
44
40
|
comments:
|
45
41
|
reviewed_by: pauleves
|
@@ -52,10 +48,14 @@ file safety:
|
|
52
48
|
comments:
|
53
49
|
reviewed_by: josh.pencheon
|
54
50
|
safe_revision: 55ed1c2a18b9cc4d1d996ee69419f5ee38f87746
|
51
|
+
gemfiles/Gemfile.rails51:
|
52
|
+
comments:
|
53
|
+
reviewed_by: brian.shand
|
54
|
+
safe_revision: 4e87fd9d64fc0f15b359ba60fc48cda54453c647
|
55
55
|
lib/ndr_support.rb:
|
56
56
|
comments:
|
57
|
-
reviewed_by:
|
58
|
-
safe_revision:
|
57
|
+
reviewed_by: brian.shand
|
58
|
+
safe_revision: 50a4293953f9ae227823c390b069a3ed4825074c
|
59
59
|
lib/ndr_support/array.rb:
|
60
60
|
comments:
|
61
61
|
reviewed_by: pauleves
|
@@ -66,8 +66,8 @@ file safety:
|
|
66
66
|
safe_revision: 5f9c98dcad6f6889d2431eb98cf07b1f5c3e57be
|
67
67
|
lib/ndr_support/date_and_time_extensions.rb:
|
68
68
|
comments:
|
69
|
-
reviewed_by:
|
70
|
-
safe_revision:
|
69
|
+
reviewed_by: brian.shand
|
70
|
+
safe_revision: 0a06fed3e7530185497f786decdb77a62d35e101
|
71
71
|
lib/ndr_support/daterange.rb:
|
72
72
|
comments:
|
73
73
|
reviewed_by: josh.pencheon
|
@@ -92,14 +92,18 @@ file safety:
|
|
92
92
|
comments:
|
93
93
|
reviewed_by: pauleves
|
94
94
|
safe_revision: 4a4ed24d2cfe7e1736baadf4cf6e0fece6823be1
|
95
|
+
lib/ndr_support/obfuscator.rb:
|
96
|
+
comments:
|
97
|
+
reviewed_by: brian.shand
|
98
|
+
safe_revision: 50a4293953f9ae227823c390b069a3ed4825074c
|
95
99
|
lib/ndr_support/ourdate.rb:
|
96
100
|
comments:
|
97
101
|
reviewed_by: pauleves
|
98
102
|
safe_revision: a18fb5c6c360806a177a9c5584458586e90b3530
|
99
103
|
lib/ndr_support/ourtime.rb:
|
100
104
|
comments:
|
101
|
-
reviewed_by:
|
102
|
-
safe_revision:
|
105
|
+
reviewed_by: brian.shand
|
106
|
+
safe_revision: 73527378c53b7ac00d1037155572fe3f01324992
|
103
107
|
lib/ndr_support/password.rb:
|
104
108
|
comments: with input from brian.shand
|
105
109
|
reviewed_by: josh.pencheon
|
@@ -115,7 +119,7 @@ file safety:
|
|
115
119
|
lib/ndr_support/safe_file.rb:
|
116
120
|
comments:
|
117
121
|
reviewed_by: timgentry
|
118
|
-
safe_revision: 033819a6ada448551c71a72bbbef4652be3d9c40
|
122
|
+
safe_revision: '033819a6ada448551c71a72bbbef4652be3d9c40'
|
119
123
|
lib/ndr_support/safe_path.rb:
|
120
124
|
comments:
|
121
125
|
reviewed_by: timgentry
|
@@ -123,11 +127,11 @@ file safety:
|
|
123
127
|
lib/ndr_support/string/cleaning.rb:
|
124
128
|
comments:
|
125
129
|
reviewed_by: brian.shand
|
126
|
-
safe_revision:
|
130
|
+
safe_revision: 60cc69774d5aff92252558feae9604544def7583
|
127
131
|
lib/ndr_support/string/conversions.rb:
|
128
132
|
comments:
|
129
|
-
reviewed_by:
|
130
|
-
safe_revision:
|
133
|
+
reviewed_by: brian.shand
|
134
|
+
safe_revision: 0a06fed3e7530185497f786decdb77a62d35e101
|
131
135
|
lib/ndr_support/tasks.rb:
|
132
136
|
comments:
|
133
137
|
reviewed_by: timgentry
|
@@ -151,15 +155,15 @@ file safety:
|
|
151
155
|
lib/ndr_support/version.rb:
|
152
156
|
comments:
|
153
157
|
reviewed_by: brian.shand
|
154
|
-
safe_revision:
|
158
|
+
safe_revision: b27cf809b06814e6c1373e7b069b6537eaae3e15
|
155
159
|
lib/ndr_support/yaml/serialization_migration.rb:
|
156
160
|
comments:
|
157
161
|
reviewed_by: timgentry
|
158
162
|
safe_revision: 29595e6431587ff9b7db6e3ad3abbb3577bff99c
|
159
163
|
ndr_support.gemspec:
|
160
164
|
comments:
|
161
|
-
reviewed_by:
|
162
|
-
safe_revision:
|
165
|
+
reviewed_by: brian.shand
|
166
|
+
safe_revision: fb10f9e24cfe0dde8bba65e61ff46d2b9fe2d7fb
|
163
167
|
test/array_test.rb:
|
164
168
|
comments:
|
165
169
|
reviewed_by: timgentry
|
@@ -170,8 +174,8 @@ file safety:
|
|
170
174
|
safe_revision: 506a317e59d0ccb5b32d813b74d822f35a55cea9
|
171
175
|
test/daterange_test.rb:
|
172
176
|
comments:
|
173
|
-
reviewed_by:
|
174
|
-
safe_revision:
|
177
|
+
reviewed_by: brian.shand
|
178
|
+
safe_revision: 9a61389244a4e8e271515ab792aa5a9f8674eb1f
|
175
179
|
test/fixnum/calculations_test.rb:
|
176
180
|
comments:
|
177
181
|
reviewed_by: timgentry
|
@@ -188,14 +192,18 @@ file safety:
|
|
188
192
|
comments:
|
189
193
|
reviewed_by: timgentry
|
190
194
|
safe_revision: 2a5d30674dc9dde336e1dbbbf3c8a98905647432
|
195
|
+
test/obfuscator_test.rb:
|
196
|
+
comments:
|
197
|
+
reviewed_by: brian.shand
|
198
|
+
safe_revision: 50a4293953f9ae227823c390b069a3ed4825074c
|
191
199
|
test/ourdate_test.rb:
|
192
200
|
comments:
|
193
201
|
reviewed_by: josh.pencheon
|
194
202
|
safe_revision: 7c32f5a80c1fb7aaf6e850d4b0651a7b47640e15
|
195
203
|
test/ourtime_test.rb:
|
196
204
|
comments:
|
197
|
-
reviewed_by:
|
198
|
-
safe_revision:
|
205
|
+
reviewed_by: brian.shand
|
206
|
+
safe_revision: b9bc1e18464a27f84e69ebea083dd6a8d351c8cb
|
199
207
|
test/password_test.rb:
|
200
208
|
comments: with input from brian.shand
|
201
209
|
reviewed_by: josh.pencheon
|
@@ -219,15 +227,15 @@ file safety:
|
|
219
227
|
test/string/cleaning_test.rb:
|
220
228
|
comments:
|
221
229
|
reviewed_by: brian.shand
|
222
|
-
safe_revision:
|
230
|
+
safe_revision: 60cc69774d5aff92252558feae9604544def7583
|
223
231
|
test/string/conversions_test.rb:
|
224
232
|
comments:
|
225
|
-
reviewed_by:
|
226
|
-
safe_revision:
|
233
|
+
reviewed_by: brian.shand
|
234
|
+
safe_revision: 1955bf30ffe581610981f0148569e252cba02926
|
227
235
|
test/test_helper.rb:
|
228
236
|
comments:
|
229
|
-
reviewed_by:
|
230
|
-
safe_revision:
|
237
|
+
reviewed_by: brian.shand
|
238
|
+
safe_revision: 4533a155924f8a1415dd64e251a7f8311ece3bd8
|
231
239
|
test/utf8_encoding/control_characters_test.rb:
|
232
240
|
comments:
|
233
241
|
reviewed_by: timgentry
|
data/lib/ndr_support.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'yaml'
|
2
|
+
require 'date'
|
2
3
|
|
3
4
|
require 'ndr_support/concerns/working_days'
|
4
5
|
[Time, Date, DateTime].each { |klass| klass.send(:include, WorkingDays) }
|
@@ -8,6 +9,14 @@ class Date
|
|
8
9
|
def to_iso
|
9
10
|
strftime('%Y-%m-%d')
|
10
11
|
end # ISO date format
|
12
|
+
|
13
|
+
alias orig_to_datetime to_datetime
|
14
|
+
|
15
|
+
def to_datetime
|
16
|
+
# Default timezone for Date is GMT, not local timezone
|
17
|
+
return in_time_zone.to_datetime if ActiveRecord::Base.default_timezone == :local
|
18
|
+
orig_to_datetime
|
19
|
+
end
|
11
20
|
end
|
12
21
|
|
13
22
|
#-------------------------------------------------------------------------------
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module NdrSupport
|
2
|
+
# Contains logic for consistently obfuscating names and addresses
|
3
|
+
# using a simple substitution cipher.
|
4
|
+
module Obfuscator
|
5
|
+
extend self
|
6
|
+
|
7
|
+
# Set default obfuscation seed
|
8
|
+
def setup(seed)
|
9
|
+
@seed = seed
|
10
|
+
end
|
11
|
+
|
12
|
+
# Obfuscate a name or address, either with the given seed, or default seed
|
13
|
+
def obfuscate(name, seed = nil)
|
14
|
+
rnd = Random.new(seed || @seed)
|
15
|
+
vowels = %w(A E I O U)
|
16
|
+
consonants = ('A'..'Z').to_a - vowels
|
17
|
+
digits = ('0'..'9').to_a
|
18
|
+
dict = Hash[(vowels + consonants + digits).zip(vowels.shuffle(random: rnd) +
|
19
|
+
consonants.shuffle(random: rnd) +
|
20
|
+
digits.shuffle(random: rnd))]
|
21
|
+
name.upcase.split(//).map { |s| dict[s] || s }.join
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
data/lib/ndr_support/ourtime.rb
CHANGED
@@ -6,6 +6,11 @@ require 'ndr_support/ourdate'
|
|
6
6
|
class Ourtime
|
7
7
|
attr_reader :thetime
|
8
8
|
|
9
|
+
def self.zone
|
10
|
+
@zone ||= ActiveSupport::TimeZone.new('London')
|
11
|
+
end
|
12
|
+
|
13
|
+
# TODO: deprecate this...
|
9
14
|
def initialize(x = nil)
|
10
15
|
if x.is_a?(Time)
|
11
16
|
@thetime = x
|
@@ -27,25 +32,14 @@ class Ourtime
|
|
27
32
|
@thetime.nil? && @source.blank?
|
28
33
|
end
|
29
34
|
|
35
|
+
private
|
36
|
+
|
30
37
|
def source=(s)
|
31
|
-
|
32
|
-
# Re-parse our own timestamps [+- seconds] without swapping month / day
|
33
|
-
@thetime = DateTime.strptime(s, '%d.%m.%Y %H:%M:%S').to_time
|
34
|
-
rescue ArgumentError
|
35
|
-
begin
|
36
|
-
@thetime = DateTime.strptime(s, '%d.%m.%Y %H:%M').to_time
|
37
|
-
rescue ArgumentError
|
38
|
-
@thetime = Time.parse(s)
|
39
|
-
end
|
40
|
-
end
|
41
|
-
# Apply timezone correction for daylight saving
|
42
|
-
if @thetime
|
43
|
-
@thetime = Ourdate.build_datetime(@thetime.year, @thetime.month,
|
44
|
-
@thetime.day, @thetime.hour,
|
45
|
-
@thetime.min, @thetime.sec,
|
46
|
-
@thetime.instance_of?(Time) ? @thetime.usec : 0).to_time
|
47
|
-
end
|
38
|
+
@thetime = zone.parse(s)
|
48
39
|
end
|
49
40
|
|
50
|
-
|
41
|
+
def zone
|
42
|
+
# `delegate` doesn't work for this on Rails 3.2
|
43
|
+
self.class.zone
|
44
|
+
end
|
51
45
|
end
|
@@ -127,6 +127,14 @@ class String
|
|
127
127
|
end
|
128
128
|
end
|
129
129
|
|
130
|
+
alias orig_to_datetime to_datetime
|
131
|
+
|
132
|
+
def to_datetime
|
133
|
+
# Default timezone for to_datetime conversion is GMT, not local timezone
|
134
|
+
return to_time.to_datetime if ActiveRecord::Base.default_timezone == :local
|
135
|
+
orig_to_datetime
|
136
|
+
end
|
137
|
+
|
130
138
|
# Try to convert the string value into boolean
|
131
139
|
def to_boolean
|
132
140
|
# SECURE: BNS 2012-10-09: But may behave oddly for multi-line input
|
data/lib/ndr_support/version.rb
CHANGED
data/ndr_support.gemspec
CHANGED
@@ -19,8 +19,8 @@ Gem::Specification.new do |spec|
|
|
19
19
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
20
20
|
spec.require_paths = ['lib']
|
21
21
|
|
22
|
-
spec.add_dependency 'activerecord', '>=
|
23
|
-
spec.add_dependency 'activesupport', '>=
|
22
|
+
spec.add_dependency 'activerecord', '>= 4.0.13', '< 5.2'
|
23
|
+
spec.add_dependency 'activesupport', '>= 4.0.13', '< 5.2'
|
24
24
|
|
25
25
|
spec.add_development_dependency 'bundler', '~> 1.7'
|
26
26
|
spec.add_development_dependency 'rake', '~> 10.0'
|
data/test/daterange_test.rb
CHANGED
@@ -123,6 +123,14 @@ class DaterangeTest < Minitest::Test
|
|
123
123
|
assert_equal '03.2010', dr.to_s # Ideally '03.2010'
|
124
124
|
end
|
125
125
|
|
126
|
+
def test_date_with_daylight_saving
|
127
|
+
dr = Daterange.new(Date.new(2017, 9, 2)) # During daylight saving
|
128
|
+
assert_equal '02.09.2017', dr.to_s
|
129
|
+
return unless ActiveRecord::Base.default_timezone == :local
|
130
|
+
assert_equal Date.new(2017, 9, 2).in_time_zone.utc_offset, dr.date1.utc_offset, 'Expect consistent offset'
|
131
|
+
assert_equal '2017-09-02'.thetime, dr.date1
|
132
|
+
end
|
133
|
+
|
126
134
|
def test_verbose
|
127
135
|
dr = Daterange.new('01.03.2010')
|
128
136
|
assert_equal '01 March 2010', dr.verbose
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
# Tests obfuscation library
|
4
|
+
class ObfuscatorTest < Minitest::Test
|
5
|
+
test 'deterministic seed should give consistent obfuscation' do
|
6
|
+
seed1 = 1383023878118423080153274094615300156
|
7
|
+
assert_equal 'CE PSEQQH', NdrSupport::Obfuscator.obfuscate('JO BLOGGS', seed1)
|
8
|
+
assert_equal 'CE PSEQQH', NdrSupport::Obfuscator.obfuscate('JO BLOGGS', seed1),
|
9
|
+
'consistent re-obfuscation'
|
10
|
+
assert_equal 'CE PSEQQH', NdrSupport::Obfuscator.obfuscate('Jo Bloggs', seed1),
|
11
|
+
'case insensitive'
|
12
|
+
assert_equal 'CEZG PTIQQH', NdrSupport::Obfuscator.obfuscate('JOHN BRIGGS', seed1)
|
13
|
+
end
|
14
|
+
|
15
|
+
test 'different seeds should obfuscate differently' do
|
16
|
+
seed2 = 33333285080880515415022777373811069493
|
17
|
+
assert_equal 'VI RQICCZ', NdrSupport::Obfuscator.obfuscate('JO BLOGGS', seed2)
|
18
|
+
end
|
19
|
+
|
20
|
+
test 'test seed setup' do
|
21
|
+
seed3 = 24978785977027615655244702873942606627
|
22
|
+
assert_equal '781 RACO RXHOOX', NdrSupport::Obfuscator.obfuscate('369 Some Street', seed3)
|
23
|
+
NdrSupport::Obfuscator.setup(seed3)
|
24
|
+
assert_equal '781 RACO RXHOOX', NdrSupport::Obfuscator.obfuscate('369 Some Street')
|
25
|
+
end
|
26
|
+
end
|
data/test/ourtime_test.rb
CHANGED
@@ -2,26 +2,44 @@ require 'test_helper'
|
|
2
2
|
|
3
3
|
# This tests our Ourtime class
|
4
4
|
class OurtimeTest < Minitest::Test
|
5
|
-
def
|
5
|
+
def test_initialize_with_local_format_string_gmt
|
6
6
|
# Creating an Ourtime from a local-format String (with seconds)
|
7
7
|
ot = Ourtime.new('01.02.1993 04:05:06')
|
8
8
|
assert_equal '1993-02-01 04:05:06', ot.thetime.strftime('%Y-%m-%d %H:%M:%S')
|
9
9
|
assert_kind_of Time, ot.thetime
|
10
|
+
assert_equal 0.hours, ot.thetime.gmt_offset
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_initialize_with_local_format_string_bst
|
14
|
+
# Creating an Ourtime from a local-format String (with seconds)
|
15
|
+
ot = Ourtime.new('01.08.1993 04:05:06')
|
16
|
+
assert_equal '1993-08-01 04:05:06', ot.thetime.strftime('%Y-%m-%d %H:%M:%S')
|
17
|
+
assert_kind_of Time, ot.thetime
|
18
|
+
assert_equal 1.hours, ot.thetime.gmt_offset
|
10
19
|
end
|
11
20
|
|
12
21
|
def test_initialize_with_time
|
13
22
|
# Creating an Ourtime from a Time
|
14
23
|
ot = Ourtime.new(Time.mktime(1993, 2, 1, 4, 5))
|
15
24
|
assert_equal '01.02.1993 04:05', ot.to_s
|
25
|
+
assert_equal 0.hours, ot.thetime.gmt_offset
|
16
26
|
end
|
17
27
|
|
18
28
|
def test_initialize_with_no_parameters
|
19
29
|
assert Ourtime.new.blank? # delegates to empty?
|
20
30
|
end
|
21
31
|
|
22
|
-
def
|
32
|
+
def test_initialize_with_iso_string_bst
|
33
|
+
# Parsing an ISO datetime
|
34
|
+
ot = Ourtime.new('1993-05-05 06:07:08')
|
35
|
+
assert_equal '1993-05-05 06:07:08', ot.thetime.strftime('%Y-%m-%d %H:%M:%S')
|
36
|
+
assert_equal 1.hours, ot.thetime.gmt_offset
|
37
|
+
end
|
38
|
+
|
39
|
+
def test_initialize_with_iso_string_gmt
|
23
40
|
# Parsing an ISO datetime
|
24
|
-
ot = Ourtime.new('1993-
|
25
|
-
assert_equal '1993-
|
41
|
+
ot = Ourtime.new('1993-01-05 06:07:08')
|
42
|
+
assert_equal '1993-01-05 06:07:08', ot.thetime.strftime('%Y-%m-%d %H:%M:%S')
|
43
|
+
assert_equal 0.hours, ot.thetime.gmt_offset
|
26
44
|
end
|
27
45
|
end
|
@@ -208,6 +208,13 @@ class String
|
|
208
208
|
assert_equal 'trailing spaces', 'trailing spaces '.clean(:strip)
|
209
209
|
end
|
210
210
|
|
211
|
+
test 'clean itself' do
|
212
|
+
assert_equal ' leading & trailing spaces ', ' leading & trailing spaces '.clean(:itself)
|
213
|
+
assert_equal 'no leading or trailing spaces', 'no leading or trailing spaces'.clean(:itself)
|
214
|
+
assert_equal ' ', ' '.clean(:itself)
|
215
|
+
assert_equal '', ''.clean(:itself)
|
216
|
+
end
|
217
|
+
|
211
218
|
test 'clean fallback' do
|
212
219
|
assert_equal 'UN KNOWN', 'UN ?KNOWN'.clean(:somethingorother)
|
213
220
|
assert_equal 'UNKNOWN', 'UNKNOWN'.clean(:somethingorother)
|
@@ -78,6 +78,12 @@ class String::ConversionsTest < Minitest::Test
|
|
78
78
|
assert_ymd [2014, 3, 2], '2014/03/02 13:02:01'.to_date
|
79
79
|
end
|
80
80
|
|
81
|
+
test 'should convert strings to DateTime correctly' do
|
82
|
+
assert_equal 0, '2018-01-02'.to_datetime.utc_offset
|
83
|
+
return unless ActiveRecord::Base.default_timezone == :local
|
84
|
+
assert_equal Time.new(2017, 9, 2).utc_offset, '2017-09-02'.to_datetime.utc_offset, 'Expect consistent offset'
|
85
|
+
end
|
86
|
+
|
81
87
|
test 'ParseDate should behave consistently' do
|
82
88
|
# We use ParseDate (and thus Date._parse) for
|
83
89
|
# converting strings to dates. Its behaviour
|
data/test/test_helper.rb
CHANGED
@@ -18,6 +18,7 @@ NdrSupport.apply_era_date_formats!
|
|
18
18
|
# Instead, we want to store all times in local time.
|
19
19
|
ActiveRecord::Base.default_timezone = :local
|
20
20
|
ActiveRecord::Base.time_zone_aware_attributes = false
|
21
|
+
Time.zone = 'London'
|
21
22
|
|
22
23
|
SafePath.configure! File.dirname(__FILE__) + '/resources/filesystem_paths.yml'
|
23
24
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ndr_support
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.3.
|
4
|
+
version: 5.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- NCRS Development Team
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-01-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -16,40 +16,40 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 4.0.13
|
20
20
|
- - "<"
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version: '5.
|
22
|
+
version: '5.2'
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
26
26
|
requirements:
|
27
27
|
- - ">="
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version:
|
29
|
+
version: 4.0.13
|
30
30
|
- - "<"
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version: '5.
|
32
|
+
version: '5.2'
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
34
|
name: activesupport
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
36
36
|
requirements:
|
37
37
|
- - ">="
|
38
38
|
- !ruby/object:Gem::Version
|
39
|
-
version:
|
39
|
+
version: 4.0.13
|
40
40
|
- - "<"
|
41
41
|
- !ruby/object:Gem::Version
|
42
|
-
version: '5.
|
42
|
+
version: '5.2'
|
43
43
|
type: :runtime
|
44
44
|
prerelease: false
|
45
45
|
version_requirements: !ruby/object:Gem::Requirement
|
46
46
|
requirements:
|
47
47
|
- - ">="
|
48
48
|
- !ruby/object:Gem::Version
|
49
|
-
version:
|
49
|
+
version: 4.0.13
|
50
50
|
- - "<"
|
51
51
|
- !ruby/object:Gem::Version
|
52
|
-
version: '5.
|
52
|
+
version: '5.2'
|
53
53
|
- !ruby/object:Gem::Dependency
|
54
54
|
name: bundler
|
55
55
|
requirement: !ruby/object:Gem::Requirement
|
@@ -234,10 +234,10 @@ files:
|
|
234
234
|
- README.md
|
235
235
|
- Rakefile
|
236
236
|
- code_safety.yml
|
237
|
-
- gemfiles/Gemfile.rails32
|
238
237
|
- gemfiles/Gemfile.rails41
|
239
238
|
- gemfiles/Gemfile.rails42
|
240
239
|
- gemfiles/Gemfile.rails50
|
240
|
+
- gemfiles/Gemfile.rails51
|
241
241
|
- lib/ndr_support.rb
|
242
242
|
- lib/ndr_support/array.rb
|
243
243
|
- lib/ndr_support/concerns/working_days.rb
|
@@ -248,6 +248,7 @@ files:
|
|
248
248
|
- lib/ndr_support/hash.rb
|
249
249
|
- lib/ndr_support/integer.rb
|
250
250
|
- lib/ndr_support/nil.rb
|
251
|
+
- lib/ndr_support/obfuscator.rb
|
251
252
|
- lib/ndr_support/ourdate.rb
|
252
253
|
- lib/ndr_support/ourtime.rb
|
253
254
|
- lib/ndr_support/password.rb
|
@@ -272,6 +273,7 @@ files:
|
|
272
273
|
- test/hash_test.rb
|
273
274
|
- test/integer_test.rb
|
274
275
|
- test/nil_test.rb
|
276
|
+
- test/obfuscator_test.rb
|
275
277
|
- test/ourdate_test.rb
|
276
278
|
- test/ourtime_test.rb
|
277
279
|
- test/password_test.rb
|
@@ -306,7 +308,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
306
308
|
version: '0'
|
307
309
|
requirements: []
|
308
310
|
rubyforge_project:
|
309
|
-
rubygems_version: 2.
|
311
|
+
rubygems_version: 2.6.14
|
310
312
|
signing_key:
|
311
313
|
specification_version: 4
|
312
314
|
summary: NDR Support library
|
@@ -318,6 +320,7 @@ test_files:
|
|
318
320
|
- test/hash_test.rb
|
319
321
|
- test/integer_test.rb
|
320
322
|
- test/nil_test.rb
|
323
|
+
- test/obfuscator_test.rb
|
321
324
|
- test/ourdate_test.rb
|
322
325
|
- test/ourtime_test.rb
|
323
326
|
- test/password_test.rb
|