giant massive dep upgrade and dialyxir-found error emporium (#371)
[akkoma] / test / pleroma / web / admin_api / controllers / instance_controller_test.exs
1 # Pleroma: A lightweight social networking server
2 # Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
3 # SPDX-License-Identifier: AGPL-3.0-only
4
5 defmodule Pleroma.Web.AdminAPI.InstanceControllerTest do
6 use Pleroma.Web.ConnCase
7 use Oban.Testing, repo: Pleroma.Repo
8
9 import Pleroma.Factory
10
11 alias Pleroma.Repo
12 alias Pleroma.Tests.ObanHelpers
13 alias Pleroma.Web.CommonAPI
14
15 setup_all do
16 Tesla.Mock.mock_global(fn env -> apply(HttpRequestMock, :request, [env]) end)
17
18 :ok
19 end
20
21 setup do
22 admin = insert(:user, is_admin: true)
23 token = insert(:oauth_admin_token, user: admin)
24
25 conn =
26 build_conn()
27 |> assign(:user, admin)
28 |> assign(:token, token)
29
30 {:ok, %{admin: admin, token: token, conn: conn}}
31 end
32
33 test "GET /instances/:instance/statuses", %{conn: conn} do
34 user = insert(:user, local: false, ap_id: "https://archae.me/users/archaeme")
35 user2 = insert(:user, local: false, ap_id: "https://test.com/users/test")
36 insert_pair(:note_activity, user: user)
37 activity = insert(:note_activity, user: user2)
38
39 %{"total" => 2, "activities" => activities} =
40 conn |> get("/api/v1/pleroma/admin/instances/archae.me/statuses") |> json_response(200)
41
42 assert length(activities) == 2
43
44 %{"total" => 1, "activities" => [_]} =
45 conn |> get("/api/v1/pleroma/admin/instances/test.com/statuses") |> json_response(200)
46
47 %{"total" => 0, "activities" => []} =
48 conn
49 |> get("/api/v1/pleroma/admin/instances/nonexistent.com/statuses")
50 |> json_response(200)
51
52 CommonAPI.repeat(activity.id, user)
53
54 %{"total" => 2, "activities" => activities} =
55 conn |> get("/api/v1/pleroma/admin/instances/archae.me/statuses") |> json_response(200)
56
57 assert length(activities) == 2
58
59 %{"total" => 3, "activities" => activities} =
60 conn
61 |> get("/api/v1/pleroma/admin/instances/archae.me/statuses?with_reblogs=true")
62 |> json_response(200)
63
64 assert length(activities) == 3
65 end
66
67 test "DELETE /instances/:instance", %{conn: conn} do
68 user = insert(:user, nickname: "lain@lain.com")
69 post = insert(:note_activity, user: user)
70
71 response =
72 conn
73 |> delete("/api/v1/pleroma/admin/instances/lain.com")
74 |> json_response(200)
75
76 [:ok] = ObanHelpers.perform_all()
77
78 assert response == "lain.com"
79 refute Repo.reload(user).is_active
80 refute Repo.reload(post)
81 end
82 end