graphql 1.9.4 → 1.9.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/lib/graphql/execution/execute.rb +3 -0
- data/lib/graphql/execution/interpreter/runtime.rb +2 -2
- data/lib/graphql/execution/lookahead.rb +57 -22
- data/lib/graphql/introspection/input_value_type.rb +5 -1
- data/lib/graphql/language/parser.rb +57 -54
- data/lib/graphql/language/parser.y +12 -9
- data/lib/graphql/language/token.rb +1 -1
- data/lib/graphql/language/visitor.rb +1 -1
- data/lib/graphql/query/arguments.rb +3 -3
- data/lib/graphql/query/context.rb +6 -6
- data/lib/graphql/query/variable_validation_error.rb +14 -0
- data/lib/graphql/schema.rb +2 -2
- data/lib/graphql/schema/argument.rb +1 -1
- data/lib/graphql/schema/field.rb +6 -3
- data/lib/graphql/schema/object.rb +2 -2
- data/lib/graphql/schema/relay_classic_mutation.rb +1 -1
- data/lib/graphql/schema/rescue_middleware.rb +7 -2
- data/lib/graphql/schema/validation.rb +9 -4
- data/lib/graphql/static_validation/base_visitor.rb +8 -5
- data/lib/graphql/subscriptions/action_cable_subscriptions.rb +3 -1
- data/lib/graphql/tracing.rb +3 -3
- data/lib/graphql/types.rb +1 -0
- data/lib/graphql/types/json.rb +25 -0
- data/lib/graphql/types/relay/base_edge.rb +3 -2
- data/lib/graphql/unauthorized_field_error.rb +1 -1
- data/lib/graphql/version.rb +1 -1
- data/spec/dummy/Gemfile.lock +157 -0
- data/spec/dummy/log/test.log +199 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/4w/4wzXRZrAkwKdgYaSE0pid5eB-fer8vSfSku_NPg4rMA.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/7I/7IHVBiJT06QSpgLpLoJIxboQ0B-D_tMTxsvoezBTV3Q.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/8w/8wY_SKagj8wHuwGNAAf6JnQ8joMbC6cEYpHrTAI8Urc.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/AK/AKzz1u6bGb4auXcrObA_g5LL-oV0ejNGa448AgAi_WQ.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ET/ETW4uxvaYpruL8y6_ZptUH82ZowMaHIqvg5WexBFdEM.cache +3 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/F1/F1TWpjjyA56k9Z90n5B3xRn7DUdGjX73QCkYC6k07JQ.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/F8/F8MUNRzORGFgr329fNM0xLaoWCXdv3BIalT7dsvLfjs.cache +2 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/KB/KB07ZaKNC5uXJ7TjLi-WqnY6g7dq8wWp_8N3HNjBNxg.cache +2 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ms/MsKSimH_UCB-H1tLvDABDHuvGciuoW6kVqQWDrXU5FQ.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Mt/Mtci-Kim50aPOmeClD4AIicKn1d1WJ0n454IjSd94sk.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/QH/QHt3Tc1Y6M66Oo_pDuMyWrQNs4Pp3SMeZR5K1wJj2Ts.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/XU/XU4k1OXnfMils5SrirorPvDSyDSqiOWLZNtmAH1HH8k.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ZI/ZIof7mZxWWCnraIFOCuV6a8QRWzKJXJnx2Xd7C0ZyX0.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/cG/cGc_puuPS5pZKgUcy1Y_i1L6jl5UtsiIrMH59rTzR6c.cache +3 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/df/dfro_B6bx3KP1Go-7jEOqqZ2j4hVRseXIc3es9PKQno.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/jO/jO1DfbqnG0mTULsjJJANc3fefrG2zt7DIMmcptMT628.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/pE/pE7gO6pQ-z187Swb4hT554wmqsq-cNzgPWLrCz-LQQQ.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/r9/r9iU1l58a6rxkZSW5RSC52_tD-_UQuHxoMVnkfJ7Mhs.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/xi/xitPPFfPIyDMpaznV0sBBcw8eSCV8PJcLLWin78sCgE.cache +0 -0
- data/spec/dummy/tmp/screenshots/failures_test_it_handles_subscriptions.png +0 -0
- data/spec/graphql/authorization_spec.rb +47 -14
- data/spec/graphql/execution/lookahead_spec.rb +29 -2
- data/spec/graphql/function_spec.rb +28 -5
- data/spec/graphql/introspection/input_value_type_spec.rb +40 -1
- data/spec/graphql/language/parser_spec.rb +8 -0
- data/spec/graphql/query/executor_spec.rb +30 -3
- data/spec/graphql/schema/object_spec.rb +71 -0
- data/spec/graphql/schema/relay_classic_mutation_spec.rb +18 -0
- data/spec/graphql/schema/rescue_middleware_spec.rb +14 -0
- data/spec/graphql/schema/warden_spec.rb +1 -1
- data/spec/graphql/types/relay/base_edge_spec.rb +33 -0
- data/spec/integration/rails/graphql/schema_spec.rb +13 -0
- data/spec/integration/tmp/app/graphql/types/bird_type.rb +7 -0
- data/spec/support/dummy/schema.rb +19 -0
- data/spec/support/jazz.rb +16 -14
- metadata +57 -7
@@ -0,0 +1,199 @@
|
|
1
|
+
-----------------------------------------------------------
|
2
|
+
ActionCableSubscriptionsTest: test_it_handles_subscriptions
|
3
|
+
-----------------------------------------------------------
|
4
|
+
Started GET "/" for 127.0.0.1 at 2018-09-29 14:31:04 -0400
|
5
|
+
Processing by PagesController#show as HTML
|
6
|
+
Rendering pages/show.html within layouts/application
|
7
|
+
Rendered pages/show.html within layouts/application (1.3ms)
|
8
|
+
Completed 200 OK in 211ms (Views: 208.8ms)
|
9
|
+
Started GET "/assets/application-03569c14ba2ebaf689cf2b8eecd6aba17af7402d872a3eca6c4ec8fac4eb31e9.js" for 127.0.0.1 at 2018-09-29 14:31:05 -0400
|
10
|
+
Started GET "/cable" for 127.0.0.1 at 2018-09-29 14:31:05 -0400
|
11
|
+
Started GET "/cable/" [WebSocket] for 127.0.0.1 at 2018-09-29 14:31:05 -0400
|
12
|
+
Successfully upgraded to WebSocket (REQUEST_METHOD: GET, HTTP_CONNECTION: Upgrade, HTTP_UPGRADE: websocket)
|
13
|
+
GraphqlChannel is transmitting the subscription confirmation
|
14
|
+
GraphqlChannel is transmitting the subscription confirmation
|
15
|
+
GraphqlChannel#execute({"query"=>"subscription($id: ID!) { payload(id: $id) { value } }", "variables"=>{"id"=>"updates-1"}})
|
16
|
+
GraphqlChannel#execute({"query"=>"subscription($id: ID!) { payload(id: $id) { value } }", "variables"=>{"id"=>"updates-2"}})
|
17
|
+
Could not execute command from ({"command"=>"message", "identifier"=>"{\"channel\":\"GraphqlChannel\",\"id\":\"1662699726a\"}", "data"=>"{\"query\":\"subscription($id: ID!) { payload(id: $id) { value } }\",\"variables\":{\"id\":\"updates-1\"},\"action\":\"execute\"}"}) [ArgumentError - wrong number of arguments (given 1, expected 0)]: /Users/rmosolgo/code/graphql-ruby/spec/dummy/app/channels/graphql_channel.rb:19:in `payload' | /Users/rmosolgo/code/graphql-ruby/lib/graphql/schema/field.rb:524:in `public_send' | /Users/rmosolgo/code/graphql-ruby/lib/graphql/schema/field.rb:524:in `block in public_send_field' | /Users/rmosolgo/code/graphql-ruby/lib/graphql/schema/field.rb:536:in `with_extensions' | /Users/rmosolgo/code/graphql-ruby/lib/graphql/schema/field.rb:515:in `public_send_field'
|
18
|
+
Could not execute command from ({"command"=>"message", "identifier"=>"{\"channel\":\"GraphqlChannel\",\"id\":\"166269a4ccc\"}", "data"=>"{\"query\":\"subscription($id: ID!) { payload(id: $id) { value } }\",\"variables\":{\"id\":\"updates-2\"},\"action\":\"execute\"}"}) [ArgumentError - wrong number of arguments (given 1, expected 0)]: /Users/rmosolgo/code/graphql-ruby/spec/dummy/app/channels/graphql_channel.rb:19:in `payload' | /Users/rmosolgo/code/graphql-ruby/lib/graphql/schema/field.rb:524:in `public_send' | /Users/rmosolgo/code/graphql-ruby/lib/graphql/schema/field.rb:524:in `block in public_send_field' | /Users/rmosolgo/code/graphql-ruby/lib/graphql/schema/field.rb:536:in `with_extensions' | /Users/rmosolgo/code/graphql-ruby/lib/graphql/schema/field.rb:515:in `public_send_field'
|
19
|
+
GraphqlChannel#make_trigger({"id"=>"updates-1", "value"=>1})
|
20
|
+
[ActionCable] Broadcasting to graphql-event::payload:id:updates-1: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzE\"}"
|
21
|
+
GraphqlChannel#make_trigger({"id"=>"updates-1", "value"=>2})
|
22
|
+
[ActionCable] Broadcasting to graphql-event::payload:id:updates-1: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzI\"}"
|
23
|
+
GraphqlChannel#make_trigger({"id"=>"updates-1", "value"=>3})
|
24
|
+
[ActionCable] Broadcasting to graphql-event::payload:id:updates-1: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzM\"}"
|
25
|
+
Finished "/cable/" [WebSocket] for 127.0.0.1 at 2018-09-29 14:31:08 -0400
|
26
|
+
-----------------------------------------------------------
|
27
|
+
ActionCableSubscriptionsTest: test_it_handles_subscriptions
|
28
|
+
-----------------------------------------------------------
|
29
|
+
Started GET "/" for 127.0.0.1 at 2018-09-29 14:31:34 -0400
|
30
|
+
Processing by PagesController#show as HTML
|
31
|
+
Rendering pages/show.html within layouts/application
|
32
|
+
Rendered pages/show.html within layouts/application (1.2ms)
|
33
|
+
Completed 200 OK in 209ms (Views: 206.7ms)
|
34
|
+
Started GET "/assets/application-03569c14ba2ebaf689cf2b8eecd6aba17af7402d872a3eca6c4ec8fac4eb31e9.js" for 127.0.0.1 at 2018-09-29 14:31:34 -0400
|
35
|
+
Started GET "/cable" for 127.0.0.1 at 2018-09-29 14:31:34 -0400
|
36
|
+
Started GET "/cable/" [WebSocket] for 127.0.0.1 at 2018-09-29 14:31:34 -0400
|
37
|
+
Successfully upgraded to WebSocket (REQUEST_METHOD: GET, HTTP_CONNECTION: Upgrade, HTTP_UPGRADE: websocket)
|
38
|
+
GraphqlChannel is transmitting the subscription confirmation
|
39
|
+
GraphqlChannel is transmitting the subscription confirmation
|
40
|
+
GraphqlChannel#execute({"query"=>"subscription($id: ID!) { payload(id: $id) { value } }", "variables"=>{"id"=>"updates-1"}})
|
41
|
+
GraphqlChannel transmitting {:result=>{"data"=>nil}, :more=>true}
|
42
|
+
GraphqlChannel#execute({"query"=>"subscription($id: ID!) { payload(id: $id) { value } }", "variables"=>{"id"=>"updates-2"}})
|
43
|
+
GraphqlChannel transmitting {:result=>{"data"=>nil}, :more=>true}
|
44
|
+
GraphqlChannel is streaming from graphql-subscription:d39b7767-bfcf-487f-9985-a99e0074a99c
|
45
|
+
GraphqlChannel is streaming from graphql-subscription:95a2d0a0-e2a1-47d2-b9c4-a305e9532f41
|
46
|
+
GraphqlChannel is streaming from graphql-event::payload:id:updates-1
|
47
|
+
GraphqlChannel is streaming from graphql-event::payload:id:updates-2
|
48
|
+
GraphqlChannel#make_trigger({"id"=>"updates-1", "value"=>1})
|
49
|
+
[ActionCable] Broadcasting to graphql-event::payload:id:updates-1: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzE\"}"
|
50
|
+
[ActionCable] Broadcasting to graphql-subscription:d39b7767-bfcf-487f-9985-a99e0074a99c: {:result=>{"data"=>{"payload"=>{"value"=>1}}}, :more=>true}
|
51
|
+
GraphqlChannel transmitting {"result"=>{"data"=>{"payload"=>{"value"=>1}}}, "more"=>true} (via streamed from graphql-subscription:d39b7767-bfcf-487f-9985-a99e0074a99c)
|
52
|
+
GraphqlChannel#make_trigger({"id"=>"updates-1", "value"=>2})
|
53
|
+
[ActionCable] Broadcasting to graphql-event::payload:id:updates-1: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzI\"}"
|
54
|
+
[ActionCable] Broadcasting to graphql-subscription:d39b7767-bfcf-487f-9985-a99e0074a99c: {:result=>{"data"=>{"payload"=>{"value"=>2}}}, :more=>true}
|
55
|
+
GraphqlChannel transmitting {"result"=>{"data"=>{"payload"=>{"value"=>2}}}, "more"=>true} (via streamed from graphql-subscription:d39b7767-bfcf-487f-9985-a99e0074a99c)
|
56
|
+
GraphqlChannel#make_trigger({"id"=>"updates-1", "value"=>3})
|
57
|
+
[ActionCable] Broadcasting to graphql-event::payload:id:updates-1: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzM\"}"
|
58
|
+
[ActionCable] Broadcasting to graphql-subscription:d39b7767-bfcf-487f-9985-a99e0074a99c: {:result=>{"data"=>{"payload"=>{"value"=>3}}}, :more=>true}
|
59
|
+
GraphqlChannel transmitting {"result"=>{"data"=>{"payload"=>{"value"=>3}}}, "more"=>true} (via streamed from graphql-subscription:d39b7767-bfcf-487f-9985-a99e0074a99c)
|
60
|
+
GraphqlChannel#make_trigger({"id"=>"updates-2", "value"=>1})
|
61
|
+
[ActionCable] Broadcasting to graphql-event::payload:id:updates-2: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzE\"}"
|
62
|
+
[ActionCable] Broadcasting to graphql-subscription:95a2d0a0-e2a1-47d2-b9c4-a305e9532f41: {:result=>{"data"=>{"payload"=>{"value"=>1}}}, :more=>true}
|
63
|
+
GraphqlChannel transmitting {"result"=>{"data"=>{"payload"=>{"value"=>1}}}, "more"=>true} (via streamed from graphql-subscription:95a2d0a0-e2a1-47d2-b9c4-a305e9532f41)
|
64
|
+
GraphqlChannel#make_trigger({"id"=>"updates-2", "value"=>2})
|
65
|
+
[ActionCable] Broadcasting to graphql-event::payload:id:updates-2: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzI\"}"
|
66
|
+
[ActionCable] Broadcasting to graphql-subscription:95a2d0a0-e2a1-47d2-b9c4-a305e9532f41: {:result=>{"data"=>{"payload"=>{"value"=>2}}}, :more=>true}
|
67
|
+
GraphqlChannel transmitting {"result"=>{"data"=>{"payload"=>{"value"=>2}}}, "more"=>true} (via streamed from graphql-subscription:95a2d0a0-e2a1-47d2-b9c4-a305e9532f41)
|
68
|
+
Unsubscribing from channel: {"channel":"GraphqlChannel","id":"166269a8bd0"}
|
69
|
+
GraphqlChannel stopped streaming from graphql-subscription:d39b7767-bfcf-487f-9985-a99e0074a99c
|
70
|
+
GraphqlChannel stopped streaming from graphql-event::payload:id:updates-1
|
71
|
+
Could not execute command from ({"command"=>"message", "identifier"=>"{\"channel\":\"GraphqlChannel\",\"id\":\"166269a8bd0\"}", "data"=>"{\"id\":\"updates-1\",\"value\":4,\"action\":\"make_trigger\"}"}) [RuntimeError - Unable to find subscription with identifier: {"channel":"GraphqlChannel","id":"166269a8bd0"}]: /Users/rmosolgo/.rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/gems/actioncable-5.2.1/lib/action_cable/connection/subscriptions.rb:78:in `find' | /Users/rmosolgo/.rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/gems/actioncable-5.2.1/lib/action_cable/connection/subscriptions.rb:55:in `perform_action' | /Users/rmosolgo/.rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/gems/actioncable-5.2.1/lib/action_cable/connection/subscriptions.rb:19:in `execute_command' | /Users/rmosolgo/.rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/gems/actioncable-5.2.1/lib/action_cable/connection/base.rb:87:in `dispatch_websocket_message' | /Users/rmosolgo/.rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/gems/actioncable-5.2.1/lib/action_cable/server/worker.rb:60:in `block in invoke'
|
72
|
+
GraphqlChannel#make_trigger({"id"=>"updates-2", "value"=>3})
|
73
|
+
[ActionCable] Broadcasting to graphql-event::payload:id:updates-2: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzM\"}"
|
74
|
+
[ActionCable] Broadcasting to graphql-subscription:95a2d0a0-e2a1-47d2-b9c4-a305e9532f41: {:result=>{"data"=>{"payload"=>{"value"=>3}}}, :more=>true}
|
75
|
+
GraphqlChannel transmitting {"result"=>{"data"=>{"payload"=>{"value"=>3}}}, "more"=>true} (via streamed from graphql-subscription:95a2d0a0-e2a1-47d2-b9c4-a305e9532f41)
|
76
|
+
GraphqlChannel#make_trigger({"id"=>"updates-2", "value"=>4})
|
77
|
+
[ActionCable] Broadcasting to graphql-event::payload:id:updates-2: "4x"
|
78
|
+
[ActionCable] Broadcasting to graphql-subscription:95a2d0a0-e2a1-47d2-b9c4-a305e9532f41: {:result=>{"data"=>{"payload"=>{"value"=>400}}}, :more=>true}
|
79
|
+
GraphqlChannel transmitting {"result"=>{"data"=>{"payload"=>{"value"=>400}}}, "more"=>true} (via streamed from graphql-subscription:95a2d0a0-e2a1-47d2-b9c4-a305e9532f41)
|
80
|
+
Finished "/cable/" [WebSocket] for 127.0.0.1 at 2018-09-29 14:31:36 -0400
|
81
|
+
GraphqlChannel stopped streaming from graphql-subscription:95a2d0a0-e2a1-47d2-b9c4-a305e9532f41
|
82
|
+
GraphqlChannel stopped streaming from graphql-event::payload:id:updates-2
|
83
|
+
-----------------------------------------------------------
|
84
|
+
ActionCableSubscriptionsTest: test_it_handles_subscriptions
|
85
|
+
-----------------------------------------------------------
|
86
|
+
Started GET "/" for 127.0.0.1 at 2018-09-29 14:31:58 -0400
|
87
|
+
Processing by PagesController#show as HTML
|
88
|
+
Rendering pages/show.html within layouts/application
|
89
|
+
Rendered pages/show.html within layouts/application (1.2ms)
|
90
|
+
Completed 200 OK in 244ms (Views: 241.4ms)
|
91
|
+
Started GET "/assets/application-03569c14ba2ebaf689cf2b8eecd6aba17af7402d872a3eca6c4ec8fac4eb31e9.js" for 127.0.0.1 at 2018-09-29 14:31:58 -0400
|
92
|
+
Started GET "/cable" for 127.0.0.1 at 2018-09-29 14:31:58 -0400
|
93
|
+
Started GET "/cable/" [WebSocket] for 127.0.0.1 at 2018-09-29 14:31:58 -0400
|
94
|
+
Successfully upgraded to WebSocket (REQUEST_METHOD: GET, HTTP_CONNECTION: Upgrade, HTTP_UPGRADE: websocket)
|
95
|
+
GraphqlChannel is transmitting the subscription confirmation
|
96
|
+
GraphqlChannel is transmitting the subscription confirmation
|
97
|
+
GraphqlChannel#execute({"query"=>"subscription($id: ID!) { payload(id: $id) { value } }", "variables"=>{"id"=>"updates-1"}})
|
98
|
+
GraphqlChannel transmitting {:result=>{"data"=>{}}, :more=>true}
|
99
|
+
GraphqlChannel#execute({"query"=>"subscription($id: ID!) { payload(id: $id) { value } }", "variables"=>{"id"=>"updates-2"}})
|
100
|
+
GraphqlChannel transmitting {:result=>{"data"=>{}}, :more=>true}
|
101
|
+
GraphqlChannel is streaming from graphql-subscription:2b19317b-9279-4b20-95fc-adee4a81161b
|
102
|
+
GraphqlChannel is streaming from graphql-event::payload:id:updates-1
|
103
|
+
GraphqlChannel is streaming from graphql-subscription:5f944467-ccfa-4765-9b4a-3bccb29b0b6b
|
104
|
+
GraphqlChannel is streaming from graphql-event::payload:id:updates-2
|
105
|
+
GraphqlChannel#make_trigger({"id"=>"updates-1", "value"=>1})
|
106
|
+
[ActionCable] Broadcasting to graphql-event::payload:id:updates-1: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzE\"}"
|
107
|
+
[ActionCable] Broadcasting to graphql-subscription:2b19317b-9279-4b20-95fc-adee4a81161b: {:result=>{"data"=>{"payload"=>{"value"=>1}}}, :more=>true}
|
108
|
+
GraphqlChannel transmitting {"result"=>{"data"=>{"payload"=>{"value"=>1}}}, "more"=>true} (via streamed from graphql-subscription:2b19317b-9279-4b20-95fc-adee4a81161b)
|
109
|
+
GraphqlChannel#make_trigger({"id"=>"updates-1", "value"=>2})
|
110
|
+
[ActionCable] Broadcasting to graphql-event::payload:id:updates-1: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzI\"}"
|
111
|
+
[ActionCable] Broadcasting to graphql-subscription:2b19317b-9279-4b20-95fc-adee4a81161b: {:result=>{"data"=>{"payload"=>{"value"=>2}}}, :more=>true}
|
112
|
+
GraphqlChannel transmitting {"result"=>{"data"=>{"payload"=>{"value"=>2}}}, "more"=>true} (via streamed from graphql-subscription:2b19317b-9279-4b20-95fc-adee4a81161b)
|
113
|
+
GraphqlChannel#make_trigger({"id"=>"updates-1", "value"=>3})
|
114
|
+
[ActionCable] Broadcasting to graphql-event::payload:id:updates-1: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzM\"}"
|
115
|
+
[ActionCable] Broadcasting to graphql-subscription:2b19317b-9279-4b20-95fc-adee4a81161b: {:result=>{"data"=>{"payload"=>{"value"=>3}}}, :more=>true}
|
116
|
+
GraphqlChannel transmitting {"result"=>{"data"=>{"payload"=>{"value"=>3}}}, "more"=>true} (via streamed from graphql-subscription:2b19317b-9279-4b20-95fc-adee4a81161b)
|
117
|
+
GraphqlChannel#make_trigger({"id"=>"updates-2", "value"=>1})
|
118
|
+
[ActionCable] Broadcasting to graphql-event::payload:id:updates-2: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzE\"}"
|
119
|
+
[ActionCable] Broadcasting to graphql-subscription:5f944467-ccfa-4765-9b4a-3bccb29b0b6b: {:result=>{"data"=>{"payload"=>{"value"=>1}}}, :more=>true}
|
120
|
+
GraphqlChannel transmitting {"result"=>{"data"=>{"payload"=>{"value"=>1}}}, "more"=>true} (via streamed from graphql-subscription:5f944467-ccfa-4765-9b4a-3bccb29b0b6b)
|
121
|
+
GraphqlChannel#make_trigger({"id"=>"updates-2", "value"=>2})
|
122
|
+
[ActionCable] Broadcasting to graphql-event::payload:id:updates-2: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzI\"}"
|
123
|
+
[ActionCable] Broadcasting to graphql-subscription:5f944467-ccfa-4765-9b4a-3bccb29b0b6b: {:result=>{"data"=>{"payload"=>{"value"=>2}}}, :more=>true}
|
124
|
+
GraphqlChannel transmitting {"result"=>{"data"=>{"payload"=>{"value"=>2}}}, "more"=>true} (via streamed from graphql-subscription:5f944467-ccfa-4765-9b4a-3bccb29b0b6b)
|
125
|
+
Unsubscribing from channel: {"channel":"GraphqlChannel","id":"166269a7cac"}
|
126
|
+
GraphqlChannel stopped streaming from graphql-subscription:2b19317b-9279-4b20-95fc-adee4a81161b
|
127
|
+
GraphqlChannel stopped streaming from graphql-event::payload:id:updates-1
|
128
|
+
Could not execute command from ({"command"=>"message", "identifier"=>"{\"channel\":\"GraphqlChannel\",\"id\":\"166269a7cac\"}", "data"=>"{\"id\":\"updates-1\",\"value\":4,\"action\":\"make_trigger\"}"}) [RuntimeError - Unable to find subscription with identifier: {"channel":"GraphqlChannel","id":"166269a7cac"}]: /Users/rmosolgo/.rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/gems/actioncable-5.2.1/lib/action_cable/connection/subscriptions.rb:78:in `find' | /Users/rmosolgo/.rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/gems/actioncable-5.2.1/lib/action_cable/connection/subscriptions.rb:55:in `perform_action' | /Users/rmosolgo/.rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/gems/actioncable-5.2.1/lib/action_cable/connection/subscriptions.rb:19:in `execute_command' | /Users/rmosolgo/.rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/gems/actioncable-5.2.1/lib/action_cable/connection/base.rb:87:in `dispatch_websocket_message' | /Users/rmosolgo/.rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/gems/actioncable-5.2.1/lib/action_cable/server/worker.rb:60:in `block in invoke'
|
129
|
+
GraphqlChannel#make_trigger({"id"=>"updates-2", "value"=>3})
|
130
|
+
[ActionCable] Broadcasting to graphql-event::payload:id:updates-2: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzM\"}"
|
131
|
+
[ActionCable] Broadcasting to graphql-subscription:5f944467-ccfa-4765-9b4a-3bccb29b0b6b: {:result=>{"data"=>{"payload"=>{"value"=>3}}}, :more=>true}
|
132
|
+
GraphqlChannel transmitting {"result"=>{"data"=>{"payload"=>{"value"=>3}}}, "more"=>true} (via streamed from graphql-subscription:5f944467-ccfa-4765-9b4a-3bccb29b0b6b)
|
133
|
+
GraphqlChannel#make_trigger({"id"=>"updates-2", "value"=>4})
|
134
|
+
[ActionCable] Broadcasting to graphql-event::payload:id:updates-2: "4x"
|
135
|
+
[ActionCable] Broadcasting to graphql-subscription:5f944467-ccfa-4765-9b4a-3bccb29b0b6b: {:result=>{"data"=>{"payload"=>{"value"=>400}}}, :more=>true}
|
136
|
+
GraphqlChannel transmitting {"result"=>{"data"=>{"payload"=>{"value"=>400}}}, "more"=>true} (via streamed from graphql-subscription:5f944467-ccfa-4765-9b4a-3bccb29b0b6b)
|
137
|
+
Finished "/cable/" [WebSocket] for 127.0.0.1 at 2018-09-29 14:32:00 -0400
|
138
|
+
GraphqlChannel stopped streaming from graphql-subscription:5f944467-ccfa-4765-9b4a-3bccb29b0b6b
|
139
|
+
GraphqlChannel stopped streaming from graphql-event::payload:id:updates-2
|
140
|
+
-----------------------------------------------------------
|
141
|
+
ActionCableSubscriptionsTest: test_it_handles_subscriptions
|
142
|
+
-----------------------------------------------------------
|
143
|
+
Started GET "/" for 127.0.0.1 at 2018-10-05 11:46:22 -0400
|
144
|
+
Processing by PagesController#show as HTML
|
145
|
+
Rendering pages/show.html within layouts/application
|
146
|
+
Rendered pages/show.html within layouts/application (1.7ms)
|
147
|
+
Completed 200 OK in 254ms (Views: 251.5ms)
|
148
|
+
Started GET "/assets/application-03569c14ba2ebaf689cf2b8eecd6aba17af7402d872a3eca6c4ec8fac4eb31e9.js" for 127.0.0.1 at 2018-10-05 11:46:22 -0400
|
149
|
+
Started GET "/cable" for 127.0.0.1 at 2018-10-05 11:46:22 -0400
|
150
|
+
Started GET "/cable/" [WebSocket] for 127.0.0.1 at 2018-10-05 11:46:22 -0400
|
151
|
+
Successfully upgraded to WebSocket (REQUEST_METHOD: GET, HTTP_CONNECTION: Upgrade, HTTP_UPGRADE: websocket)
|
152
|
+
GraphqlChannel is transmitting the subscription confirmation
|
153
|
+
GraphqlChannel is transmitting the subscription confirmation
|
154
|
+
GraphqlChannel#execute({"query"=>"subscription($id: ID!) { payload(id: $id) { value } }", "variables"=>{"id"=>"updates-2"}})
|
155
|
+
GraphqlChannel#execute({"query"=>"subscription($id: ID!) { payload(id: $id) { value } }", "variables"=>{"id"=>"updates-1"}})
|
156
|
+
GraphqlChannel transmitting {:result=>{"data"=>nil}, :more=>true}
|
157
|
+
GraphqlChannel transmitting {:result=>{"data"=>nil}, :more=>true}
|
158
|
+
GraphqlChannel is streaming from graphql-subscription:6da90bd0-cd94-41db-bf3e-760e37b2873f
|
159
|
+
GraphqlChannel is streaming from graphql-subscription:c781954b-7b9a-4742-9f9c-69b869d85fad
|
160
|
+
GraphqlChannel is streaming from graphql-event::payload:id:updates-2
|
161
|
+
GraphqlChannel is streaming from graphql-event::payload:id:updates-1
|
162
|
+
GraphqlChannel#make_trigger({"id"=>"updates-1", "value"=>1})
|
163
|
+
[ActionCable] Broadcasting to graphql-event::payload:id:updates-1: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzE\"}"
|
164
|
+
[ActionCable] Broadcasting to graphql-subscription:6da90bd0-cd94-41db-bf3e-760e37b2873f: {:result=>{"data"=>{"payload"=>{"value"=>1}}}, :more=>true}
|
165
|
+
GraphqlChannel transmitting {"result"=>{"data"=>{"payload"=>{"value"=>1}}}, "more"=>true} (via streamed from graphql-subscription:6da90bd0-cd94-41db-bf3e-760e37b2873f)
|
166
|
+
GraphqlChannel#make_trigger({"id"=>"updates-1", "value"=>2})
|
167
|
+
[ActionCable] Broadcasting to graphql-event::payload:id:updates-1: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzI\"}"
|
168
|
+
[ActionCable] Broadcasting to graphql-subscription:6da90bd0-cd94-41db-bf3e-760e37b2873f: {:result=>{"data"=>{"payload"=>{"value"=>2}}}, :more=>true}
|
169
|
+
GraphqlChannel transmitting {"result"=>{"data"=>{"payload"=>{"value"=>2}}}, "more"=>true} (via streamed from graphql-subscription:6da90bd0-cd94-41db-bf3e-760e37b2873f)
|
170
|
+
GraphqlChannel#make_trigger({"id"=>"updates-1", "value"=>3})
|
171
|
+
[ActionCable] Broadcasting to graphql-event::payload:id:updates-1: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzM\"}"
|
172
|
+
[ActionCable] Broadcasting to graphql-subscription:6da90bd0-cd94-41db-bf3e-760e37b2873f: {:result=>{"data"=>{"payload"=>{"value"=>3}}}, :more=>true}
|
173
|
+
GraphqlChannel transmitting {"result"=>{"data"=>{"payload"=>{"value"=>3}}}, "more"=>true} (via streamed from graphql-subscription:6da90bd0-cd94-41db-bf3e-760e37b2873f)
|
174
|
+
GraphqlChannel#make_trigger({"id"=>"updates-2", "value"=>1})
|
175
|
+
[ActionCable] Broadcasting to graphql-event::payload:id:updates-2: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzE\"}"
|
176
|
+
[ActionCable] Broadcasting to graphql-subscription:c781954b-7b9a-4742-9f9c-69b869d85fad: {:result=>{"data"=>{"payload"=>{"value"=>1}}}, :more=>true}
|
177
|
+
GraphqlChannel transmitting {"result"=>{"data"=>{"payload"=>{"value"=>1}}}, "more"=>true} (via streamed from graphql-subscription:c781954b-7b9a-4742-9f9c-69b869d85fad)
|
178
|
+
GraphqlChannel#make_trigger({"id"=>"updates-2", "value"=>2})
|
179
|
+
[ActionCable] Broadcasting to graphql-event::payload:id:updates-2: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzI\"}"
|
180
|
+
[ActionCable] Broadcasting to graphql-subscription:c781954b-7b9a-4742-9f9c-69b869d85fad: {:result=>{"data"=>{"payload"=>{"value"=>2}}}, :more=>true}
|
181
|
+
GraphqlChannel transmitting {"result"=>{"data"=>{"payload"=>{"value"=>2}}}, "more"=>true} (via streamed from graphql-subscription:c781954b-7b9a-4742-9f9c-69b869d85fad)
|
182
|
+
Unsubscribing from channel: {"channel":"GraphqlChannel","id":"16644e966c2"}
|
183
|
+
GraphqlChannel stopped streaming from graphql-subscription:6da90bd0-cd94-41db-bf3e-760e37b2873f
|
184
|
+
GraphqlChannel stopped streaming from graphql-event::payload:id:updates-1
|
185
|
+
Could not execute command from ({"command"=>"message", "identifier"=>"{\"channel\":\"GraphqlChannel\",\"id\":\"16644e966c2\"}", "data"=>"{\"id\":\"updates-1\",\"value\":4,\"action\":\"make_trigger\"}"}) [RuntimeError - Unable to find subscription with identifier: {"channel":"GraphqlChannel","id":"16644e966c2"}]: /Users/rmosolgo/.rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/gems/actioncable-5.2.1/lib/action_cable/connection/subscriptions.rb:78:in `find' | /Users/rmosolgo/.rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/gems/actioncable-5.2.1/lib/action_cable/connection/subscriptions.rb:55:in `perform_action' | /Users/rmosolgo/.rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/gems/actioncable-5.2.1/lib/action_cable/connection/subscriptions.rb:19:in `execute_command' | /Users/rmosolgo/.rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/gems/actioncable-5.2.1/lib/action_cable/connection/base.rb:87:in `dispatch_websocket_message' | /Users/rmosolgo/.rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/gems/actioncable-5.2.1/lib/action_cable/server/worker.rb:60:in `block in invoke'
|
186
|
+
GraphqlChannel#make_trigger({"id"=>"updates-2", "value"=>3})
|
187
|
+
[ActionCable] Broadcasting to graphql-event::payload:id:updates-2: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzM\"}"
|
188
|
+
[ActionCable] Broadcasting to graphql-subscription:c781954b-7b9a-4742-9f9c-69b869d85fad: {:result=>{"data"=>{"payload"=>{"value"=>3}}}, :more=>true}
|
189
|
+
GraphqlChannel transmitting {"result"=>{"data"=>{"payload"=>{"value"=>3}}}, "more"=>true} (via streamed from graphql-subscription:c781954b-7b9a-4742-9f9c-69b869d85fad)
|
190
|
+
GraphqlChannel#make_trigger({"id"=>"updates-2", "value"=>4})
|
191
|
+
[ActionCable] Broadcasting to graphql-event::payload:id:updates-2: "4x"
|
192
|
+
[ActionCable] Broadcasting to graphql-subscription:c781954b-7b9a-4742-9f9c-69b869d85fad: {:result=>{"data"=>{"payload"=>{"value"=>400}}}, :more=>true}
|
193
|
+
GraphqlChannel transmitting {"result"=>{"data"=>{"payload"=>{"value"=>400}}}, "more"=>true} (via streamed from graphql-subscription:c781954b-7b9a-4742-9f9c-69b869d85fad)
|
194
|
+
Finished "/cable/" [WebSocket] for 127.0.0.1 at 2018-10-05 11:46:25 -0400
|
195
|
+
GraphqlChannel stopped streaming from graphql-subscription:c781954b-7b9a-4742-9f9c-69b869d85fad
|
196
|
+
GraphqlChannel stopped streaming from graphql-event::payload:id:updates-2
|
197
|
+
-----------------------------------------------------------
|
198
|
+
ActionCableSubscriptionsTest: test_it_handles_subscriptions
|
199
|
+
-----------------------------------------------------------
|
data/spec/dummy/tmp/cache/assets/sprockets/v3.0/4w/4wzXRZrAkwKdgYaSE0pid5eB-fer8vSfSku_NPg4rMA.cache
ADDED
Binary file
|
data/spec/dummy/tmp/cache/assets/sprockets/v3.0/7I/7IHVBiJT06QSpgLpLoJIxboQ0B-D_tMTxsvoezBTV3Q.cache
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
"%��
|
data/spec/dummy/tmp/cache/assets/sprockets/v3.0/8w/8wY_SKagj8wHuwGNAAf6JnQ8joMbC6cEYpHrTAI8Urc.cache
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
"%A��G�{h t�l�m�V���NE���f���
|
data/spec/dummy/tmp/cache/assets/sprockets/v3.0/AK/AKzz1u6bGb4auXcrObA_g5LL-oV0ejNGa448AgAi_WQ.cache
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
I"�/Users/rmosolgo/.rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/gems/actionview-5.2.1/lib/assets/compiled/rails-ujs.js?type=application/javascript&pipeline=self&id=796d21c1f660d0727db2c56f43915a7a091f297126acf936c5ffbbeeae910c17:ET
|
data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ET/ETW4uxvaYpruL8y6_ZptUH82ZowMaHIqvg5WexBFdEM.cache
ADDED
@@ -0,0 +1,3 @@
|
|
1
|
+
[o:Set:
|
2
|
+
@hash}
|
3
|
+
I"environment-version:ETTI"environment-paths;TTI"rails-env;TTI"Zprocessors:type=application/javascript&file_type=application/javascript&pipeline=self;TTI"~file-digest:///Users/rmosolgo/.rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/gems/actionview-5.2.1/lib/assets/compiled/rails-ujs.js;TTF
|
data/spec/dummy/tmp/cache/assets/sprockets/v3.0/F1/F1TWpjjyA56k9Z90n5B3xRn7DUdGjX73QCkYC6k07JQ.cache
ADDED
Binary file
|
data/spec/dummy/tmp/cache/assets/sprockets/v3.0/F8/F8MUNRzORGFgr329fNM0xLaoWCXdv3BIalT7dsvLfjs.cache
ADDED
@@ -0,0 +1,2 @@
|
|
1
|
+
[o:Set:
|
2
|
+
@hash}I"environment-version:ETTI"environment-paths;TTI"rails-env;TTI"Zprocessors:type=application/javascript&file_type=application/javascript&pipeline=self;TTI"8file-digest://app/assets/javascripts/application.js;TTI"$file-digest://app/assets/config;TTI".file-digest://app/assets/config/rails-ujs;TTI")file-digest://app/assets/javascripts;TTI"3file-digest://app/assets/javascripts/rails-ujs;TTI"wfile-digest:///Users/rmosolgo/.rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/gems/actioncable-5.2.1/lib/assets/compiled;TTI"|file-digest:///Users/rmosolgo/.rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/gems/actioncable-5.2.1/lib/assets/compiled/rails-ujs;TTI"vfile-digest:///Users/rmosolgo/.rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/gems/actionview-5.2.1/lib/assets/compiled;TTI"{file-digest:///Users/rmosolgo/.rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/gems/actionview-5.2.1/lib/assets/compiled/rails-ujs;TTI"~file-digest:///Users/rmosolgo/.rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/gems/actionview-5.2.1/lib/assets/compiled/rails-ujs.js;TTI"1file-digest://app/assets/config/action_cable;TTI"6file-digest://app/assets/javascripts/action_cable;TTI"file-digest:///Users/rmosolgo/.rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/gems/actioncable-5.2.1/lib/assets/compiled/action_cable;TTI"�file-digest:///Users/rmosolgo/.rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/gems/actioncable-5.2.1/lib/assets/compiled/action_cable.js;TTF
|
data/spec/dummy/tmp/cache/assets/sprockets/v3.0/KB/KB07ZaKNC5uXJ7TjLi-WqnY6g7dq8wWp_8N3HNjBNxg.cache
ADDED
@@ -0,0 +1,2 @@
|
|
1
|
+
[o:Set:
|
2
|
+
@hash}I"environment-version:ETTI"environment-paths;TTI"rails-env;TTI"Lprocessors:type=application/javascript&file_type=application/javascript;TTI"8file-digest://app/assets/javascripts/application.js;TTI"Zprocessors:type=application/javascript&file_type=application/javascript&pipeline=self;TTI"~file-digest:///Users/rmosolgo/.rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/gems/actionview-5.2.1/lib/assets/compiled/rails-ujs.js;TTI"�file-digest:///Users/rmosolgo/.rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/gems/actioncable-5.2.1/lib/assets/compiled/action_cable.js;TTI"$file-digest://app/assets/config;TTI".file-digest://app/assets/config/rails-ujs;TTI")file-digest://app/assets/javascripts;TTI"3file-digest://app/assets/javascripts/rails-ujs;TTI"wfile-digest:///Users/rmosolgo/.rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/gems/actioncable-5.2.1/lib/assets/compiled;TTI"|file-digest:///Users/rmosolgo/.rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/gems/actioncable-5.2.1/lib/assets/compiled/rails-ujs;TTI"vfile-digest:///Users/rmosolgo/.rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/gems/actionview-5.2.1/lib/assets/compiled;TTI"{file-digest:///Users/rmosolgo/.rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/gems/actionview-5.2.1/lib/assets/compiled/rails-ujs;TTI"1file-digest://app/assets/config/action_cable;TTI"6file-digest://app/assets/javascripts/action_cable;TTI"file-digest:///Users/rmosolgo/.rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/gems/actioncable-5.2.1/lib/assets/compiled/action_cable;TTF
|
data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ms/MsKSimH_UCB-H1tLvDABDHuvGciuoW6kVqQWDrXU5FQ.cache
ADDED
Binary file
|
data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Mt/Mtci-Kim50aPOmeClD4AIicKn1d1WJ0n454IjSd94sk.cache
ADDED
Binary file
|
data/spec/dummy/tmp/cache/assets/sprockets/v3.0/QH/QHt3Tc1Y6M66Oo_pDuMyWrQNs4Pp3SMeZR5K1wJj2Ts.cache
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
I"�app/assets/javascripts/application.js?type=application/javascript&id=2ee40e48961834681557f3d62ba66cca730386fc65c8e753fcc131c5eb57f691:ET
|
data/spec/dummy/tmp/cache/assets/sprockets/v3.0/XU/XU4k1OXnfMils5SrirorPvDSyDSqiOWLZNtmAH1HH8k.cache
ADDED
Binary file
|
data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ZI/ZIof7mZxWWCnraIFOCuV6a8QRWzKJXJnx2Xd7C0ZyX0.cache
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
I"�app/assets/javascripts/application.js?type=application/javascript&pipeline=self&id=cc953a7e5d4fae38988cd3dedb6bc5c7d501af2190fe07930d5a3ac7b8f03ad7:ET
|
data/spec/dummy/tmp/cache/assets/sprockets/v3.0/cG/cGc_puuPS5pZKgUcy1Y_i1L6jl5UtsiIrMH59rTzR6c.cache
ADDED
@@ -0,0 +1,3 @@
|
|
1
|
+
[o:Set:
|
2
|
+
@hash}
|
3
|
+
I"environment-version:ETTI"environment-paths;TTI"rails-env;TTI"Zprocessors:type=application/javascript&file_type=application/javascript&pipeline=self;TTI"�file-digest:///Users/rmosolgo/.rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/gems/actioncable-5.2.1/lib/assets/compiled/action_cable.js;TTF
|
data/spec/dummy/tmp/cache/assets/sprockets/v3.0/df/dfro_B6bx3KP1Go-7jEOqqZ2j4hVRseXIc3es9PKQno.cache
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
I"�/Users/rmosolgo/.rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/gems/actioncable-5.2.1/lib/assets/compiled/action_cable.js?type=application/javascript&pipeline=self&id=511553fd80002b90bc2b116eebc32ea1592732ff16395e6f2424f75f0ffc1870:ET
|
data/spec/dummy/tmp/cache/assets/sprockets/v3.0/jO/jO1DfbqnG0mTULsjJJANc3fefrG2zt7DIMmcptMT628.cache
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
"%�d�-�K���`���8Y��3�/Y����a~K
|
data/spec/dummy/tmp/cache/assets/sprockets/v3.0/pE/pE7gO6pQ-z187Swb4hT554wmqsq-cNzgPWLrCz-LQQQ.cache
ADDED
Binary file
|
data/spec/dummy/tmp/cache/assets/sprockets/v3.0/r9/r9iU1l58a6rxkZSW5RSC52_tD-_UQuHxoMVnkfJ7Mhs.cache
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
"%i����O����H�3
|
data/spec/dummy/tmp/cache/assets/sprockets/v3.0/xi/xitPPFfPIyDMpaznV0sBBcw8eSCV8PJcLLWin78sCgE.cache
ADDED
Binary file
|
@@ -48,6 +48,9 @@ describe GraphQL::Authorization do
|
|
48
48
|
end
|
49
49
|
|
50
50
|
def authorized?(object, context)
|
51
|
+
if object == :raise
|
52
|
+
raise GraphQL::UnauthorizedFieldError.new("raised authorized field error", object: object)
|
53
|
+
end
|
51
54
|
super && object != :hide && object != :replace
|
52
55
|
end
|
53
56
|
end
|
@@ -149,8 +152,13 @@ describe GraphQL::Authorization do
|
|
149
152
|
|
150
153
|
class UnauthorizedObject < BaseObject
|
151
154
|
def self.authorized?(value, context)
|
155
|
+
if context[:raise]
|
156
|
+
raise GraphQL::UnauthorizedError.new("raised authorized object error", object: value.object)
|
157
|
+
end
|
152
158
|
super && !context[:hide]
|
153
159
|
end
|
160
|
+
|
161
|
+
field :value, String, null: false, method: :itself
|
154
162
|
end
|
155
163
|
|
156
164
|
class UnauthorizedBox < BaseObject
|
@@ -389,6 +397,8 @@ describe GraphQL::Authorization do
|
|
389
397
|
err.object.replacement
|
390
398
|
elsif err.object == :replace
|
391
399
|
33
|
400
|
+
elsif err.object == :raise_from_object
|
401
|
+
raise GraphQL::ExecutionError, err.message
|
392
402
|
else
|
393
403
|
raise GraphQL::ExecutionError, "Unauthorized #{err.type.graphql_name}: #{err.object.inspect}"
|
394
404
|
end
|
@@ -398,11 +408,16 @@ describe GraphQL::Authorization do
|
|
398
408
|
end
|
399
409
|
|
400
410
|
class SchemaWithFieldHook < GraphQL::Schema
|
411
|
+
if TESTING_INTERPRETER
|
412
|
+
use GraphQL::Execution::Interpreter
|
413
|
+
end
|
401
414
|
query(Query)
|
402
415
|
|
403
416
|
def self.unauthorized_field(err)
|
404
417
|
if err.object == :replace
|
405
418
|
42
|
419
|
+
elsif err.object == :raise
|
420
|
+
raise GraphQL::ExecutionError, "#{err.message} in field #{err.field.name}"
|
406
421
|
else
|
407
422
|
raise GraphQL::ExecutionError, "Unauthorized field #{err.field.graphql_name} on #{err.type.graphql_name}: #{err.object}"
|
408
423
|
end
|
@@ -663,6 +678,14 @@ describe GraphQL::Authorization do
|
|
663
678
|
assert_equal ["Unauthorized field unauthorized on Query: hide"], response["errors"].map { |e| e["message"] }
|
664
679
|
end
|
665
680
|
end
|
681
|
+
|
682
|
+
describe "when the field authorization raises an UnauthorizedFieldError" do
|
683
|
+
it "receives the raised error" do
|
684
|
+
query = "{ unauthorized }"
|
685
|
+
response = AuthTest::SchemaWithFieldHook.execute(query, root_value: :raise)
|
686
|
+
assert_equal ["raised authorized field error in field unauthorized"], response["errors"].map { |e| e["message"] }
|
687
|
+
end
|
688
|
+
end
|
666
689
|
end
|
667
690
|
|
668
691
|
describe "with an unauthorized field hook not configured" do
|
@@ -893,23 +916,33 @@ describe GraphQL::Authorization do
|
|
893
916
|
assert_equal [{"value" => "z"}, {"value" => "z2"}, nil, nil], res["data"]["unauthorizedLazyListInterface"]
|
894
917
|
end
|
895
918
|
|
896
|
-
|
897
|
-
|
898
|
-
|
899
|
-
|
919
|
+
describe "with an unauthorized field hook configured" do
|
920
|
+
it "replaces objects from the unauthorized_object hook" do
|
921
|
+
query = "{ replacedObject { replaced } }"
|
922
|
+
res = auth_execute(query, context: { replace_me: true })
|
923
|
+
assert_equal true, res["data"]["replacedObject"]["replaced"]
|
900
924
|
|
901
|
-
|
902
|
-
|
903
|
-
|
925
|
+
res = auth_execute(query, context: { replace_me: false })
|
926
|
+
assert_equal false, res["data"]["replacedObject"]["replaced"]
|
927
|
+
end
|
904
928
|
|
905
|
-
|
906
|
-
|
907
|
-
|
908
|
-
|
929
|
+
it "works when the query hook returns false and there's no root object" do
|
930
|
+
query = "{ __typename }"
|
931
|
+
res = auth_execute(query)
|
932
|
+
assert_equal "Query", res["data"]["__typename"]
|
909
933
|
|
910
|
-
|
911
|
-
|
912
|
-
|
934
|
+
unauth_res = auth_execute(query, context: { query_unauthorized: true })
|
935
|
+
assert_nil unauth_res["data"]
|
936
|
+
assert_equal [{"message"=>"Unauthorized Query: nil"}], unauth_res["errors"]
|
937
|
+
end
|
938
|
+
|
939
|
+
describe "when the object authorization raises an UnauthorizedFieldError" do
|
940
|
+
it "receives the raised error" do
|
941
|
+
query = "{ unauthorizedObject { value } }"
|
942
|
+
response = auth_execute(query, context: { raise: true }, root_value: :raise_from_object)
|
943
|
+
assert_equal ["raised authorized object error"], response["errors"].map { |e| e["message"] }
|
944
|
+
end
|
945
|
+
end
|
913
946
|
end
|
914
947
|
end
|
915
948
|
|
@@ -20,6 +20,7 @@ describe GraphQL::Execution::Lookahead do
|
|
20
20
|
end
|
21
21
|
|
22
22
|
class BirdGenus < GraphQL::Schema::Object
|
23
|
+
field :name, String, null: false
|
23
24
|
field :latin_name, String, null: false
|
24
25
|
field :id, ID, null: false, method: :latin_name
|
25
26
|
end
|
@@ -69,7 +70,7 @@ describe GraphQL::Execution::Lookahead do
|
|
69
70
|
|
70
71
|
class LookaheadInstrumenter
|
71
72
|
def self.before_query(query)
|
72
|
-
query.context[:
|
73
|
+
query.context[:root_lookahead_selections] = query.lookahead.selections
|
73
74
|
end
|
74
75
|
|
75
76
|
def self.after_query(q)
|
@@ -265,7 +266,11 @@ describe GraphQL::Execution::Lookahead do
|
|
265
266
|
res = LookaheadTest::Schema.execute(query_str, context: context)
|
266
267
|
refute res.key?("errors")
|
267
268
|
assert_equal 2, context[:lookahead_latin_name]
|
268
|
-
assert_equal [:find_bird_species], context[:
|
269
|
+
assert_equal [:find_bird_species], context[:root_lookahead_selections].map(&:name).uniq
|
270
|
+
assert_equal(
|
271
|
+
[{ by_name: "Cardinal" }, { by_name: "Scarlet Tanager" }, { by_name: "Great Blue Heron" }],
|
272
|
+
context[:root_lookahead_selections].map(&:arguments)
|
273
|
+
)
|
269
274
|
end
|
270
275
|
|
271
276
|
it "works for invalid queries" do
|
@@ -350,6 +355,28 @@ describe GraphQL::Execution::Lookahead do
|
|
350
355
|
assert_equal [:name, :similar_species], root_selections.first.selections.map(&:name), "Subselections are merged"
|
351
356
|
end
|
352
357
|
|
358
|
+
it "avoids merging selections for same field name on distinct types" do
|
359
|
+
query = GraphQL::Query.new(LookaheadTest::Schema, <<-GRAPHQL)
|
360
|
+
query {
|
361
|
+
node(id: "Cardinal") {
|
362
|
+
... on BirdSpecies {
|
363
|
+
name
|
364
|
+
}
|
365
|
+
... on BirdGenus {
|
366
|
+
name
|
367
|
+
}
|
368
|
+
id
|
369
|
+
}
|
370
|
+
}
|
371
|
+
GRAPHQL
|
372
|
+
|
373
|
+
node_lookahead = query.lookahead.selection("node")
|
374
|
+
assert_equal(
|
375
|
+
[[LookaheadTest::Node, :id], [LookaheadTest::BirdSpecies, :name], [LookaheadTest::BirdGenus, :name]],
|
376
|
+
node_lookahead.selections.map { |s| [s.owner_type, s.name] }
|
377
|
+
)
|
378
|
+
end
|
379
|
+
|
353
380
|
it "works for missing selections" do
|
354
381
|
ast_node = document.definitions.first.selections.first
|
355
382
|
field = LookaheadTest::Query.fields["findBirdSpecies"]
|
@@ -2,13 +2,15 @@
|
|
2
2
|
require "spec_helper"
|
3
3
|
|
4
4
|
describe GraphQL::Function do
|
5
|
+
TestFuncPayload = GraphQL::ObjectType.define do
|
6
|
+
name "TestFuncPayload"
|
7
|
+
field :name, types.String, hash_key: :name
|
8
|
+
end
|
9
|
+
|
5
10
|
class TestFunc < GraphQL::Function
|
6
11
|
argument :name, GraphQL::STRING_TYPE
|
7
12
|
argument :age, types.Int
|
8
|
-
type
|
9
|
-
name "TestFuncPayload"
|
10
|
-
field :name, types.String, hash_key: :name
|
11
|
-
end
|
13
|
+
type TestFuncPayload
|
12
14
|
|
13
15
|
description "Returns the string you give it"
|
14
16
|
deprecation_reason "It's useless"
|
@@ -18,6 +20,19 @@ describe GraphQL::Function do
|
|
18
20
|
end
|
19
21
|
end
|
20
22
|
|
23
|
+
class TestFuncConn < GraphQL::Function
|
24
|
+
argument :name, GraphQL::STRING_TYPE
|
25
|
+
argument :age, types.Int
|
26
|
+
type TestFuncPayload.connection_type
|
27
|
+
|
28
|
+
description "Returns the string you give it"
|
29
|
+
deprecation_reason "It's useless"
|
30
|
+
complexity 9
|
31
|
+
def call(o, a, c)
|
32
|
+
[{ name: a[:name] }]
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
21
36
|
describe "function API" do
|
22
37
|
it "exposes required info" do
|
23
38
|
f = TestFunc.new
|
@@ -49,7 +64,7 @@ describe GraphQL::Function do
|
|
49
64
|
query_type = GraphQL::ObjectType.define do
|
50
65
|
name "Query"
|
51
66
|
field :test, function: TestFunc.new
|
52
|
-
connection :testConn, function:
|
67
|
+
connection :testConn, function: TestFuncConn.new
|
53
68
|
end
|
54
69
|
|
55
70
|
relay_mutation = GraphQL::Relay::Mutation.define do
|
@@ -86,6 +101,14 @@ describe GraphQL::Function do
|
|
86
101
|
assert_equal "graphql", res["data"]["test"]["name"]
|
87
102
|
end
|
88
103
|
|
104
|
+
it "can be used as a connection" do
|
105
|
+
query_str = <<-GRAPHQL
|
106
|
+
{ testConn(name: "graphql") { edges { node { name } } } }
|
107
|
+
GRAPHQL
|
108
|
+
res = schema.execute(query_str)
|
109
|
+
assert_equal "graphql", res["data"]["testConn"]["edges"][0]["node"]["name"]
|
110
|
+
end
|
111
|
+
|
89
112
|
it "can be used as a mutation" do
|
90
113
|
query_str = <<-GRAPHQL
|
91
114
|
mutation { test(input: {clientMutationId: "123", name: "graphql"}) { name, clientMutationId } }
|