hoodoo 1.18.0 → 1.19.0

Sign up to get free protection for your applications and to get access to all the features.
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