diff options
Diffstat (limited to 'test/connection/base_test.rb')
-rw-r--r-- | test/connection/base_test.rb | 64 |
1 files changed, 63 insertions, 1 deletions
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 |