-require 'test_helper'
-require 'oj'
require 'database_cleaner'
+require 'safe_json'
+require 'test_helper'
DatabaseCleaner.strategy = :deletion
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}")
+ _system('passenger', 'start', '-d',
+ "-p#{@@port}",
+ "--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
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
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
end
ws.on :message do |event|
- d = Oj.strict_load event.data
+ d = SafeJSON.load event.data
status = d["status"]
ws.close
end
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"]
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"]
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"]
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"]
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"]
test "connect, subscribe, ask events starting at seq num" do
state = 1
- human = nil
- human_ev_uuid = nil
authorize_with :active
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"]
assert_equal expect_next_logs[1].object_uuid, l2
end
- test "connect, subscribe, get event, unsubscribe" do
- slow_test
+ slow_test "connect, subscribe, get event, unsubscribe" do
state = 1
spec = nil
spec_ev_uuid = nil
- filter_id = nil
authorize_with :active
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"]
assert_equal spec.uuid, spec_ev_uuid
end
- test "connect, subscribe, get event, unsubscribe with filter" do
- slow_test
+ slow_test "connect, subscribe, get event, unsubscribe with filter" do
state = 1
spec = nil
spec_ev_uuid = nil
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"]
end
- test "connect, subscribe, get event, try to unsubscribe with bogus filter" do
- slow_test
+ slow_test "connect, subscribe, get event, try to unsubscribe with bogus filter" do
state = 1
spec = nil
spec_ev_uuid = nil
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"]
assert_equal human.uuid, human_ev_uuid
end
-
-
- test "connected, not subscribed, no event" do
- slow_test
+ slow_test "connected, not subscribed, no event" do
authorize_with :active
ws_helper(token: :active, timeout: false) do |ws|
end
end
- test "connected, not authorized to see event" do
- slow_test
+ slow_test "connected, not authorized to see event" do
state = 1
authorize_with :admin
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"]
end
ws.on :message do |event|
- d = Oj.strict_load event.data
+ d = SafeJSON.load event.data
status = d["status"]
ws.close
end
end
ws.on :message do |event|
- d = Oj.strict_load event.data
+ d = SafeJSON.load event.data
status = d["status"]
ws.close
end
end
ws.on :message do |event|
- d = Oj.strict_load event.data
+ d = SafeJSON.load event.data
status = d["status"]
ws.close
end
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"]
end
- test "connect, subscribe, lots of events" do
- slow_test
+ slow_test "connect, subscribe, lots of events" do
state = 1
event_count = 0
log_start = Log.order(:id).last.id
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
test "connect, subscribe with invalid filter" do
state = 1
- human = nil
- human_ev_uuid = nil
authorize_with :active
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"]