Merge branch 'master' into 8465-stderr-redirection
[arvados.git] / services / api / test / integration / websocket_test.rb
index 8fd968576583b197328c7c049a9aaa0c4a0471d9..549bbc6f9979d02c9f2f3bccd88cb7a078099c81 100644 (file)
@@ -1,6 +1,6 @@
-require 'test_helper'
-require 'oj'
 require 'database_cleaner'
+require 'safe_json'
+require 'test_helper'
 
 DatabaseCleaner.strategy = :deletion
 
@@ -19,19 +19,20 @@ class WebsocketTest < ActionDispatch::IntegrationTest
     s = TCPServer.new('0.0.0.0', 0)
     @@port = s.addr[1]
     s.close
-    pidfile = "tmp/pids/passenger.#{@@port}.pid"
+    @@pidfile = "tmp/pids/passenger.#{@@port}.pid"
     DatabaseCleaner.start
     Dir.chdir(Rails.root) do |apidir|
       # Only passenger seems to be able to run the websockets server
       # successfully.
       _system('passenger', 'start', '-d',
               "-p#{@@port}",
-              "--log-file", "/dev/stderr")
+              "--log-file", "/dev/stderr",
+              "--pid-file", @@pidfile)
       timeout = Time.now.tv_sec + 10
       begin
         sleep 0.2
         begin
-          server_pid = IO.read(pidfile).to_i
+          server_pid = IO.read(@@pidfile).to_i
           good_pid = (server_pid > 0) and (Process.kill(0, pid) rescue false)
         rescue Errno::ENOENT
           good_pid = false
@@ -46,7 +47,8 @@ class WebsocketTest < ActionDispatch::IntegrationTest
 
   def self.shutdown
     Dir.chdir(Rails.root) do
-      _system('passenger', 'stop', "-p#{@@port}")
+      _system('passenger', 'stop', "-p#{@@port}",
+              "--pid-file", @@pidfile)
     end
     # DatabaseCleaner leaves the database empty. Prefer to leave it full.
     dc = DatabaseController.new
@@ -110,7 +112,7 @@ class WebsocketTest < ActionDispatch::IntegrationTest
 
     ws_helper do |ws|
       ws.on :message do |event|
-        d = Oj.strict_load event.data
+        d = SafeJSON.load event.data
         status = d["status"]
         ws.close
       end
@@ -128,7 +130,7 @@ class WebsocketTest < ActionDispatch::IntegrationTest
       end
 
       ws.on :message do |event|
-        d = Oj.strict_load event.data
+        d = SafeJSON.load event.data
         status = d["status"]
         ws.close
       end
@@ -150,7 +152,7 @@ class WebsocketTest < ActionDispatch::IntegrationTest
       end
 
       ws.on :message do |event|
-        d = Oj.strict_load event.data
+        d = SafeJSON.load event.data
         case state
         when 1
           assert_equal 200, d["status"]
@@ -187,7 +189,7 @@ class WebsocketTest < ActionDispatch::IntegrationTest
       end
 
       ws.on :message do |event|
-        d = Oj.strict_load event.data
+        d = SafeJSON.load event.data
         case state
         when 1
           assert_equal 200, d["status"]
@@ -227,7 +229,7 @@ class WebsocketTest < ActionDispatch::IntegrationTest
       end
 
       ws.on :message do |event|
-        d = Oj.strict_load event.data
+        d = SafeJSON.load event.data
         case state
         when 1
           assert_equal 200, d["status"]
@@ -266,7 +268,7 @@ class WebsocketTest < ActionDispatch::IntegrationTest
       end
 
       ws.on :message do |event|
-        d = Oj.strict_load event.data
+        d = SafeJSON.load event.data
         case state
         when 1
           assert_equal 200, d["status"]
@@ -310,7 +312,7 @@ class WebsocketTest < ActionDispatch::IntegrationTest
       end
 
       ws.on :message do |event|
-        d = Oj.strict_load event.data
+        d = SafeJSON.load event.data
         case state
         when 1
           assert_equal 200, d["status"]
