diff options
| -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 | 
