aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorDavid Heinemeier Hansson <david@loudthinking.com>2015-12-11 17:22:56 +0100
committerDavid Heinemeier Hansson <david@loudthinking.com>2015-12-11 17:22:56 +0100
commita86d50633939efead3a057302210dc25ee614b2f (patch)
tree44b9355919fb6eadd957ed9f932f58312dc7cc75 /test
parentcf4d9aa992f99ca19fd32446d081ba7d145fbeae (diff)
parent952887a8bd1fc1e197a482b01c6b1b1ccbcdba2d (diff)
downloadrails-a86d50633939efead3a057302210dc25ee614b2f.tar.gz
rails-a86d50633939efead3a057302210dc25ee614b2f.tar.bz2
rails-a86d50633939efead3a057302210dc25ee614b2f.zip
Merge pull request #115 from habermann24/master
Fix an error when using multiple gid identifiers
Diffstat (limited to 'test')
-rw-r--r--test/connection/multiple_identifiers_test.rb41
-rw-r--r--test/stubs/global_id.rb8
-rw-r--r--test/stubs/room.rb2
-rw-r--r--test/stubs/user.rb6
4 files changed, 55 insertions, 2 deletions
diff --git a/test/connection/multiple_identifiers_test.rb b/test/connection/multiple_identifiers_test.rb
new file mode 100644
index 0000000000..55a9f96cb3
--- /dev/null
+++ b/test/connection/multiple_identifiers_test.rb
@@ -0,0 +1,41 @@
+require 'test_helper'
+require 'stubs/test_server'
+require 'stubs/user'
+
+class ActionCable::Connection::MultipleIdentifiersTest < ActionCable::TestCase
+ class Connection < ActionCable::Connection::Base
+ identified_by :current_user, :current_room
+
+ def connect
+ self.current_user = User.new "lifo"
+ self.current_room = Room.new "my", "room"
+ end
+ end
+
+ test "multiple connection identifiers" do
+ run_in_eventmachine do
+ open_connection_with_stubbed_pubsub
+ assert_equal "Room#my-room:User#lifo", @connection.connection_identifier
+ end
+ end
+
+ protected
+ def open_connection_with_stubbed_pubsub
+ server = TestServer.new
+ server.stubs(:pubsub).returns(stub_everything('pubsub'))
+
+ open_connection server: server
+ end
+
+ def open_connection(server:)
+ env = Rack::MockRequest.env_for "/test", 'HTTP_CONNECTION' => 'upgrade', 'HTTP_UPGRADE' => 'websocket'
+ @connection = Connection.new(server, env)
+
+ @connection.process
+ @connection.send :on_open
+ end
+
+ def close_connection
+ @connection.send :on_close
+ end
+end
diff --git a/test/stubs/global_id.rb b/test/stubs/global_id.rb
new file mode 100644
index 0000000000..334f0d03e8
--- /dev/null
+++ b/test/stubs/global_id.rb
@@ -0,0 +1,8 @@
+class GlobalID
+ attr_reader :uri
+ delegate :to_param, :to_s, to: :uri
+
+ def initialize(gid, options = {})
+ @uri = gid
+ end
+end
diff --git a/test/stubs/room.rb b/test/stubs/room.rb
index 246d6a98af..cd66a0b687 100644
--- a/test/stubs/room.rb
+++ b/test/stubs/room.rb
@@ -7,7 +7,7 @@ class Room
end
def to_global_id
- "Room##{id}-#{name}"
+ GlobalID.new("Room##{id}-#{name}")
end
def to_gid_param
diff --git a/test/stubs/user.rb b/test/stubs/user.rb
index bce7dfc49e..a66b4f87d5 100644
--- a/test/stubs/user.rb
+++ b/test/stubs/user.rb
@@ -6,6 +6,10 @@ class User
end
def to_global_id
- "User##{name}"
+ GlobalID.new("User##{name}")
+ end
+
+ def to_gid_param
+ to_global_id.to_param
end
end