35edaa8250ea550400a78ea2139b15b286f407d5
[anni] / test / pleroma / web / plugs / ensure_public_or_authenticated_plug_test.exs
1 # Pleroma: A lightweight social networking server
2 # Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
3 # SPDX-License-Identifier: AGPL-3.0-only
4
5 defmodule Pleroma.Web.Plugs.EnsurePublicOrAuthenticatedPlugTest do
6   use Pleroma.Web.ConnCase
7
8   alias Pleroma.User
9   alias Pleroma.Web.Plugs.EnsurePublicOrAuthenticatedPlug
10
11   setup do: clear_config([:instance, :public])
12
13   test "it halts if not public and no user is assigned", %{conn: conn} do
14     clear_config([:instance, :public], false)
15
16     conn =
17       conn
18       |> EnsurePublicOrAuthenticatedPlug.call(%{})
19
20     assert conn.status == 403
21     assert conn.halted == true
22   end
23
24   test "it continues if public", %{conn: conn} do
25     clear_config([:instance, :public], true)
26
27     ret_conn =
28       conn
29       |> EnsurePublicOrAuthenticatedPlug.call(%{})
30
31     refute ret_conn.halted
32   end
33
34   test "it continues if a user is assigned, even if not public", %{conn: conn} do
35     clear_config([:instance, :public], false)
36
37     conn =
38       conn
39       |> assign(:user, %User{})
40
41     ret_conn =
42       conn
43       |> EnsurePublicOrAuthenticatedPlug.call(%{})
44
45     refute ret_conn.halted
46   end
47 end