aboutsummaryrefslogtreecommitdiffstats
path: root/test/connection/base_test.rb
diff options
context:
space:
mode:
Diffstat (limited to 'test/connection/base_test.rb')
-rw-r--r--test/connection/base_test.rb64
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