f98ed0f2ec4c14a217cb2ba638299be658aec66e
[anni] / test / pleroma / web / plugs / ensure_user_token_assigns_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.EnsureUserTokenAssignsPlugTest do
6   use Pleroma.Web.ConnCase, async: true
7
8   import Pleroma.Factory
9
10   alias Pleroma.Web.Plugs.EnsureUserTokenAssignsPlug
11
12   test "with :user assign set to a User record " <>
13          "and :token assign set to a Token belonging to this user, " <>
14          "it does nothing" do
15     %{conn: conn} = oauth_access(["read"])
16
17     ret_conn = EnsureUserTokenAssignsPlug.call(conn, %{})
18
19     assert conn == ret_conn
20   end
21
22   test "with :user assign set to a User record " <>
23          "but :token assign not set or not a Token, " <>
24          "it assigns :token to `nil`",
25        %{conn: conn} do
26     user = insert(:user)
27     conn = assign(conn, :user, user)
28
29     ret_conn = EnsureUserTokenAssignsPlug.call(conn, %{})
30
31     assert %{token: nil} = ret_conn.assigns
32
33     ret_conn2 =
34       conn
35       |> assign(:token, 1)
36       |> EnsureUserTokenAssignsPlug.call(%{})
37
38     assert %{token: nil} = ret_conn2.assigns
39   end
40
41   # Abnormal (unexpected) scenario
42   test "with :user assign set to a User record " <>
43          "but :token assign set to a Token NOT belonging to :user, " <>
44          "it drops auth info" do
45     %{conn: conn} = oauth_access(["read"])
46     other_user = insert(:user)
47
48     conn = assign(conn, :user, other_user)
49
50     ret_conn = EnsureUserTokenAssignsPlug.call(conn, %{})
51
52     assert %{user: nil, token: nil} = ret_conn.assigns
53   end
54
55   test "if :user assign is not set to a User record, it sets :user and :token to nil", %{
56     conn: conn
57   } do
58     ret_conn = EnsureUserTokenAssignsPlug.call(conn, %{})
59
60     assert %{user: nil, token: nil} = ret_conn.assigns
61
62     ret_conn2 =
63       conn
64       |> assign(:user, 1)
65       |> EnsureUserTokenAssignsPlug.call(%{})
66
67     assert %{user: nil, token: nil} = ret_conn2.assigns
68   end
69 end