logo

pleroma

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

instance_controller_test.exs (2839B)


  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.AdminAPI.InstanceControllerTest do
  5. use Pleroma.Web.ConnCase, async: false
  6. use Oban.Testing, repo: Pleroma.Repo
  7. import Pleroma.Factory
  8. alias Pleroma.Repo
  9. alias Pleroma.Tests.ObanHelpers
  10. alias Pleroma.Web.CommonAPI
  11. setup_all do
  12. Tesla.Mock.mock_global(fn env -> apply(HttpRequestMock, :request, [env]) end)
  13. :ok
  14. end
  15. setup do
  16. admin = insert(:user, is_admin: true)
  17. token = insert(:oauth_admin_token, user: admin)
  18. conn =
  19. build_conn()
  20. |> assign(:user, admin)
  21. |> assign(:token, token)
  22. {:ok, %{admin: admin, token: token, conn: conn}}
  23. end
  24. test "GET /instances/:instance/statuses", %{conn: conn} do
  25. clear_config([:instance, :admin_privileges], [:messages_read])
  26. user = insert(:user, local: false, ap_id: "https://archae.me/users/archaeme")
  27. user2 = insert(:user, local: false, ap_id: "https://test.com/users/test")
  28. insert_pair(:note_activity, user: user)
  29. activity = insert(:note_activity, user: user2)
  30. %{"total" => 2, "activities" => activities} =
  31. conn |> get("/api/pleroma/admin/instances/archae.me/statuses") |> json_response(200)
  32. assert length(activities) == 2
  33. %{"total" => 1, "activities" => [_]} =
  34. conn |> get("/api/pleroma/admin/instances/test.com/statuses") |> json_response(200)
  35. %{"total" => 0, "activities" => []} =
  36. conn |> get("/api/pleroma/admin/instances/nonexistent.com/statuses") |> json_response(200)
  37. CommonAPI.repeat(activity.id, user)
  38. %{"total" => 2, "activities" => activities} =
  39. conn |> get("/api/pleroma/admin/instances/archae.me/statuses") |> json_response(200)
  40. assert length(activities) == 2
  41. %{"total" => 3, "activities" => activities} =
  42. conn
  43. |> get("/api/pleroma/admin/instances/archae.me/statuses?with_reblogs=true")
  44. |> json_response(200)
  45. assert length(activities) == 3
  46. clear_config([:instance, :admin_privileges], [])
  47. conn |> get("/api/pleroma/admin/instances/archae.me/statuses") |> json_response(:forbidden)
  48. end
  49. test "DELETE /instances/:instance", %{conn: conn} do
  50. clear_config([:instance, :admin_privileges], [:instances_delete])
  51. user = insert(:user, nickname: "lain@lain.com")
  52. post = insert(:note_activity, user: user)
  53. response =
  54. conn
  55. |> delete("/api/pleroma/admin/instances/lain.com")
  56. |> json_response(200)
  57. [:ok] = ObanHelpers.perform_all()
  58. assert response == "lain.com"
  59. refute Repo.reload(user).is_active
  60. refute Repo.reload(post)
  61. clear_config([:instance, :admin_privileges], [])
  62. conn
  63. |> delete("/api/pleroma/admin/instances/lain.com")
  64. |> json_response(:forbidden)
  65. end
  66. end