hoodoo 1.18.0 → 1.19.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 33592f5c0f6228a5253592dff50c587e70319ae8
4
- data.tar.gz: 3f7c50f2d5935c5758c2efd61a650b96335be4bf
3
+ metadata.gz: 686b88cd1d3e169957a22f9bbd1b2e0680143344
4
+ data.tar.gz: bbb4fe6fdfd02d447ca76c9972ede50aec481ba7
5
5
  SHA512:
6
- metadata.gz: b5ccdb3765ae191bed76db43c25bbcf674dea032bd8d6ed2b6ff01fdc53ed811748e68ef34dcc1f2f1e89ce2d9f494e2323d31c0292bcf905fd3201661b4ff21
7
- data.tar.gz: 3196db1484495a18006ce741da581e77bbce7b3aecf4deb829bb8b96f8005226c486c523d6c1374849323c8241d68cb70cc3dcdbe696f4e6678a723ad5360281
6
+ metadata.gz: 02bde4ca9622f8b7ce1524341c4e997d54717cc8282addfb86d44ad87333942a6caa6d97bf8d28cd860e40cf50f34cb8c97a90d7015249625dd711e950375658
7
+ data.tar.gz: c16e8ea17f27fb117816c6e1416ba65248e6d9e3b0b113e05f88f04499afb949d3a00c37412e5073385f1b6b5e3fd5b883173a110d5c9cf874ef717a2f442ea1
@@ -20,6 +20,7 @@ module Hoodoo
20
20
 
21
21
  text :authentication_secret
22
22
  text :name
23
+ uuid :fingerprint, :required => false
23
24
 
24
25
  hash :identity, :required => true do
25
26
  end
@@ -86,7 +86,16 @@ module Hoodoo
86
86
  # is internationalised but this is omitted, then a value
87
87
  # of "en-nz" is used as a default.
88
88
  #
89
- def self.render( data, uuid = nil, created_at = nil, language = 'en-nz' )
89
+ # +created_by+:: Optional fingerprint of the Caller whose credentials
90
+ # were used to create the Session under which the
91
+ # resource instance was created. Absent if omitted.
92
+ #
93
+ def self.render( data,
94
+ uuid = nil,
95
+ created_at = nil,
96
+ language = 'en-nz',
97
+ created_by = nil )
98
+
90
99
  target = {}
91
100
  data = data || {}
92
101
 
@@ -117,7 +126,8 @@ module Hoodoo
117
126
  'created_at' => Hoodoo::Utilities.standard_datetime( created_at.to_datetime )
118
127
  } )
119
128
 
120
- target[ 'language' ] = language if self.is_internationalised?()
129
+ target[ 'created_by' ] = created_by unless created_by.nil?
130
+ target[ 'language' ] = language if self.is_internationalised?()
121
131
 
122
132
  end
123
133
 
@@ -157,6 +167,10 @@ module Hoodoo
157
167
  # +created_at+:: Same as the +created_at+ parameter to ::render, except
158
168
  # mandatory.
159
169
  #
170
+ # +created_by+:: Optional fingerprint of the Caller whose credentials
171
+ # were used to create the Session under which the
172
+ # resource instance was created.
173
+ #
160
174
  # +language+:: Optional value for resource's +language+ field; taken
161
175
  # from the +context+ parameter if omitted.
162
176
  #
@@ -180,12 +194,13 @@ module Hoodoo
180
194
  def self.render_in( context, data, options = {} )
181
195
  uuid = options[ :uuid ]
182
196
  created_at = options[ :created_at ]
197
+ created_by = options[ :created_by ]
183
198
  language = options[ :language ] || context.request.locale
184
199
  secured_with = options[ :secured_with ]
185
200
  embeds = options[ :embeds ]
186
201
  references = options[ :references ]
187
202
 
188
- target = self.render( data, uuid, created_at, language )
203
+ target = self.render( data, uuid, created_at, language, created_by )
189
204
 
