diff options
author | lain <lain@soykaf.club> | 2018-09-05 21:42:42 +0200 |
---|---|---|
committer | lain <lain@soykaf.club> | 2018-09-05 21:42:42 +0200 |
commit | 5ce1ebb1794205a58bedee314a7c787ceb362f37 (patch) | |
tree | 3b88f5acb1fa7a34e2d7c29f90db19199ace8b20 | |
parent | 636ad3e155d843ab7934438a05313abf1afb2a48 (diff) | |
download | pleroma-5ce1ebb1794205a58bedee314a7c787ceb362f37.tar.gz |
Add SetUserSessionIdPlug.
-rw-r--r-- | lib/pleroma/plugs/set_user_session_id_plug.ex | 15 | ||||
-rw-r--r-- | test/plugs/set_user_session_id_plug_test.exs | 39 |
2 files changed, 54 insertions, 0 deletions
diff --git a/lib/pleroma/plugs/set_user_session_id_plug.ex b/lib/pleroma/plugs/set_user_session_id_plug.ex new file mode 100644 index 000000000..adc0a42b5 --- /dev/null +++ b/lib/pleroma/plugs/set_user_session_id_plug.ex @@ -0,0 +1,15 @@ +defmodule Pleroma.Plugs.SetUserSessionIdPlug do + import Plug.Conn + alias Pleroma.User + + def init(opts) do + opts + end + + def call(%{assigns: %{user: %User{id: id}}} = conn, _) do + conn + |> put_session(:user_id, id) + end + + def call(conn, _), do: conn +end diff --git a/test/plugs/set_user_session_id_plug_test.exs b/test/plugs/set_user_session_id_plug_test.exs new file mode 100644 index 000000000..5edc0dab8 --- /dev/null +++ b/test/plugs/set_user_session_id_plug_test.exs @@ -0,0 +1,39 @@ +defmodule Pleroma.Plugs.SetUserSessionIdPlugTest do + use Pleroma.Web.ConnCase, async: true + + alias Pleroma.Plugs.SetUserSessionIdPlug + alias Pleroma.User + + setup %{conn: conn} do + session_opts = [ + store: :cookie, + key: "_test", + signing_salt: "cooldude" + ] + + conn = + conn + |> Plug.Session.call(Plug.Session.init(session_opts)) + |> fetch_session + + %{conn: conn} + end + + test "doesn't do anything if the user isn't set", %{conn: conn} do + ret_conn = + conn + |> SetUserSessionIdPlug.call(%{}) + + assert ret_conn == conn + end + + test "sets the user_id in the session to the user id of the user assign", %{conn: conn} do + conn = + conn + |> assign(:user, %User{id: 1}) + |> SetUserSessionIdPlug.call(%{}) + + id = get_session(conn, :user_id) + assert id == 1 + end +end |