Merge branch 'develop' of git.pleroma.social:pleroma/pleroma into ecto_sql_update
[akkoma] / test / plugs / ensure_public_or_authenticated_plug_test.exs
1 # Pleroma: A lightweight social networking server
2 # Copyright © 2017-2018 Pleroma Authors <https://pleroma.social/>
3 # SPDX-License-Identifier: AGPL-3.0-only
4
5 defmodule Pleroma.Plugs.EnsurePublicOrAuthenticatedPlugTest do
6 use Pleroma.Web.ConnCase, async: true
7
8 alias Pleroma.Config
9 alias Pleroma.Plugs.EnsurePublicOrAuthenticatedPlug
10 alias Pleroma.User
11
12 test "it halts if not public and no user is assigned", %{conn: conn} do
13 set_public_to(false)
14
15 conn =
16 conn
17 |> EnsurePublicOrAuthenticatedPlug.call(%{})
18
19 assert conn.status == 403
20 assert conn.halted == true
21 end
22
23 test "it continues if public", %{conn: conn} do
24 set_public_to(true)
25
26 ret_conn =
27 conn
28 |> EnsurePublicOrAuthenticatedPlug.call(%{})
29
30 assert ret_conn == conn
31 end
32
33 test "it continues if a user is assigned, even if not public", %{conn: conn} do
34 set_public_to(false)
35
36 conn =
37 conn
38 |> assign(:user, %User{})
39
40 ret_conn =
41 conn
42 |> EnsurePublicOrAuthenticatedPlug.call(%{})
43
44 assert ret_conn == conn
45 end
46
47 defp set_public_to(value) do
48 orig = Config.get!([:instance, :public])
49 Config.put([:instance, :public], value)
50
51 on_exit(fn ->
52 Config.put([:instance, :public], orig)
53 end)
54 end
55 end