From edc68d7bf63bb40d440213a449031c1f07a1f95f Mon Sep 17 00:00:00 2001 From: Pratik Naik Date: Sun, 12 Jul 2015 11:44:46 -0500 Subject: More connection tests --- test/connection/base_test.rb | 64 ++++++++++++++++++++++++++++++++++++++++++- test/stubs/test_connection.rb | 5 ---- test/stubs/test_server.rb | 2 ++ 3 files changed, 65 insertions(+), 6 deletions(-) (limited to 'test') diff --git a/test/connection/base_test.rb b/test/connection/base_test.rb index 66e303a804..2f008652ee 100644 --- a/test/connection/base_test.rb +++ b/test/connection/base_test.rb @@ -2,11 +2,24 @@ require 'test_helper' require 'stubs/test_server' class ActionCable::Connection::BaseTest < ActiveSupport::TestCase + class Connection < ActionCable::Connection::Base + attr_reader :websocket, :heartbeat, :subscriptions, :message_buffer, :connected + + def connect + @connected = true + end + + def disconnect + @connected = false + end + end + setup do @server = TestServer.new env = Rack::MockRequest.env_for "/test", 'HTTP_CONNECTION' => 'upgrade', 'HTTP_UPGRADE' => 'websocket' - @connection = ActionCable::Connection::Base.new(@server, env) + @connection = Connection.new(@server, env) + @response = @connection.process end test "making a connection with invalid headers" do @@ -14,4 +27,53 @@ class ActionCable::Connection::BaseTest < ActiveSupport::TestCase response = connection.process assert_equal 404, response[0] end + + test "websocket connection" do + assert @connection.websocket.possible? + assert @connection.websocket.alive? + end + + test "rack response" do + assert_equal [ -1, {}, [] ], @response + end + + test "on connection open" do + assert ! @connection.connected + + EventMachine.expects(:add_periodic_timer) + @connection.websocket.expects(:transmit).with(regexp_matches(/\_ping/)) + @connection.message_buffer.expects(:process!) + + @connection.send :on_open + + assert_equal [ @connection ], @server.connections + assert @connection.connected + end + + test "on connection close" do + # Setup the connection + EventMachine.stubs(:add_periodic_timer).returns(true) + @connection.send :on_open + assert @connection.connected + + EventMachine.expects(:cancel_timer) + @connection.subscriptions.expects(:unsubscribe_from_all) + @connection.send :on_close + + assert ! @connection.connected + assert_equal [], @server.connections + end + + test "connection statistics" do + statistics = @connection.statistics + + assert statistics[:identifier].blank? + assert_kind_of Time, statistics[:started_at] + assert_equal [], statistics[:subscriptions] + end + + test "explicitly closing a connection" do + @connection.websocket.expects(:close) + @connection.close + end end diff --git a/test/stubs/test_connection.rb b/test/stubs/test_connection.rb index 1c353f9ee3..384abc5e76 100644 --- a/test/stubs/test_connection.rb +++ b/test/stubs/test_connection.rb @@ -18,9 +18,4 @@ class TestConnection def last_transmission @transmissions.last end - - # Disable async in tests - def send_async(method, *arguments) - send method, *arguments - end end diff --git a/test/stubs/test_server.rb b/test/stubs/test_server.rb index aec80859c3..2a7ac3e927 100644 --- a/test/stubs/test_server.rb +++ b/test/stubs/test_server.rb @@ -1,6 +1,8 @@ require 'ostruct' class TestServer + include ActionCable::Server::Connections + attr_reader :logger, :config def initialize -- cgit v1.2.3