X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/6381b9e85f278b0c8cb45ffccd89ca1b1bc4d3ee..21006cfaf6d4d0ac3884a72803a8723bc4bb76fb:/services/api/test/integration/websocket_test.rb diff --git a/services/api/test/integration/websocket_test.rb b/services/api/test/integration/websocket_test.rb index 9179acd680..c4d6d5eb7e 100644 --- a/services/api/test/integration/websocket_test.rb +++ b/services/api/test/integration/websocket_test.rb @@ -84,7 +84,7 @@ class WebsocketTest < ActionDispatch::IntegrationTest assert_equal 200, status end - test "connect, subscribe, get event" do + def subscribe_test state = 1 spec = nil ev_uuid = nil @@ -115,6 +115,10 @@ class WebsocketTest < ActionDispatch::IntegrationTest assert_equal spec.uuid, ev_uuid end + test "connect, subscribe, get event" do + subscribe_test() + end + test "connect, subscribe, get two events" do state = 1 spec = nil @@ -646,4 +650,45 @@ class WebsocketTest < ActionDispatch::IntegrationTest end + test "connect, subscribe with invalid filter" do + state = 1 + human = nil + human_ev_uuid = nil + + authorize_with :admin + + ws_helper :admin do |ws| + ws.on :open do |event| + # test that #6451 is fixed (invalid filter crashes websockets) + ws.send ({method: 'subscribe', filters: [['object_blarg', 'is_a', 'arvados#human']]}.to_json) + end + + ws.on :message do |event| + d = Oj.load event.data + case state + when 1 + assert_equal 200, d["status"] + Specimen.create + human = Human.create + state = 2 + when 2 + assert_equal 500, d["status"] + state = 3 + ws.close + when 3 + assert false, "Should not get any more events" + end + end + + end + + assert_equal 3, state + + # Try connecting again, ensure that websockets server is still running and + # didn't crash per #6451 + subscribe_test() + + end + + end