190
205
  if secured_with.is_a?( ::ActiveRecord::Base )
191
206
  result_hash = {}
@@ -233,6 +248,9 @@ module Hoodoo
233
248
  'kind' => data[ :kind ]
234
249
  }
235
250
 
251
+ created_by = data[ :created_by ]
252
+ common_fields[ 'created_by' ] = created_by unless created_by.nil?
253
+
236
254
  if self.is_internationalised?
237
255
  common_fields[ 'internationalised' ] = data[ 'internationalised' ]
238
256
  Hoodoo::Presenters::CommonResourceFields.get_schema.properties[ 'language' ].required = true
@@ -164,6 +164,7 @@ module Hoodoo; module Services
164
164
  'caller_version' => 1,
165
165
  'caller_id' => 'c5ea12fb7f414a46850e73ee1bf6d95e',
166
166
  'caller_identity_name' => 'c5ea12fb7f414a46850e73ee1bf6d95e',
167
+ 'caller_fingerprint' => '7bc0b402a77543a49d0b1b671253fb25',
167
168
  'identity' => { 'caller_id' => 'c5ea12fb7f414a46850e73ee1bf6d95e' },
168
169
  'permissions' => Hoodoo::Services::Permissions.new( {
169
170
  'default' => { 'else' => Hoodoo::Services::Permissions::ALLOW }
@@ -1210,6 +1211,7 @@ module Hoodoo; module Services
1210
1211
  'caller_id' => session.caller_id,
1211
1212
  'caller_version' => session.caller_version,
1212
1213
  'caller_identity_name' => session.caller_identity_name,
1214
+ 'caller_fingerprint' => session.caller_fingerprint,
1213
1215
  'identity' => Hoodoo::Utilities.stringify( ( session.identity || {} ).to_h() )
1214
1216
  }
1215
1217
  end
@@ -39,6 +39,13 @@ module Hoodoo
39
39
  #
40
40
  attr_accessor :caller_identity_name
41
41
 
42
+ # An optional property of a session is the Caller's fingerprint, a
43
+ # UUID assigned to some Callers which can be persisted by resource
44
+ # instances when created and rendered in the +created_by+ field
45
+ # via e.g. Hoodoo::Presenters::Base.#render_in.
46
+ #
47
+ attr_accessor :caller_fingerprint
48
+
42
49
  # Callers can change; if so, related sessions must be invalidated.
43
50
  # This must be achieved by keeping a version count on the Caller. A
44
51
  # session is associated with a particular Caller version and if the
@@ -126,25 +133,29 @@ module Hoodoo
126
133
  #
127
134
  # Options are:
128
135
  #
129
- # +session_id+:: UUID of this session. If unset, a new UUID is
130
- # generated for you. You can read the UUID with
131
- # the #session_id accessor method.
136
+ # +session_id+:: UUID of this session. If unset, a new UUID is
137
+ # generated for you. You can read the UUID with
138
+ # the #session_id accessor method.
139
+ #
140
+ # +caller_id+:: UUID of the Caller instance associated with this
141
+ # session. This can be set either now or later, but
142
+ # the session cannot be saved without it.
132
143
  #
133
- # +caller_id+:: UUID of the Caller instance associated with this
134
- # session. This can be set either now or later, but
135
- # the session cannot be saved without it.
144
+ # +caller_version+:: Version of the Caller instance; defaults to zero.
136
145
  #
137
- # +caller_version+:: Version of the Caller instance; defaults to zero.
146
+ # +caller_fingerprint:: Optional Caller fingerprint UUID. Default to
147
+ # +nil+.
138
148
  #
139
149
  # +memcached_host+:: Host for Memcached connections.
140
150
  #
141
151
  def initialize( options = {} )
142
152
  @created_at = Time.now.utc
143
153
 
144
- self.session_id = options[ :session_id ] || Hoodoo::UUID.generate()
145
- self.memcached_host = options[ :memcached_host ]
146
- self.caller_id = options[ :caller_id ]
147
- self.caller_version = options[ :caller_version ] || 0
154
+ self.session_id = options[ :session_id ] || Hoodoo::UUID.generate()
155
+ self.memcached_host = options[ :memcached_host ]
156
+ self.caller_id = options[ :caller_id ]
157
+ self.caller_version = options[ :caller_version ] || 0
158
+ self.caller_fingerprint = options[ :caller_fingerprint ]
148
159
  end
149
160
 
150
161
  # Save this session to the transient store, in a manner that will allow
@@ -471,6 +482,7 @@ module Hoodoo
471
482
  caller_id
472
483
  caller_version
473
484
  caller_identity_name
485
+ caller_fingerprint
474
486
 
475
487
  ).each do | property |
