hoodoo 1.15.0 → 1.15.1

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: fad91d3880f61878b0df4c509f63f8afd7b7ed21
4
- data.tar.gz: 0c2502907dd97eda85b8ede8369c85935bc2a89a
3
+ metadata.gz: 1074a01d7b0b249400765334f2991cd5c00b9e85
4
+ data.tar.gz: 2e2473fbe2031ea3433a660e4a7bdc80a5012e03
5
5
  SHA512:
6
- metadata.gz: c011115dcfee583a769f46deb6e167847208860c3fcb7f878191d5c6ef8f51757845530d44ab07f01b387522e730215911865b447e6f93bd78480f28a78abb8a
7
- data.tar.gz: 2df1b22163e1944e86e4d546bcc950ada63eba410d841e94e144aadcb2696531dfa7f1c3c0427c5bc8ba9184f8ba438a5b9def124c2dc1cc96a21b30586d171f
6
+ metadata.gz: 89f72453d4d3ba63e7d22676864171272fb2a8fb6caf5c38704ca3993fbde88a3993f7e1f6cd70b6fa880ba2e439171b975cf33db6a27a91e81dd382de45092a
7
+ data.tar.gz: 3c1e9c6dc2e6f00955869055cee8f431364b3891fa72f68d2f7ca9dc6cfd6886d1501228d53aa2e95d4a7886362f193f96c2d4f77b7de8d3ba2c71fb30a57f6d
@@ -67,8 +67,8 @@ module Hoodoo
67
67
  # :limit => 25,
68
68
  # :sort => :created_at,
69
69
  # :direction => :asc,
70
- # :embeds => 'account',
71
- # :search => { :surname => 'Smith' }
70
+ # :search => { :surname => 'Smith' },
71
+ # :_embed => 'account'
72
72
  # )
73
73
  #
74
74
  # This will return a Hoodoo::Client::AugmentedArray. This is an Array
@@ -134,12 +134,11 @@ module Hoodoo
134
134
  end
135
135
 
136
136
  result = @wrapped_endpoint.send( action, *args )
137
- bad_session = result.platform_errors.has_errors? &&
138
- result.platform_errors.errors.find do | error_hash |
137
+ bad_session = result.platform_errors.errors.find do | error_hash |
139
138
  error_hash[ 'code' ] == 'platform.invalid_session'
140
139
  end
141
140
 
142
- if bad_session == false
141
+ if bad_session.nil?
143
142
  return result
144
143
  else
145
144
  session_creation_result = acquire_session_for( action )
@@ -487,7 +487,7 @@ module Hoodoo; module Services
487
487
  # Example: An interface permits lists that request embedding or
488
488
  # referencing of "vouchers", "balances" and "member":
489
489
  #
490
- # embed :vouchers, :balances, :member
490
+ # embeds :vouchers, :balances, :member
491
491
  #
492
492
  # As a result, #embeds would return:
493
493
  #
@@ -12,6 +12,6 @@ module Hoodoo
12
12
  # The Hoodoo gem version. If this changes, ensure that the date in
13
13
  # "hoodoo.gemspec" is correct and run "bundle install" (or "update").
14
14
  #
15
- VERSION = '1.15.0'
15
+ VERSION = '1.15.1'
16
16
 
17
17
  end
@@ -985,6 +985,43 @@ describe Hoodoo::Client do
985
985
  expect( result.platform_errors.has_errors? ).to eq( false )
986
986
  end
987
987
 
988
+ it 'does not retry for errors other than "platform.invalid_session"' do
989
+
990
+ # When we list first, Client has no session so will acquire one. The
991
+ # wrapping endpoint is asked to list, it pushes that through the
992
+ # session mechanism, gets the session and then calls the wrapped
993
+ # endpoint.
994
+
995
+ expect( @endpoint ).to receive( :acquire_session_for ).once.with( :list ).and_call_original
996
+ expect( @endpoint.instance_variable_get( '@wrapped_endpoint' ) ).to receive( :list ).once.and_call_original
997
+
998
+ result = @endpoint.list()
999
+ expect( result.platform_errors.has_errors? ).to eq( false )
1000
+
1001
+ # When we list the second time, the wrapping endpoint has a session
1002
+ # but we fake a simple "generic.malformed" response from the wrapped
1003
+ # endpoint (probably impossible from a 'list' call in reality, but
1004
+ # just some easy error that we can check for afterwards and is not as
1005
+ # likely to be generated incidentally from other pieces of code as
1006
+ # e.g. "generic.invalid_parameters").
1007
+
1008
+ expect( @endpoint.instance_variable_get( '@wrapped_endpoint' ) ).to receive( :list ).once do
1009
+ array = Hoodoo::Client::AugmentedArray.new
1010
+ array.platform_errors.add_error( 'generic.malformed' )
1011
+ array
1012
+ end
1013
+
1014
+ # This is just a normal error; we do not expect another session
1015
+ # acquisition attempt or a retried call to #list.
1016
+
1017
+ expect( @endpoint ).to_not receive( :acquire_session_for )
1018
+ expect( @endpoint.instance_variable_get( '@wrapped_endpoint' ) ).to_not receive( :list )
1019
+
1020
+ result = @endpoint.list()
1021
+ expect( result.platform_errors.has_errors? ).to eq( true )
1022
+ expect( result.platform_errors.errors[ 0 ][ 'code' ] ).to eq( 'generic.malformed' )
1023
+ end
1024
+
988
1025
  it 'handles errors from the session resource' do
989
1026
  expect_any_instance_of( RSpecClientTestSessionImplementation ).to receive( :create ).and_raise( "boo!" )
990
1027
 
@@ -453,7 +453,28 @@ describe Hoodoo::Services::Session do
453
453
  expect( s.save_to_store() ).to eq( :fail )
454
454
  end
455
455
 
456
- it 'handles unknown Hoodoo::TransientStore engine failures' do
456
+ it 'handles unknown Hoodoo::TransientStore engine failures when saving' do
457
+ s = described_class.new(
458
+ :session_id => '1234',
459
+ :memcached_host => 'abcd',
460
+ :caller_id => '0987',
461
+ :caller_version => 1
462
+ )
463
+
464
+ expect_any_instance_of( Hoodoo::TransientStore::Memcached ).to receive( :set ).once.and_call_original
465
+ expect_any_instance_of( Hoodoo::TransientStore::Memcached ).to receive( :set ).once.and_return( false )
466
+
467
+ expect( Hoodoo::Services::Middleware.logger ).to(
468
+ receive( :warn ).once.with(
469
+ 'Hoodoo::Services::Session\\#save_to_store: Session saving failed - connection fault or session corrupt',
470
+ 'Unknown storage engine failure'
471
+ ).and_call_original
472
+ )
473
+
474
+ expect( s.save_to_store() ).to eq( :fail )
475
+ end
476
+
477
+ it 'handles unknown Hoodoo::TransientStore engine failures when deleting' do
457
478
  s = described_class.new(
458
479
  :session_id => '1234',
459
480
  :memcached_host => 'abcd',
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hoodoo
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.15.0
4
+ version: 1.15.1
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: 2017-02-08 00:00:00.000000000 Z
11
+ date: 2017-04-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dalli