logo

pleroma

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

query_test.exs (4038B)


  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.User.QueryTest do
  5. use Pleroma.DataCase, async: false
  6. alias Pleroma.Repo
  7. alias Pleroma.User
  8. alias Pleroma.User.Query
  9. alias Pleroma.Web.ActivityPub.InternalFetchActor
  10. import Pleroma.Factory
  11. describe "internal users" do
  12. test "it filters out internal users by default" do
  13. %User{nickname: "internal.fetch"} = InternalFetchActor.get_actor()
  14. assert [_user] = User |> Repo.all()
  15. assert [] == %{} |> Query.build() |> Repo.all()
  16. end
  17. test "it filters out users without nickname by default" do
  18. insert(:user, %{nickname: nil})
  19. assert [_user] = User |> Repo.all()
  20. assert [] == %{} |> Query.build() |> Repo.all()
  21. end
  22. test "it returns internal users when enabled" do
  23. %User{nickname: "internal.fetch"} = InternalFetchActor.get_actor()
  24. insert(:user, %{nickname: nil})
  25. assert %{internal: true} |> Query.build() |> Repo.aggregate(:count) == 2
  26. end
  27. end
  28. test "is_suggested param" do
  29. _user1 = insert(:user, is_suggested: false)
  30. user2 = insert(:user, is_suggested: true)
  31. assert [^user2] =
  32. %{is_suggested: true}
  33. |> User.Query.build()
  34. |> Repo.all()
  35. end
  36. describe "is_privileged param" do
  37. setup do
  38. %{
  39. user: insert(:user, local: true, is_admin: false, is_moderator: false),
  40. moderator_user: insert(:user, local: true, is_admin: false, is_moderator: true),
  41. admin_user: insert(:user, local: true, is_admin: true, is_moderator: false),
  42. admin_moderator_user: insert(:user, local: true, is_admin: true, is_moderator: true),
  43. remote_user: insert(:user, local: false, is_admin: true, is_moderator: true),
  44. non_active_user:
  45. insert(:user, local: true, is_admin: true, is_moderator: true, is_active: false)
  46. }
  47. end
  48. test "doesn't return any users when there are no privileged roles" do
  49. clear_config([:instance, :admin_privileges], [])
  50. clear_config([:instance, :moderator_privileges], [])
  51. assert [] = User.Query.build(%{is_privileged: :cofe}) |> Repo.all()
  52. end
  53. test "returns moderator users if they are privileged", %{
  54. moderator_user: moderator_user,
  55. admin_moderator_user: admin_moderator_user
  56. } do
  57. clear_config([:instance, :admin_privileges], [])
  58. clear_config([:instance, :moderator_privileges], [:cofe])
  59. assert [_, _] = User.Query.build(%{is_privileged: :cofe}) |> Repo.all()
  60. assert moderator_user in (User.Query.build(%{is_privileged: :cofe}) |> Repo.all())
  61. assert admin_moderator_user in (User.Query.build(%{is_privileged: :cofe}) |> Repo.all())
  62. end
  63. test "returns admin users if they are privileged", %{
  64. admin_user: admin_user,
  65. admin_moderator_user: admin_moderator_user
  66. } do
  67. clear_config([:instance, :admin_privileges], [:cofe])
  68. clear_config([:instance, :moderator_privileges], [])
  69. assert [_, _] = User.Query.build(%{is_privileged: :cofe}) |> Repo.all()
  70. assert admin_user in (User.Query.build(%{is_privileged: :cofe}) |> Repo.all())
  71. assert admin_moderator_user in (User.Query.build(%{is_privileged: :cofe}) |> Repo.all())
  72. end
  73. test "returns admin and moderator users if they are both privileged", %{
  74. moderator_user: moderator_user,
  75. admin_user: admin_user,
  76. admin_moderator_user: admin_moderator_user
  77. } do
  78. clear_config([:instance, :admin_privileges], [:cofe])
  79. clear_config([:instance, :moderator_privileges], [:cofe])
  80. assert [_, _, _] = User.Query.build(%{is_privileged: :cofe}) |> Repo.all()
  81. assert admin_user in (User.Query.build(%{is_privileged: :cofe}) |> Repo.all())
  82. assert moderator_user in (User.Query.build(%{is_privileged: :cofe}) |> Repo.all())
  83. assert admin_moderator_user in (User.Query.build(%{is_privileged: :cofe}) |> Repo.all())
  84. end
  85. end
  86. end