476
488
  value = self.send( property )
@@ -516,6 +528,7 @@ module Hoodoo
516
528
  caller_id
517
529
  caller_version
518
530
  caller_identity_name
531
+ caller_fingerprint
519
532
 
520
533
  ).each do | property |
521
534
  value = hash[ property ]
@@ -12,7 +12,7 @@ module Hoodoo
12
12
  # The Hoodoo gem version. If this changes, be sure to re-run
13
13
  # <tt>bundle install</tt> or <tt>bundle update</tt>.
14
14
  #
15
- VERSION = '1.18.0'
15
+ VERSION = '1.19.0'
16
16
 
17
17
  # The Hoodoo gem date. If this changes, be sure to re-run
18
18
  # <tt>bundle install</tt> or <tt>bundle update</tt>.
@@ -6,10 +6,11 @@ describe Hoodoo::Data::Resources::Caller do
6
6
 
7
7
  expect(schema.is_internationalised?()).to eq(true)
8
8
 
9
- expect(schema.properties.count).to eq(5)
9
+ expect(schema.properties.count).to eq(6)
10
10
 
11
11
  expect(schema.properties['authentication_secret']).to be_a(Hoodoo::Presenters::Text)
12
12
  expect(schema.properties['name']).to be_a(Hoodoo::Presenters::Text)
13
+ expect(schema.properties['fingerprint']).to be_a(Hoodoo::Presenters::UUID)
13
14
  expect(schema.properties['identity']).to be_a(Hoodoo::Presenters::Hash)
14
15
  expect(schema.properties['permissions']).to be_a(Hoodoo::Presenters::Object)
15
16
  expect(schema.properties['permissions'].properties['resources']).to be_a(Hoodoo::Presenters::Hash)
@@ -328,30 +328,60 @@ describe '#schema' do
328
328
  expect(Hoodoo::Data::Resources::World.validate(data, false).errors).to eq([])
329
329
  end
330
330
 
331
- it 'should return no errors with valid data for resource' do
332
- data = {
333
- :errors_id => Hoodoo::UUID.generate,
334
- :test_tags => 'foo,bar,baz',
335
- :test_object => {
336
- :nested_object => {
337
- :name => 'Some name',
338
- :obj_suffix => '!'
339
- },
340
- :test_array => [
341
- { :name => 'Some name 0', :ary_suffix => '00' },
342
- { :name => 'Some name 1' }
343
- ]
344
- }
345
- }
331
+ context 'should return' do
332
+ before :each do
333
+ @input = Hoodoo::Utilities.stringify( {
334
+ :errors_id => Hoodoo::UUID.generate,
335
+ :test_tags => 'foo,bar,baz',
336
+ :test_object => {
337
+ :nested_object => {
338
+ :name => 'Some name',
339
+ :obj_suffix => '!'
340
+ },
341
+ :test_array => [
342
+ { :name => 'Some name 0', :ary_suffix => '00' },
343
+ { :name => 'Some name 1' }
344
+ ]
345
+ }
346
+ } )
347
+ end
346
348
 
