From b500ac506861b2eaa60a4dc811f09f04fc0ed813 Mon Sep 17 00:00:00 2001 From: Dan Barber Date: Wed, 15 Aug 2018 14:58:40 -0400 Subject: [PATCH] Add socket authentication tests --- lib/chess_web/channels/user_socket.ex | 1 + test/chess_web/channels/user_socket_test.exs | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+) create mode 100644 test/chess_web/channels/user_socket_test.exs diff --git a/lib/chess_web/channels/user_socket.ex b/lib/chess_web/channels/user_socket.ex index d6c27ab..84a5cb7 100644 --- a/lib/chess_web/channels/user_socket.ex +++ b/lib/chess_web/channels/user_socket.ex @@ -29,6 +29,7 @@ defmodule ChessWeb.UserSocket do :error end end + def connect(%{}, socket), do: :error # Socket id's are topics that allow you to identify all sockets for a given user: # diff --git a/test/chess_web/channels/user_socket_test.exs b/test/chess_web/channels/user_socket_test.exs new file mode 100644 index 0000000..9cdde0a --- /dev/null +++ b/test/chess_web/channels/user_socket_test.exs @@ -0,0 +1,20 @@ +defmodule ChessWeb.UserSocketTest do + use ChessWeb.ChannelCase, async: true + + alias ChessWeb.UserSocket + + test "authenticate with valid token" do + token = Phoenix.Token.sign(@endpoint, "game socket", 42) + + assert {:ok, socket} = connect(UserSocket, %{"token" => token}) + assert socket.assigns.current_user_id == 42 + end + + test "cannot authenticate with invalid token" do + assert :error = connect(UserSocket, %{"token" => "invalid-token"}) + end + + test "cannot authenticate with no token" do + assert :error = connect(UserSocket, %{}) + end +end