hoodoo 1.1.3 → 1.2.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 +8 -8
- data/lib/hoodoo/active.rb +1 -0
- data/lib/hoodoo/active/active_record/base.rb +7 -0
- data/lib/hoodoo/active/active_record/creator.rb +1 -1
- data/lib/hoodoo/active/active_record/dated.rb +8 -1
- data/lib/hoodoo/active/active_record/finder.rb +37 -3
- data/lib/hoodoo/active/active_record/manually_dated.rb +710 -0
- data/lib/hoodoo/active/active_record/secure.rb +1 -1
- data/lib/hoodoo/active/active_record/support.rb +8 -2
- data/lib/hoodoo/active/active_record/translated.rb +1 -1
- data/lib/hoodoo/active/active_record/uuid.rb +27 -3
- data/lib/hoodoo/active/active_record/writer.rb +1 -1
- data/lib/hoodoo/utilities/uuid.rb +13 -9
- data/lib/hoodoo/version.rb +1 -1
- data/spec/active/active_record/dated_spec.rb +24 -6
- data/spec/active/active_record/finder_spec.rb +26 -4
- data/spec/active/active_record/manually_dated_spec.rb +776 -0
- data/spec/spec_helper.rb +2 -1
- data/spec/utilities/uuid_spec.rb +142 -10
- metadata +5 -16
data/spec/spec_helper.rb
CHANGED
@@ -73,7 +73,8 @@ RSpec.configure do | config |
|
|
73
73
|
|
74
74
|
# Wake up Database Cleaner.
|
75
75
|
|
76
|
-
|
76
|
+
DATABASE_CLEANER_STRATEGY = :transaction # MUST NOT be changed
|
77
|
+
DatabaseCleaner.strategy = DATABASE_CLEANER_STRATEGY
|
77
78
|
|
78
79
|
database_name = 'hoodoo_test'
|
79
80
|
|
data/spec/utilities/uuid_spec.rb
CHANGED
@@ -1,20 +1,152 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Hoodoo::UUID do
|
4
|
+
before :all do
|
5
|
+
valid_v4_full_uuids = [
|
6
|
+
# 'xxxxxxxx-xxxx-4xxx-Yxxx-xxxxxxxxxxxx' Y = 8,9,A,B,a,b
|
7
|
+
'01234567-89AB-4CDE-8Fab-cdef00000000',
|
8
|
+
'01234567-89AB-4CDE-9Fab-cdef00000000',
|
9
|
+
'01234567-89AB-4CDE-AFab-cdef00000000',
|
10
|
+
'01234567-89AB-4CDE-BFab-cdef00000000',
|
11
|
+
'01234567-89AB-4CDE-aFab-cdef00000000',
|
12
|
+
'01234567-89AB-4CDE-bFab-cdef00000000'
|
13
|
+
]
|
4
14
|
|
5
|
-
|
6
|
-
|
7
|
-
|
15
|
+
@valid_uuids = valid_v4_full_uuids.map { | uuid | uuid.gsub( '-', '' ) }
|
16
|
+
end
|
17
|
+
|
18
|
+
context '#generate' do
|
19
|
+
it 'generates a 32 character string' do
|
20
|
+
uuid = Hoodoo::UUID.generate()
|
21
|
+
|
22
|
+
expect( uuid ).to be_a( String )
|
23
|
+
expect( uuid.length ).to eq( 32 )
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'generates a 16 hex digit pair string' do
|
27
|
+
uuid = Hoodoo::UUID.generate()
|
28
|
+
expect( uuid =~ Hoodoo::UUID::MATCH_16_PAIRS_OF_HEX_DIGITS ).to_not be_nil
|
29
|
+
end
|
30
|
+
|
31
|
+
it 'does not generate the same UUID twice' do
|
32
|
+
100.times do
|
33
|
+
uuid1 = Hoodoo::UUID.generate()
|
34
|
+
uuid2 = Hoodoo::UUID.generate()
|
35
|
+
|
36
|
+
expect( uuid1 ).not_to eq( uuid2 )
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
context '#valid?' do
|
42
|
+
it 'validates known-good UUIDs' do
|
43
|
+
@valid_uuids.each do | uuid |
|
44
|
+
expect( Hoodoo::UUID.valid?( uuid ) ).to eq( true )
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
it 'validates internally generated UUIDs' do
|
49
|
+
100.times do
|
50
|
+
uuid = Hoodoo::UUID.generate()
|
51
|
+
expect( Hoodoo::UUID.valid?( uuid ) ).to eq( true )
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
it 'rejects non-string items' do
|
56
|
+
uuid = Hoodoo::UUID.generate()
|
57
|
+
expect( Hoodoo::UUID.valid?( uuid.to_sym ) ).to eq( false )
|
58
|
+
end
|
59
|
+
|
60
|
+
it 'rejects the wrong version check digit' do
|
61
|
+
value = @valid_uuids.first.dup
|
62
|
+
value[ 12 ] = '0'
|
63
|
+
|
64
|
+
expect( Hoodoo::UUID.valid?( value ) ).to eq( false )
|
65
|
+
end
|
66
|
+
|
67
|
+
it 'does not match the wrong other check digit' do
|
68
|
+
value = @valid_uuids.first.dup
|
69
|
+
value[ 16 ] = '0'
|
70
|
+
|
71
|
+
expect( Hoodoo::UUID.valid?( value ) ).to eq( false )
|
72
|
+
end
|
73
|
+
|
74
|
+
it 'does not match non-hex digits' do
|
75
|
+
value = @valid_uuids.first.dup
|
76
|
+
value[ 0 ] = 'Z'
|
77
|
+
|
78
|
+
expect( Hoodoo::UUID.valid?( value ) ).to eq( false )
|
79
|
+
end
|
8
80
|
|
9
|
-
|
10
|
-
|
81
|
+
it 'does not match too-short strings' do
|
82
|
+
value = @valid_uuids.first[ 0..30 ]
|
83
|
+
expect( Hoodoo::UUID.valid?( value ) ).to eq( false )
|
11
84
|
end
|
12
85
|
|
13
|
-
it '
|
14
|
-
|
15
|
-
|
86
|
+
it 'does not match too-long strings' do
|
87
|
+
value = @valid_uuids.first + '0'
|
88
|
+
expect( Hoodoo::UUID.valid?( value ) ).to eq( false )
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
context 'MATCH_16_PAIRS_OF_HEX_DIGITS' do
|
93
|
+
it 'matches 32 hex digits in any case' do
|
94
|
+
value = '0123456789ABCDEFabcdef0123456789'
|
95
|
+
expect( value =~ Hoodoo::UUID::MATCH_16_PAIRS_OF_HEX_DIGITS ).to_not be_nil
|
96
|
+
end
|
97
|
+
|
98
|
+
it 'does not match non-hex digits' do
|
99
|
+
value = '0123456789ABCDEFabcZef0123456789'
|
100
|
+
expect( value =~ Hoodoo::UUID::MATCH_16_PAIRS_OF_HEX_DIGITS ).to be_nil
|
101
|
+
end
|
102
|
+
|
103
|
+
it 'does not match too-short strings' do
|
104
|
+
value = '0123456789ABCDEFabcdef012345678'
|
105
|
+
expect( value =~ Hoodoo::UUID::MATCH_16_PAIRS_OF_HEX_DIGITS ).to be_nil
|
106
|
+
end
|
107
|
+
|
108
|
+
it 'does not match too-long strings' do
|
109
|
+
value = '0123456789ABCDEFabcdef0123456789A'
|
110
|
+
expect( value =~ Hoodoo::UUID::MATCH_16_PAIRS_OF_HEX_DIGITS ).to be_nil
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
114
|
+
context 'MATCH_V4_UUID' do
|
115
|
+
it 'matches known-good UUIDs' do
|
116
|
+
@valid_uuids.each do | uuid |
|
117
|
+
expect( uuid =~ Hoodoo::UUID::MATCH_V4_UUID ).to_not be_nil
|
118
|
+
end
|
119
|
+
end
|
120
|
+
|
121
|
+
it 'does not match the wrong version check digit' do
|
122
|
+
value = @valid_uuids.first.dup
|
123
|
+
value[ 12 ] = '0'
|
124
|
+
|
125
|
+
expect( value =~ Hoodoo::UUID::MATCH_V4_UUID ).to be_nil
|
126
|
+
end
|
127
|
+
|
128
|
+
it 'does not match the wrong other check digit' do
|
129
|
+
value = @valid_uuids.first.dup
|
130
|
+
value[ 16 ] = '0'
|
131
|
+
|
132
|
+
expect( value =~ Hoodoo::UUID::MATCH_V4_UUID ).to be_nil
|
133
|
+
end
|
134
|
+
|
135
|
+
it 'does not match non-hex digits' do
|
136
|
+
value = @valid_uuids.first.dup
|
137
|
+
value[ 0 ] = 'Z'
|
138
|
+
|
139
|
+
expect( value =~ Hoodoo::UUID::MATCH_V4_UUID ).to be_nil
|
140
|
+
end
|
141
|
+
|
142
|
+
it 'does not match too-short strings' do
|
143
|
+
value = @valid_uuids.first[ 0..30 ]
|
144
|
+
expect( value =~ Hoodoo::UUID::MATCH_V4_UUID ).to be_nil
|
145
|
+
end
|
16
146
|
|
17
|
-
|
147
|
+
it 'does not match too-long strings' do
|
148
|
+
value = @valid_uuids.first + '0'
|
149
|
+
expect( value =~ Hoodoo::UUID::MATCH_V4_UUID ).to be_nil
|
18
150
|
end
|
19
151
|
end
|
20
|
-
end
|
152
|
+
end
|
metadata
CHANGED
@@ -1,29 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hoodoo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Loyalty New Zealand
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-02-
|
11
|
+
date: 2016-02-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
-
- !ruby/object:Gem::Dependency
|
14
|
-
name: uuidtools
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - ~>
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '2.1'
|
20
|
-
type: :runtime
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - ~>
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: '2.1'
|
27
13
|
- !ruby/object:Gem::Dependency
|
28
14
|
name: kgio
|
29
15
|
requirement: !ruby/object:Gem::Requirement
|
@@ -294,6 +280,7 @@ files:
|
|
294
280
|
- lib/hoodoo/active/active_record/dated.rb
|
295
281
|
- lib/hoodoo/active/active_record/error_mapping.rb
|
296
282
|
- lib/hoodoo/active/active_record/finder.rb
|
283
|
+
- lib/hoodoo/active/active_record/manually_dated.rb
|
297
284
|
- lib/hoodoo/active/active_record/search_helper.rb
|
298
285
|
- lib/hoodoo/active/active_record/secure.rb
|
299
286
|
- lib/hoodoo/active/active_record/support.rb
|
@@ -401,6 +388,7 @@ files:
|
|
401
388
|
- spec/active/active_record/dated_spec.rb
|
402
389
|
- spec/active/active_record/error_mapping_spec.rb
|
403
390
|
- spec/active/active_record/finder_spec.rb
|
391
|
+
- spec/active/active_record/manually_dated_spec.rb
|
404
392
|
- spec/active/active_record/search_helper_spec.rb
|
405
393
|
- spec/active/active_record/secure_spec.rb
|
406
394
|
- spec/active/active_record/support_spec.rb
|
@@ -529,6 +517,7 @@ test_files:
|
|
529
517
|
- spec/active/active_record/dated_spec.rb
|
530
518
|
- spec/active/active_record/error_mapping_spec.rb
|
531
519
|
- spec/active/active_record/finder_spec.rb
|
520
|
+
- spec/active/active_record/manually_dated_spec.rb
|
532
521
|
- spec/active/active_record/search_helper_spec.rb
|
533
522
|
- spec/active/active_record/secure_spec.rb
|
534
523
|
- spec/active/active_record/support_spec.rb
|