347
- data = Hoodoo::Utilities.stringify(data)
348
- rendered = Hoodoo::Data::Resources::World.render(
349
- data,
350
- Hoodoo::UUID.generate,
351
- Time.now
352
- )
349
+ it 'no errors with valid data for resource' do
350
+ rendered = Hoodoo::Data::Resources::World.render(
351
+ @input,
352
+ Hoodoo::UUID.generate,
353
+ Time.now
354
+ )
353
355
 
354
- expect(Hoodoo::Data::Resources::World.validate(rendered, true).errors).to eq([])
356
+ expect(Hoodoo::Data::Resources::World.validate(rendered, true).errors).to eq([])
357
+ end
358
+
359
+ it 'no errors with valid data for resource with fingerprint' do
360
+ rendered = Hoodoo::Data::Resources::World.render(
361
+ @input,
362
+ Hoodoo::UUID.generate,
363
+ Time.now,
364
+ 'en-gb',
365
+ Hoodoo::UUID.generate
366
+ )
367
+
368
+ expect(Hoodoo::Data::Resources::World.validate(rendered, true).errors).to eq([])
369
+ end
370
+
371
+ it 'a complaint about missing language if internationalised' do
372
+ rendered = Hoodoo::Data::Resources::World.render(
373
+ @input,
374
+ Hoodoo::UUID.generate,
375
+ Time.now,
376
+ nil
377
+ )
378
+
379
+ expect(Hoodoo::Data::Resources::World.validate(rendered, true).errors).to eq([{
380
+ 'code' => 'generic.required_field_missing',
381
+ 'message' => 'Field `language` is required',
382
+ 'reference' => 'language'
383
+ }])
384
+ end
355
385
  end
356
386
 
357
387
  it 'should return correct errors invalid data' do
@@ -654,48 +684,70 @@ describe '#schema' do
654
684
  })
655
685
  end
656
686
 
657
- it 'should render correctly as a resource with a UUID' do
658
- data = Hoodoo::Utilities.stringify({
659
- :errors_id => Hoodoo::UUID.generate,
660
- :test_tags => 'foo,bar,baz',
661
- :test_object => {
662
- :nested_object => {
663
- :name => 'Some name',
664
- :obj_suffix => '!'
665
- },
666
- :test_array => [
667
- { :name => 'Some name 0', :ary_suffix => '00' },
668
- { :name => 'Some name 1' }
669
- ]
687
+ context 'should render correctly as a resource' do
688
+ before :each do
689
+ @uuid = Hoodoo::UUID.generate
690
+ @time = Time.now
691
+ @input = Hoodoo::Utilities.stringify({
692
+ :errors_id => Hoodoo::UUID.generate,
693
+ :test_tags => 'foo,bar,baz',
694
+ :test_object => {
695
+ :nested_object => {
696
+ :name => 'Some name',
697
+ :obj_suffix => '!'
698
+ },
699
+ :test_array => [
700
+ { :name => 'Some name 0', :ary_suffix => '00' },
701
+ { :name => 'Some name 1' }
702
+ ]
703
+ }
704
+ })
705
+
706
+ @output = {
707
+ 'id' => @uuid,
708
+ 'kind' => 'World',
709
+ 'created_at' => Hoodoo::Utilities.standard_datetime( @time ),
710
+ 'language' => 'en-gb',
711
+ 'errors_id' => @input['errors_id'],
712
+ 'test_tags' => 'foo,bar,baz',
713
+ 'test_object' => {
714
+ 'nested_object' => {
715
+ 'name' => 'Some name',
716
+ 'obj_suffix' => '!'
717
+ },
718
+ 'test_array' => [
719
+ { 'name' => 'Some name 0', 'ary_suffix' => '00' },
720
+ { 'name' => 'Some name 1' }
721
+ ]
722
+ }
670
723
  }
671
- })
724
+ end
672
725
 
673
- uuid = Hoodoo::UUID.generate
674
- time = Time.now
675
-
676
- expect(Hoodoo::Data::Resources::World.render(
677
- data,
678
- uuid,
679
- time,
680
- 'en-gb'
681
- )).to eq({
682
- 'id' => uuid,
683
- 'kind' => 'World',
684
- 'created_at' => Hoodoo::Utilities.standard_datetime( time ),
685
- 'language' => 'en-gb',
686
- 'errors_id' => data['errors_id'],
687
- 'test_tags' => 'foo,bar,baz',
688
- 'test_object' => {
689
- 'nested_object' => {
690
- 'name' => 'Some name',
691
- 'obj_suffix' => '!'
692
- },
693
- 'test_array' => [
694
- { 'name' => 'Some name 0', 'ary_suffix' => '00' },
695
- { 'name' => 'Some name 1' }
696
- ]
697
- }
698
- })
726
+ it 'with a UUID' do
727
+ expect(
728
+ Hoodoo::Data::Resources::World.render(
729
+ @input,
730
+ @uuid,
731
+ @time,
732
+ 'en-gb'
733
+ )
734
+ ).to( eq( @output ) )
735
+ end
736
+
737
+ it 'with a UUID and fingerprint' do
738
+ fingerprint = Hoodoo::UUID.generate()
739
+ @output[ 'created_by' ] = fingerprint
740
+
741
+ expect(
742
+ Hoodoo::Data::Resources::World.render(
743
+ @input,
744
+ @uuid,
745
+ @time,
746
+ 'en-gb',
747
+ fingerprint
748
+ )
749
+ ).to( eq( @output ) )
750
+ end
699
751
  end
700
752
 
701
753
  it 'should complain about resources with no creation date' do
@@ -803,6 +855,22 @@ describe '#schema' do
803
855
  })
