diff options
Diffstat (limited to 'test/web/admin_api')
| -rw-r--r-- | test/web/admin_api/controllers/admin_api_controller_test.exs | 51 | ||||
| -rw-r--r-- | test/web/admin_api/controllers/relay_controller_test.exs | 92 | 
2 files changed, 92 insertions, 51 deletions
diff --git a/test/web/admin_api/controllers/admin_api_controller_test.exs b/test/web/admin_api/controllers/admin_api_controller_test.exs index 2aaec510d..bea810c4a 100644 --- a/test/web/admin_api/controllers/admin_api_controller_test.exs +++ b/test/web/admin_api/controllers/admin_api_controller_test.exs @@ -1604,57 +1604,6 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do      end    end -  describe "relays" do -    test "POST /relay", %{conn: conn, admin: admin} do -      conn = -        post(conn, "/api/pleroma/admin/relay", %{ -          relay_url: "http://mastodon.example.org/users/admin" -        }) - -      assert json_response(conn, 200) == "http://mastodon.example.org/users/admin" - -      log_entry = Repo.one(ModerationLog) - -      assert ModerationLog.get_log_entry_message(log_entry) == -               "@#{admin.nickname} followed relay: http://mastodon.example.org/users/admin" -    end - -    test "GET /relay", %{conn: conn} do -      relay_user = Pleroma.Web.ActivityPub.Relay.get_actor() - -      ["http://mastodon.example.org/users/admin", "https://mstdn.io/users/mayuutann"] -      |> Enum.each(fn ap_id -> -        {:ok, user} = User.get_or_fetch_by_ap_id(ap_id) -        User.follow(relay_user, user) -      end) - -      conn = get(conn, "/api/pleroma/admin/relay") - -      assert json_response(conn, 200)["relays"] -- ["mastodon.example.org", "mstdn.io"] == [] -    end - -    test "DELETE /relay", %{conn: conn, admin: admin} do -      post(conn, "/api/pleroma/admin/relay", %{ -        relay_url: "http://mastodon.example.org/users/admin" -      }) - -      conn = -        delete(conn, "/api/pleroma/admin/relay", %{ -          relay_url: "http://mastodon.example.org/users/admin" -        }) - -      assert json_response(conn, 200) == "http://mastodon.example.org/users/admin" - -      [log_entry_one, log_entry_two] = Repo.all(ModerationLog) - -      assert ModerationLog.get_log_entry_message(log_entry_one) == -               "@#{admin.nickname} followed relay: http://mastodon.example.org/users/admin" - -      assert ModerationLog.get_log_entry_message(log_entry_two) == -               "@#{admin.nickname} unfollowed relay: http://mastodon.example.org/users/admin" -    end -  end -    describe "instances" do      test "GET /instances/:instance/statuses", %{conn: conn} do        user = insert(:user, local: false, nickname: "archaeme@archae.me") diff --git a/test/web/admin_api/controllers/relay_controller_test.exs b/test/web/admin_api/controllers/relay_controller_test.exs new file mode 100644 index 000000000..64086adc5 --- /dev/null +++ b/test/web/admin_api/controllers/relay_controller_test.exs @@ -0,0 +1,92 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.AdminAPI.RelayControllerTest do +  use Pleroma.Web.ConnCase + +  import Pleroma.Factory + +  alias Pleroma.Config +  alias Pleroma.ModerationLog +  alias Pleroma.Repo +  alias Pleroma.User + +  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 + +  describe "relays" do +    test "POST /relay", %{conn: conn, admin: admin} do +      conn = +        conn +        |> put_req_header("content-type", "application/json") +        |> post("/api/pleroma/admin/relay", %{ +          relay_url: "http://mastodon.example.org/users/admin" +        }) + +      assert json_response_and_validate_schema(conn, 200) == +               "http://mastodon.example.org/users/admin" + +      log_entry = Repo.one(ModerationLog) + +      assert ModerationLog.get_log_entry_message(log_entry) == +               "@#{admin.nickname} followed relay: http://mastodon.example.org/users/admin" +    end + +    test "GET /relay", %{conn: conn} do +      relay_user = Pleroma.Web.ActivityPub.Relay.get_actor() + +      ["http://mastodon.example.org/users/admin", "https://mstdn.io/users/mayuutann"] +      |> Enum.each(fn ap_id -> +        {:ok, user} = User.get_or_fetch_by_ap_id(ap_id) +        User.follow(relay_user, user) +      end) + +      conn = get(conn, "/api/pleroma/admin/relay") + +      assert json_response_and_validate_schema(conn, 200)["relays"] -- +               ["mastodon.example.org", "mstdn.io"] == [] +    end + +    test "DELETE /relay", %{conn: conn, admin: admin} do +      conn +      |> put_req_header("content-type", "application/json") +      |> post("/api/pleroma/admin/relay", %{ +        relay_url: "http://mastodon.example.org/users/admin" +      }) + +      conn = +        conn +        |> put_req_header("content-type", "application/json") +        |> delete("/api/pleroma/admin/relay", %{ +          relay_url: "http://mastodon.example.org/users/admin" +        }) + +      assert json_response_and_validate_schema(conn, 200) == +               "http://mastodon.example.org/users/admin" + +      [log_entry_one, log_entry_two] = Repo.all(ModerationLog) + +      assert ModerationLog.get_log_entry_message(log_entry_one) == +               "@#{admin.nickname} followed relay: http://mastodon.example.org/users/admin" + +      assert ModerationLog.get_log_entry_message(log_entry_two) == +               "@#{admin.nickname} unfollowed relay: http://mastodon.example.org/users/admin" +    end +  end +end  | 
