1 # Pleroma: A lightweight social networking server
2 # Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
3 # SPDX-License-Identifier: AGPL-3.0-only
5 defmodule Pleroma.Web.Plugs.EnsureUserTokenAssignsPlugTest do
6 use Pleroma.Web.ConnCase, async: true
10 alias Pleroma.Web.Plugs.EnsureUserTokenAssignsPlug
12 test "with :user assign set to a User record " <>
13 "and :token assign set to a Token belonging to this user, " <>
15 %{conn: conn} = oauth_access(["read"])
17 ret_conn = EnsureUserTokenAssignsPlug.call(conn, %{})
19 assert conn == ret_conn
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`",
27 conn = assign(conn, :user, user)
29 ret_conn = EnsureUserTokenAssignsPlug.call(conn, %{})
31 assert %{token: nil} = ret_conn.assigns
36 |> EnsureUserTokenAssignsPlug.call(%{})
38 assert %{token: nil} = ret_conn2.assigns
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)
48 conn = assign(conn, :user, other_user)
50 ret_conn = EnsureUserTokenAssignsPlug.call(conn, %{})
52 assert %{user: nil, token: nil} = ret_conn.assigns
55 test "if :user assign is not set to a User record, it sets :user and :token to nil", %{
58 ret_conn = EnsureUserTokenAssignsPlug.call(conn, %{})
60 assert %{user: nil, token: nil} = ret_conn.assigns
65 |> EnsureUserTokenAssignsPlug.call(%{})
67 assert %{user: nil, token: nil} = ret_conn2.assigns