aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKasper Timm Hansen <kaspth@gmail.com>2015-08-24 12:02:41 +0200
committerKasper Timm Hansen <kaspth@gmail.com>2015-08-24 12:02:41 +0200
commitb91d0e8f7d309500df79bffa9017fa2d9fbf2c05 (patch)
treecdd30dfd83ffea3d0b9e9b2b4f0b16f15cccfb9c
parent5ee5e419be5c190aaec001c497db4aa76264b70e (diff)
parentc74f8df1217e85d2418da43c74c205b888bc2600 (diff)
downloadrails-b91d0e8f7d309500df79bffa9017fa2d9fbf2c05.tar.gz
rails-b91d0e8f7d309500df79bffa9017fa2d9fbf2c05.tar.bz2
rails-b91d0e8f7d309500df79bffa9017fa2d9fbf2c05.zip
Merge pull request #65 from mrlhumphreys/support-identifiers-without-to-global-id
Support connection identifiers that don't implement to_global_id
-rw-r--r--lib/action_cable/connection/identification.rb2
-rw-r--r--test/connection/string_identifier_test.rb39
2 files changed, 40 insertions, 1 deletions
diff --git a/lib/action_cable/connection/identification.rb b/lib/action_cable/connection/identification.rb
index 1be6f9ac76..701e6885ad 100644
--- a/lib/action_cable/connection/identification.rb
+++ b/lib/action_cable/connection/identification.rb
@@ -27,7 +27,7 @@ module ActionCable
private
def connection_gid(ids)
- ids.map { |o| o.to_global_id.to_s }.sort.join(":")
+ ids.map { |o| (o.try(:to_global_id) || o).to_s }.sort.join(":")
end
end
end
diff --git a/test/connection/string_identifier_test.rb b/test/connection/string_identifier_test.rb
new file mode 100644
index 0000000000..87a9025008
--- /dev/null
+++ b/test/connection/string_identifier_test.rb
@@ -0,0 +1,39 @@
+require 'test_helper'
+require 'stubs/test_server'
+
+class ActionCable::Connection::StringIdentifierTest < ActiveSupport::TestCase
+ class Connection < ActionCable::Connection::Base
+ identified_by :current_token
+
+ def connect
+ self.current_token = "random-string"
+ end
+ end
+
+ setup do
+ @server = TestServer.new
+
+ env = Rack::MockRequest.env_for "/test", 'HTTP_CONNECTION' => 'upgrade', 'HTTP_UPGRADE' => 'websocket'
+ @connection = Connection.new(@server, env)
+ end
+
+ test "connection identifier" do
+ open_connection_with_stubbed_pubsub
+ assert_equal "random-string", @connection.connection_identifier
+ end
+
+ protected
+ def open_connection_with_stubbed_pubsub
+ @server.stubs(:pubsub).returns(stub_everything('pubsub'))
+ open_connection
+ end
+
+ def open_connection
+ @connection.process
+ @connection.send :on_open
+ end
+
+ def close_connection
+ @connection.send :on_close
+ end
+end