hoodoo 1.19.0 → 2.0.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 +4 -4
- data/lib/hoodoo/active/active_model/uuid_validator.rb +0 -1
- data/lib/hoodoo/active/active_record/dated.rb +2 -2
- data/lib/hoodoo/active/active_record/support.rb +2 -1
- data/lib/hoodoo/active/active_record/uuid.rb +2 -2
- data/lib/hoodoo/active/active_record/writer.rb +1 -1
- data/lib/hoodoo/generator.rb +52 -12
- data/lib/hoodoo/monkey/patch/datadog_traced_amqp.rb +11 -6
- data/lib/hoodoo/monkey/patch/newrelic_middleware_analytics.rb +17 -10
- data/lib/hoodoo/monkey/patch/newrelic_traced_amqp.rb +71 -33
- data/lib/hoodoo/services/discovery/discoverers/by_drb/by_drb.rb +13 -8
- data/lib/hoodoo/services/middleware/exception_reporting/reporters/airbrake_reporter.rb +8 -3
- data/lib/hoodoo/services/middleware/interaction.rb +1 -1
- data/lib/hoodoo/services/middleware/middleware.rb +52 -41
- data/lib/hoodoo/version.rb +2 -2
- data/spec/active/active_record/creator_spec.rb +1 -1
- data/spec/active/active_record/dated_spec.rb +7 -7
- data/spec/active/active_record/finder_spec.rb +953 -839
- data/spec/active/active_record/manually_dated_spec.rb +1 -1
- data/spec/active/active_record/search_helper_spec.rb +1 -1
- data/spec/active/active_record/secure_spec.rb +2 -2
- data/spec/active/active_record/support_spec.rb +3 -3
- data/spec/monkey/patch/datadog_traced_amqp_spec.rb +10 -2
- data/spec/monkey/patch/newrelic_traced_amqp_spec.rb +54 -21
- data/spec/new_relic/agent/logger.rb +24 -0
- data/spec/new_relic/agent/transaction.rb +32 -0
- data/spec/services/discovery/discoverers/by_drb/by_drb_spec.rb +48 -2
- data/spec/services/middleware/exception_reporting/reporters/airbrake_reporter_spec.rb +4 -4
- data/spec/services/middleware/middleware_multi_local_spec.rb +41 -13
- data/spec/services/middleware/middleware_multi_remote_spec.rb +93 -67
- data/spec/services/middleware/middleware_spec.rb +80 -7
- data/spec/services/services/interface_spec.rb +2 -2
- data/spec/transient_store/transient_store/mocks/redis_spec.rb +8 -6
- metadata +30 -26
@@ -10,7 +10,8 @@ require 'json'
|
|
10
10
|
|
11
11
|
# Used for X-Assume-Identity-Of testing to avoid magic value copy-and-paste.
|
12
12
|
#
|
13
|
-
|
13
|
+
MMRS_CUSTOM_CALLER_ID = 'custom_caller_id'
|
14
|
+
MMRS_VALID_ASSUMED_IDENTITY_HASH = { 'caller_id' => MMRS_CUSTOM_CALLER_ID }
|
14
15
|
|
15
16
|
# First, a test service comprised of a couple of 'echo' variants which we use
|
16
17
|
# to make sure they're both correctly stored in the DRb registry.
|
@@ -49,7 +50,10 @@ class TestEchoImplementation < Hoodoo::Services::Implementation
|
|
49
50
|
elsif context.request.uri_path_components[ 0 ] == 'return_invalid_data'
|
50
51
|
context.response.body = 'Hello, world'
|
51
52
|
elsif context.request.ident == 'return_identity' || context.request.ident == 'set_good_inter_resource_identity'
|
52
|
-
context.response.body = {
|
53
|
+
context.response.body = {
|
54
|
+
'identity' => context.session.identity.to_h,
|
55
|
+
'fingerprint' => context.session.caller_fingerprint
|
56
|
+
}
|
53
57
|
else
|
54
58
|
context.response.body = { 'show' => TestEchoImplementation.to_h( context ) }
|
55
59
|
end
|
@@ -119,7 +123,8 @@ class TestEchoImplementation < Hoodoo::Services::Implementation
|
|
119
123
|
'list_search_data' => context.request.list.search_data,
|
120
124
|
'list_filter_data' => context.request.list.filter_data,
|
121
125
|
'embeds' => context.request.embeds,
|
122
|
-
'references' => context.request.references
|
126
|
+
'references' => context.request.references,
|
127
|
+
'session_hash' => context.session.to_h
|
123
128
|
}
|
124
129
|
end
|
125
130
|
end
|
@@ -218,10 +223,10 @@ class TestCallImplementation < Hoodoo::Services::Implementation
|
|
218
223
|
|
219
224
|
if ( context.request.ident == 'set_bad_inter_resource_identity' )
|
220
225
|
resource.assume_identity_of = {
|
221
|
-
|
226
|
+
MMRS_VALID_ASSUMED_IDENTITY_HASH.keys.first => Hoodoo::UUID.generate
|
222
227
|
}
|
223
228
|
elsif ( context.request.ident == 'set_good_inter_resource_identity' )
|
224
|
-
resource.assume_identity_of =
|
229
|
+
resource.assume_identity_of = MMRS_VALID_ASSUMED_IDENTITY_HASH
|
225
230
|
end
|
226
231
|
|
227
232
|
result = resource.show(
|
@@ -352,7 +357,7 @@ describe 'DRb start timeout' do
|
|
352
357
|
|
353
358
|
spec_helper_http(
|
354
359
|
port: spec_helper_start_svc_app_in_thread_for( TestEchoService ),
|
355
|
-
path: '/v2/test_some_echoes'
|
360
|
+
path: '/v2/test_some_echoes' # Test 'old' route
|
356
361
|
)
|
357
362
|
end
|
358
363
|
end
|
@@ -361,14 +366,18 @@ end
|
|
361
366
|
describe Hoodoo::Services::Middleware do
|
362
367
|
|
363
368
|
before :each do
|
364
|
-
@test_uuid = Hoodoo::UUID.generate()
|
365
369
|
@old_test_session = Hoodoo::Services::Middleware.test_session()
|
370
|
+
|
366
371
|
@test_session = @old_test_session.dup
|
372
|
+
@test_session.caller_fingerprint = @caller_fingerprint = Hoodoo::UUID.generate()
|
373
|
+
|
367
374
|
permissions = Hoodoo::Services::Permissions.new # (this is "default-else-deny")
|
368
375
|
permissions.set_default_fallback( Hoodoo::Services::Permissions::ALLOW )
|
369
376
|
@test_session.permissions = permissions
|
377
|
+
|
370
378
|
@test_session.scoping = @test_session.scoping.dup
|
371
379
|
@test_session.scoping.authorised_http_headers = [] # (no secured headers allowed to start with)
|
380
|
+
|
372
381
|
Hoodoo::Services::Middleware.set_test_session( @test_session )
|
373
382
|
end
|
374
383
|
|
@@ -432,7 +441,8 @@ describe Hoodoo::Services::Middleware do
|
|
432
441
|
'list_search_data' => {},
|
433
442
|
'list_filter_data' => {},
|
434
443
|
'embeds' => [],
|
435
|
-
'references' => [ 'embed_one', 'embed_two' ]
|
444
|
+
'references' => [ 'embed_one', 'embed_two' ],
|
445
|
+
'session_hash' => @test_session.to_h
|
436
446
|
}
|
437
447
|
)
|
438
448
|
expect( parsed[ '_dataset_size' ] ).to eq( 49 )
|
@@ -463,7 +473,7 @@ describe Hoodoo::Services::Middleware do
|
|
463
473
|
|
464
474
|
response = spec_helper_http(
|
465
475
|
port: @port,
|
466
|
-
path: '/
|
476
|
+
path: '/1/TestEchoQuiet'
|
467
477
|
)
|
468
478
|
|
469
479
|
expect( response.code ).to eq( '200' )
|
@@ -493,7 +503,7 @@ describe Hoodoo::Services::Middleware do
|
|
493
503
|
|
494
504
|
response = spec_helper_http(
|
495
505
|
port: @port,
|
496
|
-
path: '/v2/test_some_echoes',
|
506
|
+
path: '/v2/test_some_echoes', # Test 'old' route
|
497
507
|
headers: { 'X-Deja-Vu' => 'yes' }
|
498
508
|
)
|
499
509
|
|
@@ -508,7 +518,7 @@ describe Hoodoo::Services::Middleware do
|
|
508
518
|
|
509
519
|
response = spec_helper_http(
|
510
520
|
port: @port,
|
511
|
-
path: '/
|
521
|
+
path: '/2/TestEcho/one/two.tar.gz?_reference=embed_one,embed_two', # Test 'new' route
|
512
522
|
headers: headers
|
513
523
|
)
|
514
524
|
|
@@ -534,7 +544,8 @@ describe Hoodoo::Services::Middleware do
|
|
534
544
|
'list_search_data' => {},
|
535
545
|
'list_filter_data' => {},
|
536
546
|
'embeds' => [],
|
537
|
-
'references' => [ 'embed_one', 'embed_two' ]
|
547
|
+
'references' => [ 'embed_one', 'embed_two' ],
|
548
|
+
'session_hash' => @test_session.to_h
|
538
549
|
}
|
539
550
|
)
|
540
551
|
end
|
@@ -555,7 +566,7 @@ describe Hoodoo::Services::Middleware do
|
|
555
566
|
|
556
567
|
response = spec_helper_http(
|
557
568
|
port: @port,
|
558
|
-
path: '/
|
569
|
+
path: '/1/TestEchoQuiet/some_uuid'
|
559
570
|
)
|
560
571
|
|
561
572
|
expect( response.code ).to eq( '200' )
|
@@ -580,7 +591,8 @@ describe Hoodoo::Services::Middleware do
|
|
580
591
|
'list_search_data' => {},
|
581
592
|
'list_filter_data' => {},
|
582
593
|
'embeds' => [],
|
583
|
-
'references' => []
|
594
|
+
'references' => [],
|
595
|
+
'session_hash' => @test_session.to_h
|
584
596
|
}
|
585
597
|
)
|
586
598
|
end
|
@@ -595,7 +607,7 @@ describe Hoodoo::Services::Middleware do
|
|
595
607
|
response = spec_helper_http(
|
596
608
|
klass: Net::HTTP::Post,
|
597
609
|
port: @port,
|
598
|
-
path: '/
|
610
|
+
path: '/2/TestEcho.json?_embed=embed_one,embed_two',
|
599
611
|
body: { 'foo' => 'bar', 'baz' => 'boo' }.to_json,
|
600
612
|
headers: headers
|
601
613
|
)
|
@@ -631,7 +643,8 @@ describe Hoodoo::Services::Middleware do
|
|
631
643
|
'list_search_data' => {},
|
632
644
|
'list_filter_data' => {},
|
633
645
|
'embeds' => [ 'embed_one', 'embed_two' ],
|
634
|
-
'references' => []
|
646
|
+
'references' => [],
|
647
|
+
'session_hash' => @test_session.to_h
|
635
648
|
}
|
636
649
|
)
|
637
650
|
|
@@ -663,7 +676,7 @@ describe Hoodoo::Services::Middleware do
|
|
663
676
|
response = spec_helper_http(
|
664
677
|
klass: Net::HTTP::Post,
|
665
678
|
port: @port,
|
666
|
-
path: '/
|
679
|
+
path: '/2/TestEcho.json',
|
667
680
|
body: { 'foo' => 'bar', 'baz' => 'boo' }.to_json,
|
668
681
|
headers: { 'X-Resource-UUID' => Hoodoo::UUID.generate() }
|
669
682
|
)
|
@@ -682,7 +695,7 @@ describe Hoodoo::Services::Middleware do
|
|
682
695
|
response = spec_helper_http(
|
683
696
|
klass: Net::HTTP::Post,
|
684
697
|
port: @port,
|
685
|
-
path: '/
|
698
|
+
path: '/2/TestEcho',
|
686
699
|
body: { 'foo' => 'bar' }.to_json,
|
687
700
|
headers: { 'X-Deja-Vu' => 'yes' }
|
688
701
|
)
|
@@ -698,7 +711,7 @@ describe Hoodoo::Services::Middleware do
|
|
698
711
|
response = spec_helper_http(
|
699
712
|
klass: Net::HTTP::Post,
|
700
713
|
port: @port,
|
701
|
-
path: '/
|
714
|
+
path: '/2/TestEcho',
|
702
715
|
body: { 'foo' => 'bar', 'additional_error' => 'generic.invalid_decimal' }.to_json,
|
703
716
|
headers: { 'X-Deja-Vu' => 'yes' }
|
704
717
|
)
|
@@ -722,7 +735,7 @@ describe Hoodoo::Services::Middleware do
|
|
722
735
|
response = spec_helper_http(
|
723
736
|
klass: Net::HTTP::Patch,
|
724
737
|
port: @port,
|
725
|
-
path: '/
|
738
|
+
path: '/2/TestEcho/a/b.json?_embed=embed_one',
|
726
739
|
body: { 'foo' => 'boo', 'baz' => 'bar' }.to_json,
|
727
740
|
headers: headers
|
728
741
|
)
|
@@ -749,7 +762,8 @@ describe Hoodoo::Services::Middleware do
|
|
749
762
|
'list_search_data' => {},
|
750
763
|
'list_filter_data' => {},
|
751
764
|
'embeds' => [ 'embed_one' ],
|
752
|
-
'references' => []
|
765
|
+
'references' => [],
|
766
|
+
'session_hash' => @test_session.to_h
|
753
767
|
}
|
754
768
|
)
|
755
769
|
end
|
@@ -774,7 +788,7 @@ describe Hoodoo::Services::Middleware do
|
|
774
788
|
response = spec_helper_http(
|
775
789
|
klass: Net::HTTP::Delete,
|
776
790
|
port: @port,
|
777
|
-
path: '/
|
791
|
+
path: '/2/TestEcho/aa/bb.xml.gz?_embed=embed_two',
|
778
792
|
headers: headers
|
779
793
|
)
|
780
794
|
|
@@ -800,7 +814,8 @@ describe Hoodoo::Services::Middleware do
|
|
800
814
|
'list_search_data' => {},
|
801
815
|
'list_filter_data' => {},
|
802
816
|
'embeds' => [ 'embed_two' ],
|
803
|
-
'references' => []
|
817
|
+
'references' => [],
|
818
|
+
'session_hash' => @test_session.to_h
|
804
819
|
}
|
805
820
|
)
|
806
821
|
end
|
@@ -821,7 +836,7 @@ describe Hoodoo::Services::Middleware do
|
|
821
836
|
response = spec_helper_http(
|
822
837
|
klass: Net::HTTP::Delete,
|
823
838
|
port: @port,
|
824
|
-
path: '/
|
839
|
+
path: '/2/TestEcho/simulate_404' )
|
825
840
|
|
826
841
|
expect( response.code ).to eq( '404' )
|
827
842
|
expect_response_headers_on( response )
|
@@ -835,7 +850,7 @@ describe Hoodoo::Services::Middleware do
|
|
835
850
|
response = spec_helper_http(
|
836
851
|
klass: Net::HTTP::Delete,
|
837
852
|
port: @port,
|
838
|
-
path: '/
|
853
|
+
path: '/2/TestEcho/simulate_404',
|
839
854
|
headers: { 'X-Deja-Vu' => 'yes' }
|
840
855
|
)
|
841
856
|
|
@@ -853,7 +868,7 @@ describe Hoodoo::Services::Middleware do
|
|
853
868
|
response = spec_helper_http(
|
854
869
|
klass: Net::HTTP::Post,
|
855
870
|
port: @port,
|
856
|
-
path: '/
|
871
|
+
path: '/1/TestEchoQuiet',
|
857
872
|
body: { 'foo' => 'bar', 'baz' => 'boo' }.to_json
|
858
873
|
)
|
859
874
|
|
@@ -864,7 +879,7 @@ describe Hoodoo::Services::Middleware do
|
|
864
879
|
it 'should be detect 404 OK' do
|
865
880
|
response = spec_helper_http(
|
866
881
|
port: @port,
|
867
|
-
path: '/
|
882
|
+
path: '/1/NotPresent'
|
868
883
|
)
|
869
884
|
|
870
885
|
expect( response.code ).to eq( '404' )
|
@@ -921,7 +936,7 @@ describe Hoodoo::Services::Middleware do
|
|
921
936
|
|
922
937
|
def list_things( locale: nil, dated_at: nil )
|
923
938
|
get(
|
924
|
-
'/
|
939
|
+
'/1/TestCall.tar.gz?limit=25&offset=75',
|
925
940
|
nil,
|
926
941
|
headers_for( locale: locale, dated_at: dated_at )
|
927
942
|
)
|
@@ -955,7 +970,8 @@ describe Hoodoo::Services::Middleware do
|
|
955
970
|
'list_search_data' => {},
|
956
971
|
'list_filter_data' => {},
|
957
972
|
'embeds' => [],
|
958
|
-
'references' => []
|
973
|
+
'references' => [],
|
974
|
+
'session_hash' => @test_session.to_h
|
959
975
|
}
|
960
976
|
)
|
961
977
|
|
@@ -991,7 +1007,7 @@ describe Hoodoo::Services::Middleware do
|
|
991
1007
|
end
|
992
1008
|
|
993
1009
|
get(
|
994
|
-
'/
|
1010
|
+
'/1/TestCall.tar.gz?limit=25&offset=75',
|
995
1011
|
nil,
|
996
1012
|
headers_for( locale: 'de' )
|
997
1013
|
)
|
@@ -1017,7 +1033,7 @@ describe Hoodoo::Services::Middleware do
|
|
1017
1033
|
end
|
1018
1034
|
|
1019
1035
|
get(
|
1020
|
-
'/
|
1036
|
+
'/1/TestCall.tar.gz?offset=42', # 42 -> magic -> inner service adds error
|
1021
1037
|
nil,
|
1022
1038
|
headers_for( locale: 'de' )
|
1023
1039
|
)
|
@@ -1028,7 +1044,7 @@ describe Hoodoo::Services::Middleware do
|
|
1028
1044
|
|
1029
1045
|
def show_things( locale: nil, dated_at: nil )
|
1030
1046
|
get(
|
1031
|
-
'/
|
1047
|
+
'/1/TestCall/one/two.tar.gz',
|
1032
1048
|
nil,
|
1033
1049
|
headers_for( locale: locale, dated_at: dated_at )
|
1034
1050
|
)
|
@@ -1053,7 +1069,8 @@ describe Hoodoo::Services::Middleware do
|
|
1053
1069
|
'list_search_data' => {},
|
1054
1070
|
'list_filter_data' => {},
|
1055
1071
|
'embeds' => [],
|
1056
|
-
'references' => []
|
1072
|
+
'references' => [],
|
1073
|
+
'session_hash' => @test_session.to_h
|
1057
1074
|
}
|
1058
1075
|
)
|
1059
1076
|
|
@@ -1079,7 +1096,7 @@ describe Hoodoo::Services::Middleware do
|
|
1079
1096
|
expect( result.platform_errors.has_errors? ).to eq( true )
|
1080
1097
|
end
|
1081
1098
|
|
1082
|
-
get( '/
|
1099
|
+
get( '/1/TestCall/return_error', nil, headers_for() )
|
1083
1100
|
|
1084
1101
|
result = JSON.parse(last_response.body)
|
1085
1102
|
expect(result['errors'][0]['code']).to eq('generic.invalid_string')
|
@@ -1091,7 +1108,7 @@ describe Hoodoo::Services::Middleware do
|
|
1091
1108
|
expect( result.platform_errors.has_errors? ).to eq( true )
|
1092
1109
|
end
|
1093
1110
|
|
1094
|
-
get( '/
|
1111
|
+
get( '/1/TestCall/return_invalid_data', nil, headers_for() )
|
1095
1112
|
|
1096
1113
|
result = JSON.parse(last_response.body)
|
1097
1114
|
expect(result['errors'][0]['code']).to eq('platform.fault')
|
@@ -1109,8 +1126,8 @@ describe Hoodoo::Services::Middleware do
|
|
1109
1126
|
|
1110
1127
|
test_session.scoping.authorised_http_headers = [ 'X-Assume-Identity-Of' ]
|
1111
1128
|
test_session.scoping.authorised_identities = {
|
1112
|
-
|
1113
|
-
[
|
1129
|
+
MMRS_VALID_ASSUMED_IDENTITY_HASH.keys.first =>
|
1130
|
+
[ MMRS_VALID_ASSUMED_IDENTITY_HASH.values.first ]
|
1114
1131
|
}
|
1115
1132
|
|
1116
1133
|
Hoodoo::Services::Middleware.set_test_session( test_session )
|
@@ -1123,25 +1140,29 @@ describe Hoodoo::Services::Middleware do
|
|
1123
1140
|
context 'when in use at top level' do
|
1124
1141
|
it 'sees correct identity in the downstream resource' do
|
1125
1142
|
get(
|
1126
|
-
'/
|
1143
|
+
'/1/TestCall/return_identity',
|
1127
1144
|
nil,
|
1128
1145
|
{
|
1129
1146
|
'CONTENT_TYPE' => 'application/json; charset=utf-8',
|
1130
|
-
'HTTP_X_ASSUME_IDENTITY_OF' => URI.encode_www_form(
|
1147
|
+
'HTTP_X_ASSUME_IDENTITY_OF' => URI.encode_www_form( MMRS_VALID_ASSUMED_IDENTITY_HASH )
|
1131
1148
|
}
|
1132
1149
|
)
|
1133
1150
|
|
1134
1151
|
result = JSON.parse( last_response.body )
|
1135
|
-
|
1152
|
+
|
1153
|
+
expect( result[ 'show' ] ).to eq( {
|
1154
|
+
'identity' => MMRS_VALID_ASSUMED_IDENTITY_HASH,
|
1155
|
+
'fingerprint' => @caller_fingerprint
|
1156
|
+
} )
|
1136
1157
|
end
|
1137
1158
|
|
1138
1159
|
it 'cannot set an illegal identity in the inter-resource call' do
|
1139
1160
|
get(
|
1140
|
-
'/
|
1161
|
+
'/1/TestCall/set_bad_inter_resource_identity',
|
1141
1162
|
nil,
|
1142
1163
|
{
|
1143
1164
|
'CONTENT_TYPE' => 'application/json; charset=utf-8',
|
1144
|
-
'HTTP_X_ASSUME_IDENTITY_OF' => URI.encode_www_form(
|
1165
|
+
'HTTP_X_ASSUME_IDENTITY_OF' => URI.encode_www_form( MMRS_VALID_ASSUMED_IDENTITY_HASH )
|
1145
1166
|
}
|
1146
1167
|
)
|
1147
1168
|
|
@@ -1152,22 +1173,24 @@ describe Hoodoo::Services::Middleware do
|
|
1152
1173
|
end
|
1153
1174
|
|
1154
1175
|
context 'in inter-resource call only' do
|
1155
|
-
identity_hash = { 'caller_id' => 'custom_caller_id' }
|
1156
|
-
|
1157
1176
|
it 'can still set identity for the downstream resource' do
|
1158
1177
|
get(
|
1159
|
-
'/
|
1178
|
+
'/1/TestCall/set_good_inter_resource_identity',
|
1160
1179
|
nil,
|
1161
1180
|
{ 'CONTENT_TYPE' => 'application/json; charset=utf-8' }
|
1162
1181
|
)
|
1163
1182
|
|
1164
1183
|
result = JSON.parse( last_response.body )
|
1165
|
-
|
1184
|
+
|
1185
|
+
expect( result[ 'show' ] ).to eq( {
|
1186
|
+
'identity' => MMRS_VALID_ASSUMED_IDENTITY_HASH,
|
1187
|
+
'fingerprint' => @caller_fingerprint
|
1188
|
+
} )
|
1166
1189
|
end
|
1167
1190
|
|
1168
1191
|
it 'cannot set an illegal identity for the downstream resource' do
|
1169
1192
|
get(
|
1170
|
-
'/
|
1193
|
+
'/1/TestCall/set_bad_inter_resource_identity',
|
1171
1194
|
nil,
|
1172
1195
|
{ 'CONTENT_TYPE' => 'application/json; charset=utf-8' }
|
1173
1196
|
)
|
@@ -1188,7 +1211,7 @@ describe Hoodoo::Services::Middleware do
|
|
1188
1211
|
test_session.scoping = test_session.scoping.dup
|
1189
1212
|
|
1190
1213
|
test_session.scoping.authorised_http_headers = [] # NO ALLOWED HEADERS
|
1191
|
-
test_session.scoping.authorised_identities = { 'caller_id' => [
|
1214
|
+
test_session.scoping.authorised_identities = { 'caller_id' => [ MMRS_CUSTOM_CALLER_ID ] }
|
1192
1215
|
|
1193
1216
|
Hoodoo::Services::Middleware.set_test_session( test_session )
|
1194
1217
|
end
|
@@ -1202,7 +1225,7 @@ describe Hoodoo::Services::Middleware do
|
|
1202
1225
|
#
|
1203
1226
|
it 'cannot override a valid identity in inter-resource calls' do
|
1204
1227
|
get(
|
1205
|
-
'/
|
1228
|
+
'/1/TestCall/set_good_inter_resource_identity',
|
1206
1229
|
nil,
|
1207
1230
|
{ 'CONTENT_TYPE' => 'application/json; charset=utf-8' }
|
1208
1231
|
)
|
@@ -1216,7 +1239,7 @@ describe Hoodoo::Services::Middleware do
|
|
1216
1239
|
|
1217
1240
|
def create_things( locale: nil, dated_from: nil, deja_vu: nil, resource_uuid: nil )
|
1218
1241
|
post(
|
1219
|
-
'/
|
1242
|
+
'/1/TestCall.tar.gz',
|
1220
1243
|
{ 'foo' => 'bar', 'baz' => 'boo' }.to_json,
|
1221
1244
|
headers_for( locale: locale, dated_from: dated_from, deja_vu: deja_vu, resource_uuid: resource_uuid )
|
1222
1245
|
)
|
@@ -1241,7 +1264,8 @@ describe Hoodoo::Services::Middleware do
|
|
1241
1264
|
'list_search_data' => {},
|
1242
1265
|
'list_filter_data' => {},
|
1243
1266
|
'embeds' => [],
|
1244
|
-
'references' => []
|
1267
|
+
'references' => [],
|
1268
|
+
'session_hash' => @test_session.to_h
|
1245
1269
|
}
|
1246
1270
|
)
|
1247
1271
|
|
@@ -1265,7 +1289,7 @@ describe Hoodoo::Services::Middleware do
|
|
1265
1289
|
@test_session.scoping.authorised_http_headers = [ 'HTTP_X_RESOURCE_UUID' ]
|
1266
1290
|
|
1267
1291
|
post(
|
1268
|
-
'/
|
1292
|
+
'/1/TestCall.tar.gz',
|
1269
1293
|
{ :foo => 'specify_uuid' }.to_json,
|
1270
1294
|
headers_for()
|
1271
1295
|
)
|
@@ -1280,7 +1304,7 @@ describe Hoodoo::Services::Middleware do
|
|
1280
1304
|
|
1281
1305
|
it 'cannot specify a UUID via an inter-resource call if it does not have top-level permission' do
|
1282
1306
|
post(
|
1283
|
-
'/
|
1307
|
+
'/1/TestCall.tar.gz',
|
1284
1308
|
{ :foo => 'specify_uuid' }.to_json,
|
1285
1309
|
headers_for()
|
1286
1310
|
)
|
@@ -1302,7 +1326,7 @@ describe Hoodoo::Services::Middleware do
|
|
1302
1326
|
#
|
1303
1327
|
it 'gets a 204 with deja-vu and duplication' do
|
1304
1328
|
post(
|
1305
|
-
'/
|
1329
|
+
'/1/TestCall.tar.gz',
|
1306
1330
|
{ 'foo' => 'bar', 'deja_vu_in_other_resource' => 'yes' }.to_json,
|
1307
1331
|
headers_for() # *not* requesting Deja-Vu at the top level
|
1308
1332
|
)
|
@@ -1322,7 +1346,7 @@ describe Hoodoo::Services::Middleware do
|
|
1322
1346
|
|
1323
1347
|
it 'gets non-204 with deja-vu and duplication plus other errors' do
|
1324
1348
|
post(
|
1325
|
-
'/
|
1349
|
+
'/1/TestCall.tar.gz',
|
1326
1350
|
{
|
1327
1351
|
'foo' => 'bar',
|
1328
1352
|
'deja_vu_in_other_resource' => 'yes',
|
@@ -1353,7 +1377,7 @@ describe Hoodoo::Services::Middleware do
|
|
1353
1377
|
expect_any_instance_of( Hoodoo::Client::Endpoint::HTTPBased::DescriptionOfResponse ).to receive( :raw_body_data ).and_return( 'not JSON' )
|
1354
1378
|
|
1355
1379
|
post(
|
1356
|
-
'/
|
1380
|
+
'/1/TestCall.tar.gz',
|
1357
1381
|
{ 'foo' => 'bar' }.to_json,
|
1358
1382
|
headers_for()
|
1359
1383
|
)
|
@@ -1376,7 +1400,7 @@ describe Hoodoo::Services::Middleware do
|
|
1376
1400
|
end
|
1377
1401
|
|
1378
1402
|
post(
|
1379
|
-
'/
|
1403
|
+
'/1/TestCall.tar.gz',
|
1380
1404
|
{ :foo => 'bar', :return_error => 'yes' }.to_json,
|
1381
1405
|
headers_for()
|
1382
1406
|
)
|
@@ -1387,7 +1411,7 @@ describe Hoodoo::Services::Middleware do
|
|
1387
1411
|
|
1388
1412
|
def update_things( locale: nil )
|
1389
1413
|
patch(
|
1390
|
-
'/
|
1414
|
+
'/1/TestCall/aa/bb.tar.gz',
|
1391
1415
|
{ 'foo' => 'boo', 'baz' => 'bar' }.to_json,
|
1392
1416
|
headers_for( locale: locale )
|
1393
1417
|
)
|
@@ -1412,7 +1436,8 @@ describe Hoodoo::Services::Middleware do
|
|
1412
1436
|
'list_search_data' => {},
|
1413
1437
|
'list_filter_data' => {},
|
1414
1438
|
'embeds' => [],
|
1415
|
-
'references' => []
|
1439
|
+
'references' => [],
|
1440
|
+
'session_hash' => @test_session.to_h
|
1416
1441
|
}
|
1417
1442
|
)
|
1418
1443
|
|
@@ -1439,7 +1464,7 @@ describe Hoodoo::Services::Middleware do
|
|
1439
1464
|
expect( result.platform_errors.has_errors? ).to eq( true )
|
1440
1465
|
end
|
1441
1466
|
|
1442
|
-
patch( '/
|
1467
|
+
patch( '/1/TestCall/return_error', '{}', headers_for() )
|
1443
1468
|
|
1444
1469
|
result = JSON.parse(last_response.body)
|
1445
1470
|
expect(result['errors'][0]['code']).to eq('platform.malformed')
|
@@ -1447,7 +1472,7 @@ describe Hoodoo::Services::Middleware do
|
|
1447
1472
|
|
1448
1473
|
def delete_things( locale: nil, deja_vu: nil )
|
1449
1474
|
delete(
|
1450
|
-
'/
|
1475
|
+
'/1/TestCall/aone/btwo.tar.gz',
|
1451
1476
|
nil,
|
1452
1477
|
headers_for( locale:locale, deja_vu: deja_vu )
|
1453
1478
|
)
|
@@ -1472,7 +1497,8 @@ describe Hoodoo::Services::Middleware do
|
|
1472
1497
|
'list_search_data' => {},
|
1473
1498
|
'list_filter_data' => {},
|
1474
1499
|
'embeds' => [],
|
1475
|
-
'references' => []
|
1500
|
+
'references' => [],
|
1501
|
+
'session_hash' => @test_session.to_h
|
1476
1502
|
}
|
1477
1503
|
)
|
1478
1504
|
|
@@ -1494,7 +1520,7 @@ describe Hoodoo::Services::Middleware do
|
|
1494
1520
|
|
1495
1521
|
it 'should receive errors from remote service as if from the local call' do
|
1496
1522
|
get(
|
1497
|
-
'/
|
1523
|
+
'/1/TestCall/return_error',
|
1498
1524
|
nil,
|
1499
1525
|
{ 'CONTENT_TYPE' => 'application/json; charset=utf-8' }
|
1500
1526
|
)
|
@@ -1520,7 +1546,7 @@ describe Hoodoo::Services::Middleware do
|
|
1520
1546
|
end
|
1521
1547
|
|
1522
1548
|
get(
|
1523
|
-
'/
|
1549
|
+
'/1/TestCall/generate_404',
|
1524
1550
|
nil,
|
1525
1551
|
{ 'CONTENT_TYPE' => 'application/json; charset=utf-8' }
|
1526
1552
|
)
|
@@ -1531,7 +1557,7 @@ describe Hoodoo::Services::Middleware do
|
|
1531
1557
|
|
1532
1558
|
it 'can reuse an endpoint' do
|
1533
1559
|
get(
|
1534
|
-
'/
|
1560
|
+
'/1/TestCall/ensure_repeated_use_works',
|
1535
1561
|
nil,
|
1536
1562
|
{ 'CONTENT_TYPE' => 'application/json; charset=utf-8' }
|
1537
1563
|
)
|
@@ -1559,7 +1585,7 @@ describe Hoodoo::Services::Middleware do
|
|
1559
1585
|
expect_any_instance_of( Net::HTTP ).to receive( :request ).once.and_raise( Errno::ECONNREFUSED )
|
1560
1586
|
|
1561
1587
|
get(
|
1562
|
-
'/
|
1588
|
+
'/1/TestCall/show_something',
|
1563
1589
|
nil,
|
1564
1590
|
{ 'CONTENT_TYPE' => 'application/json; charset=utf-8' }
|
1565
1591
|
)
|
@@ -1574,7 +1600,7 @@ describe Hoodoo::Services::Middleware do
|
|
1574
1600
|
expect_any_instance_of( Net::HTTP ).to receive( :request ).once.and_raise( 'some connection error' )
|
1575
1601
|
|
1576
1602
|
get(
|
1577
|
-
'/
|
1603
|
+
'/1/TestCall/show_something',
|
1578
1604
|
nil,
|
1579
1605
|
{ 'CONTENT_TYPE' => 'application/json; charset=utf-8' }
|
1580
1606
|
)
|