summaryrefslogtreecommitdiff
path: root/test/pleroma/web/admin_api/controllers/instance_controller_test.exs
blob: 72436cd834bd43f713c2329d553d9496744c8fa9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
# Pleroma: A lightweight social networking server
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
# SPDX-License-Identifier: AGPL-3.0-only

defmodule Pleroma.Web.AdminAPI.InstanceControllerTest do
  use Pleroma.Web.ConnCase
  use Oban.Testing, repo: Pleroma.Repo

  import Pleroma.Factory

  alias Pleroma.Repo
  alias Pleroma.Tests.ObanHelpers
  alias Pleroma.Web.CommonAPI

  setup_all do
    Tesla.Mock.mock_global(fn env -> apply(HttpRequestMock, :request, [env]) end)

    :ok
  end

  setup do
    admin = insert(:user, is_admin: true)
    token = insert(:oauth_admin_token, user: admin)

    conn =
      build_conn()
      |> assign(:user, admin)
      |> assign(:token, token)

    {:ok, %{admin: admin, token: token, conn: conn}}
  end

  test "GET /instances/:instance/statuses", %{conn: conn} do
    user = insert(:user, local: false, ap_id: "https://archae.me/users/archaeme")
    user2 = insert(:user, local: false, ap_id: "https://test.com/users/test")
    insert_pair(:note_activity, user: user)
    activity = insert(:note_activity, user: user2)

    %{"total" => 2, "activities" => activities} =
      conn |> get("/api/pleroma/admin/instances/archae.me/statuses") |> json_response(200)

    assert length(activities) == 2

    %{"total" => 1, "activities" => [_]} =
      conn |> get("/api/pleroma/admin/instances/test.com/statuses") |> json_response(200)

    %{"total" => 0, "activities" => []} =
      conn |> get("/api/pleroma/admin/instances/nonexistent.com/statuses") |> json_response(200)

    CommonAPI.repeat(activity.id, user)

    %{"total" => 2, "activities" => activities} =
      conn |> get("/api/pleroma/admin/instances/archae.me/statuses") |> json_response(200)

    assert length(activities) == 2

    %{"total" => 3, "activities" => activities} =
      conn
      |> get("/api/pleroma/admin/instances/archae.me/statuses?with_reblogs=true")
      |> json_response(200)

    assert length(activities) == 3
  end

  test "DELETE /instances/:instance", %{conn: conn} do
    user = insert(:user, nickname: "lain@lain.com")
    post = insert(:note_activity, user: user)

    response =
      conn
      |> delete("/api/pleroma/admin/instances/lain.com")
      |> json_response(200)

    [:ok] = ObanHelpers.perform_all()

    assert response == "lain.com"
    refute Repo.reload(user).is_active
    refute Repo.reload(post)
  end
end