diff options
| -rw-r--r-- | lib/pleroma/plugs/user_enabled_plug.ex | 17 | ||||
| -rw-r--r-- | test/plugs/user_enabled_plug_test.exs | 35 | 
2 files changed, 52 insertions, 0 deletions
| diff --git a/lib/pleroma/plugs/user_enabled_plug.ex b/lib/pleroma/plugs/user_enabled_plug.ex new file mode 100644 index 000000000..9c3285896 --- /dev/null +++ b/lib/pleroma/plugs/user_enabled_plug.ex @@ -0,0 +1,17 @@ +defmodule Pleroma.Plugs.UserEnabledPlug do +  import Plug.Conn +  alias Pleroma.User + +  def init(options) do +    options +  end + +  def call(%{assigns: %{user: %User{info: %{"deactivated" => true}}}} = conn, _) do +    conn +    |> assign(:user, nil) +  end + +  def call(conn, _) do +    conn +  end +end diff --git a/test/plugs/user_enabled_plug_test.exs b/test/plugs/user_enabled_plug_test.exs new file mode 100644 index 000000000..af877db76 --- /dev/null +++ b/test/plugs/user_enabled_plug_test.exs @@ -0,0 +1,35 @@ +defmodule Pleroma.Plugs.UserEnabledPlugTest do +  use Pleroma.Web.ConnCase, async: true + +  alias Pleroma.Plugs.UserEnabledPlug +  alias Pleroma.User + +  test "doesn't do anything if the user isn't set", %{conn: conn} do +    ret_conn = +      conn +      |> UserEnabledPlug.call(%{}) + +    assert ret_conn == conn +  end + +  test "with a user that is deactivated, it removes that user", %{conn: conn} do +    conn = +      conn +      |> assign(:user, %User{info: %{"deactivated" => true}}) +      |> UserEnabledPlug.call(%{}) + +    assert conn.assigns.user == nil +  end + +  test "with a user that is not deactivated, it does nothing", %{conn: conn} do +    conn = +      conn +      |> assign(:user, %User{}) + +    ret_conn = +      conn +      |> UserEnabledPlug.call(%{}) + +    assert conn == ret_conn +  end +end | 