@@ -335,8 +337,6 @@ class WebsocketTest < ActionDispatch::IntegrationTest
 
   test "connect, subscribe, ask events starting at seq num" do
     state = 1
-    human = nil
-    human_ev_uuid = nil
 
     authorize_with :active
 
@@ -350,7 +350,7 @@ class WebsocketTest < ActionDispatch::IntegrationTest
       end
 
       ws.on :message do |event|
-        d = Oj.strict_load event.data
+        d = SafeJSON.load event.data
         case state
         when 1
           assert_equal 200, d["status"]
@@ -379,7 +379,6 @@ class WebsocketTest < ActionDispatch::IntegrationTest
     state = 1
     spec = nil
     spec_ev_uuid = nil
-    filter_id = nil
 
     authorize_with :active
 
@@ -395,7 +394,7 @@ class WebsocketTest < ActionDispatch::IntegrationTest
       end
 
       ws.on :message do |event|
-        d = Oj.strict_load event.data
+        d = SafeJSON.load event.data
         case state
         when 1
           assert_equal 200, d["status"]
@@ -443,7 +442,7 @@ class WebsocketTest < ActionDispatch::IntegrationTest
       end
 
       ws.on :message do |event|
-        d = Oj.strict_load event.data
+        d = SafeJSON.load event.data
         case state
         when 1
           assert_equal 200, d["status"]
@@ -488,7 +487,7 @@ class WebsocketTest < ActionDispatch::IntegrationTest
       end
 
       ws.on :message do |event|
-        d = Oj.strict_load event.data
+        d = SafeJSON.load event.data
         case state
         when 1
           assert_equal 200, d["status"]
@@ -558,7 +557,7 @@ class WebsocketTest < ActionDispatch::IntegrationTest
       end
 
       ws.on :message do |event|
-        d = Oj.strict_load event.data
+        d = SafeJSON.load event.data
         case state
         when 1
           assert_equal 200, d["status"]
@@ -582,7 +581,7 @@ class WebsocketTest < ActionDispatch::IntegrationTest
       end
 
       ws.on :message do |event|
-        d = Oj.strict_load event.data
+        d = SafeJSON.load event.data
         status = d["status"]
         ws.close
       end
@@ -600,7 +599,7 @@ class WebsocketTest < ActionDispatch::IntegrationTest
       end
 
       ws.on :message do |event|
-        d = Oj.strict_load event.data
+        d = SafeJSON.load event.data
         status = d["status"]
         ws.close
       end
@@ -618,7 +617,7 @@ class WebsocketTest < ActionDispatch::IntegrationTest
       end
 
       ws.on :message do |event|
-        d = Oj.strict_load event.data
+        d = SafeJSON.load event.data
         status = d["status"]
         ws.close
       end
@@ -641,7 +640,7 @@ class WebsocketTest < ActionDispatch::IntegrationTest
       end
 
       ws.on :message do |event|
-        d = Oj.strict_load event.data
+        d = SafeJSON.load event.data
         case state
         when (1..Rails.configuration.websocket_max_filters)
           assert_equal 200, d["status"]
@@ -676,13 +675,13 @@ class WebsocketTest < ActionDispatch::IntegrationTest
       end
 
       ws.on :message do |event|
-        d = Oj.strict_load event.data
+        d = SafeJSON.load event.data
         case state
         when 1
           assert_equal 200, d["status"]
           ActiveRecord::Base.transaction do
             (1..202).each do
-              spec = Specimen.create
+              Specimen.create
             end
           end
           state = 2
@@ -703,8 +702,6 @@ class WebsocketTest < ActionDispatch::IntegrationTest
 
   test "connect, subscribe with invalid filter" do
     state = 1
-    human = nil
-    human_ev_uuid = nil
 
     authorize_with :active
 
@@ -715,12 +712,12 @@ class WebsocketTest < ActionDispatch::IntegrationTest
       end
 
       ws.on :message do |event|
-        d = Oj.strict_load event.data
+        d = SafeJSON.load event.data
         case state
         when 1
           assert_equal 200, d["status"]
           Specimen.create
-          human = Human.create
+          Human.create
           state = 2
         when 2
           assert_equal 500, d["status"]