804
856
  end
805
857
 
858
+ it 'renders with fingerprint' do
859
+ data = {}
860
+ t = Time.now.utc
861
+ u = Hoodoo::UUID.generate
862
+ f = Hoodoo::UUID.generate
863
+ options = { :uuid => u, :created_at => t, :created_by => f }
864
+ expect(TestPresenter5.render_in(@con, data, options)).to eq({
865
+ 'id' => u,
866
+ 'kind' => 'TestPresenter5',
867
+ 'created_at' => Hoodoo::Utilities.standard_datetime( t ),
868
+ 'created_by' => f,
869
+ 'language' => 'de',
870
+ 'three' => 'default_three'
871
+ })
872
+ end
873
+
806
874
  it 'overrides language' do
807
875
  data = {}
808
876
  t = Time.now.utc
@@ -3,14 +3,16 @@ require 'timecop'
3
3
 
4
4
  describe Hoodoo::Services::Middleware::AMQPLogWriter do
5
5
  before :each do
6
- @session_id = Hoodoo::UUID.generate
7
- @caller_id = Hoodoo::UUID.generate
8
- @caller_version = 2
9
- @session = Hoodoo::Services::Session.new( {
10
- :session_id => @session_id,
11
- :memcached_host => '0.0.0.0:0',
12
- :caller_id => @caller_id,
13
- :caller_version => @caller_version
6
+ @session_id = Hoodoo::UUID.generate
7
+ @caller_id = Hoodoo::UUID.generate
8
+ @caller_version = 2
9
+ @caller_fingerprint = Hoodoo::UUID.generate
10
+ @session = Hoodoo::Services::Session.new( {
11
+ :session_id => @session_id,
12
+ :memcached_host => '0.0.0.0:0',
13
+ :caller_id => @caller_id,
14
+ :caller_version => @caller_version,
15
+ :caller_fingerprint => @caller_fingerprint
14
16
  } )
15
17
 
16
18
  @permissions_hash = {
@@ -392,6 +392,7 @@ describe Hoodoo::Services::Middleware do
392
392
  expect( data[ :session ][ 'caller_id' ] ).to be_present
393
393
  expect( data[ :session ][ 'caller_version' ] ).to be_present
394
394
  expect( data[ :session ][ 'caller_identity_name' ] ).to be_present
395
+ expect( data[ :session ][ 'caller_fingerprint' ] ).to be_present
395
396
  expect( data[ :session ][ 'identity' ] ).to be_present
396
397
 
397
398
  expect( data[ :session ][ 'permissions' ] ).to_not be_present
@@ -423,6 +424,7 @@ describe Hoodoo::Services::Middleware do
423
424
  expect( data[ :session ][ 'caller_id' ] ).to be_present
424
425
  expect( data[ :session ][ 'caller_version' ] ).to be_present
425
426
  expect( data[ :session ][ 'caller_identity_name' ] ).to be_present
427
+ expect( data[ :session ][ 'caller_fingerprint' ] ).to be_present
426
428
  expect( data[ :session ][ 'identity' ] ).to be_present
427
429
  expect( data[ :session ][ 'permissions' ] ).to be_present
428
430
  expect( data[ :session ][ 'scoping' ] ).to be_present
@@ -306,14 +306,16 @@ describe Hoodoo::Services::Middleware do
306
306
  before :each do
307
307
  spec_helper_use_mock_memcached()
308
308
 
309
- @session_id = Hoodoo::UUID.generate
310
- @caller_id = Hoodoo::UUID.generate
311
- @caller_version = 1
312
- @session = Hoodoo::Services::Session.new( {
313
- :session_id => @session_id,
314
- :memcached_host => '0.0.0.0:0',
315
- :caller_id => @caller_id,
316
- :caller_version => @caller_version
309
+ @session_id = Hoodoo::UUID.generate
310
+ @caller_id = Hoodoo::UUID.generate
311
+ @caller_version = 1
312
+ @caller_fingerprint = Hoodoo::UUID.generate
313
+ @session = Hoodoo::Services::Session.new( {
314
+ :session_id => @session_id,
315
+ :memcached_host => '0.0.0.0:0',
316
+ :caller_id => @caller_id,
317
+ :caller_version => @caller_version,
318
+ :caller_fingerprint => @caller_fingerprint
317
319
  } )
318
320
 
319
321
  # Grant top-level access to all of the Clock endpoints
@@ -16,6 +16,7 @@ describe Hoodoo::Services::Session do
16
16
  expect( s.memcached_host ).to be_nil
17
17
  expect( s.caller_id ).to be_nil
18
18
  expect( s.caller_version ).to eq( 0 )
19
+ expect( s.caller_fingerprint ).to be_nil
19
20
  end
20
21
 
21
22
  it 'initialises with given options' do
@@ -23,13 +24,15 @@ describe Hoodoo::Services::Session do
23
24
  :session_id => '1234',
24
25
  :memcached_host => 'abcd',
25
26
  :caller_id => '0987',
26
- :caller_version => 2
27
+ :caller_version => 2,
28
+ :caller_fingerprint => 'asdf'
27
29
  )
28
30
  expect( s.created_at ).to be_a( Time )
29
31
  expect( s.session_id ).to eq( '1234' )
30
32
  expect( s.memcached_host ).to eq( 'abcd' )
31
33
  expect( s.caller_id ).to eq( '0987' )
32
34
  expect( s.caller_version ).to eq( 2 )
35
+ expect( s.caller_fingerprint ).to eq( 'asdf' )
33
36
  end
34
37
 
35
38
  it 'reports not expired when it has no expiry' do
@@ -48,7 +51,8 @@ describe Hoodoo::Services::Session do
48
51
  :session_id => '1234',
49
52
  :memcached_host => 'abcd',
50
53
  :caller_id => '0987',
51
- :caller_version => 2
54
+ :caller_version => 2,
55
+ :caller_fingerprint => 'asdf'
52
56
  )
53
57
  p = Hoodoo::Services::Permissions.new
54
58
 
@@ -59,15 +63,16 @@ describe Hoodoo::Services::Session do
59
63
  h = s.to_h
60
64
 
61
65
  expect( h ).to eq( {
62
- 'session_id' => '1234',
63
- 'caller_id' => '0987',
64
- 'caller_version' => 2,
66
+ 'session_id' => '1234',
67
+ 'caller_id' => '0987',
68
+ 'caller_version' => 2,
69
+ 'caller_fingerprint' => 'asdf',
65
70
 
66
- 'created_at' => Hoodoo::Utilities.standard_datetime( s.created_at ),
71
+ 'created_at' => Hoodoo::Utilities.standard_datetime( s.created_at ),
67
72
 
68
- 'identity' => { 'foo' => 'foo', 'bar' => 'bar' },
69
- 'scoping' => { 'baz' => [ 'foo', 'bar', 'baz' ] },
70
- 'permissions' => p.to_h()
73
+ 'identity' => { 'foo' => 'foo', 'bar' => 'bar' },
74
+ 'scoping' => { 'baz' => [ 'foo', 'bar', 'baz' ] },
75
+ 'permissions' => p.to_h()
71
76
  } )
72
77
  end
73
78
 
@@ -77,16 +82,17 @@ describe Hoodoo::Services::Session do
77
82
  c = Time.now.utc
78
83
  e = Time.now.utc + 10
79
84
  h = {
80
- 'session_id' => '1234',
81
- 'caller_id' => '0987',
82
- 'caller_version' => 2,
85
+ 'session_id' => '1234',
86
+ 'caller_id' => '0987',
87
+ 'caller_version' => 2,
88
+ 'caller_fingerprint' => 'asdf',
83
89
 
84
- 'created_at' => Hoodoo::Utilities.standard_datetime( c ),
85
- 'expires_at' => Hoodoo::Utilities.standard_datetime( e ),
90
+ 'created_at' => Hoodoo::Utilities.standard_datetime( c ),
91
+ 'expires_at' => Hoodoo::Utilities.standard_datetime( e ),
86
92
 
87
- 'identity' => { 'foo' => 'foo', 'bar' => 'bar' },
88
- 'scoping' => { 'baz' => [ 'foo', 'bar', 'baz' ] },
89
- 'permissions' => p.to_h()
93
+ 'identity' => { 'foo' => 'foo', 'bar' => 'bar' },
94
+ 'scoping' => { 'baz' => [ 'foo', 'bar', 'baz' ] },
95
+ 'permissions' => p.to_h()
90
96
  }
91
97
 
92
98
  s.from_h!( h )
@@ -94,6 +100,7 @@ describe Hoodoo::Services::Session do
94
100
  expect( s.session_id ).to eq( '1234' )
95
101
  expect( s.caller_id ).to eq( '0987' )
96
102
  expect( s.caller_version ).to eq( 2 )
103
+ expect( s.caller_fingerprint ).to eq( 'asdf' )
97
104
  expect( s.created_at ).to eq( Time.parse( Hoodoo::Utilities.standard_datetime( c ) ) )
98
105
  expect( s.expires_at ).to eq( Time.parse( Hoodoo::Utilities.standard_datetime( e ) ) )
99
106
  expect( s.identity.foo ).to eq( 'foo' )
@@ -107,7 +114,8 @@ describe Hoodoo::Services::Session do
107
114
  :session_id => '1234',
108
115
  :memcached_host => 'abcd',
109
116
  :caller_id => '0987',
110
- :caller_version => 2
117
+ :caller_version => 2,
118
+ :caller_fingerprint => 'asdf'
111
119
  )
112
120
 
113
121
  expect( s1.save_to_store ).to eq( :ok )
@@ -137,6 +145,7 @@ describe Hoodoo::Services::Session do
137
145
  expect( s2.memcached_host ).to be_nil
138
146
  expect( s2.caller_id ).to eq( s1.caller_id )
139
147
  expect( s2.caller_version ).to eq( s1.caller_version )
148
+ expect( s2.caller_fingerprint ).to eq( s1.caller_fingerprint )
140
149
  end
141
150
 
142
151
  it 'can be deleted' do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hoodoo
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.18.0
4
+ version: 1.19.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Loyalty New Zealand