logo

pleroma

My custom branche(s) on git.pleroma.social/pleroma/pleroma git clone https://hacktivis.me/git/pleroma.git

ensure_privileged_plug_test.exs (2680B)


  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. defmodule Pleroma.Web.Plugs.EnsurePrivilegedPlugTest do
  5. use Pleroma.Web.ConnCase
  6. alias Pleroma.Web.Plugs.EnsurePrivilegedPlug
  7. import Pleroma.Factory
  8. test "denies a user that isn't moderator or admin" do
  9. clear_config([:instance, :admin_privileges], [])
  10. user = insert(:user)
  11. conn =
  12. build_conn()
  13. |> assign(:user, user)
  14. |> EnsurePrivilegedPlug.call(:cofe)
  15. assert conn.status == 403
  16. end
  17. test "accepts an admin that is privileged" do
  18. clear_config([:instance, :admin_privileges], [:cofe])
  19. user = insert(:user, is_admin: true)
  20. conn = assign(build_conn(), :user, user)
  21. ret_conn = EnsurePrivilegedPlug.call(conn, :cofe)
  22. assert conn == ret_conn
  23. end
  24. test "denies an admin that isn't privileged" do
  25. clear_config([:instance, :admin_privileges], [:suya])
  26. user = insert(:user, is_admin: true)
  27. conn =
  28. build_conn()
  29. |> assign(:user, user)
  30. |> EnsurePrivilegedPlug.call(:cofe)
  31. assert conn.status == 403
  32. end
  33. test "accepts a moderator that is privileged" do
  34. clear_config([:instance, :moderator_privileges], [:cofe])
  35. user = insert(:user, is_moderator: true)
  36. conn = assign(build_conn(), :user, user)
  37. ret_conn = EnsurePrivilegedPlug.call(conn, :cofe)
  38. assert conn == ret_conn
  39. end
  40. test "denies a moderator that isn't privileged" do
  41. clear_config([:instance, :moderator_privileges], [:suya])
  42. user = insert(:user, is_moderator: true)
  43. conn =
  44. build_conn()
  45. |> assign(:user, user)
  46. |> EnsurePrivilegedPlug.call(:cofe)
  47. assert conn.status == 403
  48. end
  49. test "accepts for a privileged role even if other role isn't privileged" do
  50. clear_config([:instance, :admin_privileges], [:cofe])
  51. clear_config([:instance, :moderator_privileges], [])
  52. user = insert(:user, is_admin: true, is_moderator: true)
  53. conn = assign(build_conn(), :user, user)
  54. ret_conn = EnsurePrivilegedPlug.call(conn, :cofe)
  55. # privileged through admin role
  56. assert conn == ret_conn
  57. clear_config([:instance, :admin_privileges], [])
  58. clear_config([:instance, :moderator_privileges], [:cofe])
  59. user = insert(:user, is_admin: true, is_moderator: true)
  60. conn = assign(build_conn(), :user, user)
  61. ret_conn = EnsurePrivilegedPlug.call(conn, :cofe)
  62. # privileged through moderator role
  63. assert conn == ret_conn
  64. end
  65. test "denies when no user is set" do
  66. conn =
  67. build_conn()
  68. |> EnsurePrivilegedPlug.call(:cofe)
  69. assert conn.status == 403
  70. end
  71. end