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