logo

pleroma

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

relay_controller_test.exs (3099B)


  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.RelayControllerTest do
  5. use Pleroma.Web.ConnCase
  6. import Pleroma.Factory
  7. alias Pleroma.ModerationLog
  8. alias Pleroma.Repo
  9. alias Pleroma.User
  10. setup_all do
  11. Tesla.Mock.mock_global(fn env -> apply(HttpRequestMock, :request, [env]) end)
  12. :ok
  13. end
  14. setup do
  15. admin = insert(:user, is_admin: true)
  16. token = insert(:oauth_admin_token, user: admin)
  17. conn =
  18. build_conn()
  19. |> assign(:user, admin)
  20. |> assign(:token, token)
  21. {:ok, %{admin: admin, token: token, conn: conn}}
  22. end
  23. describe "relays" do
  24. test "POST /relay", %{conn: conn, admin: admin} do
  25. conn =
  26. conn
  27. |> put_req_header("content-type", "application/json")
  28. |> post("/api/pleroma/admin/relay", %{
  29. relay_url: "http://mastodon.example.org/users/admin"
  30. })
  31. assert json_response_and_validate_schema(conn, 200) == %{
  32. "actor" => "http://mastodon.example.org/users/admin",
  33. "followed_back" => false
  34. }
  35. log_entry = Repo.one(ModerationLog)
  36. assert ModerationLog.get_log_entry_message(log_entry) ==
  37. "@#{admin.nickname} followed relay: http://mastodon.example.org/users/admin"
  38. end
  39. test "GET /relay", %{conn: conn} do
  40. relay_user = Pleroma.Web.ActivityPub.Relay.get_actor()
  41. ["http://mastodon.example.org/users/admin", "https://mstdn.io/users/mayuutann"]
  42. |> Enum.each(fn ap_id ->
  43. {:ok, user} = User.get_or_fetch_by_ap_id(ap_id)
  44. User.follow(relay_user, user)
  45. end)
  46. conn = get(conn, "/api/pleroma/admin/relay")
  47. assert json_response_and_validate_schema(conn, 200)["relays"] |> Enum.sort() == [
  48. %{
  49. "actor" => "http://mastodon.example.org/users/admin",
  50. "followed_back" => true
  51. },
  52. %{"actor" => "https://mstdn.io/users/mayuutann", "followed_back" => true}
  53. ]
  54. end
  55. test "DELETE /relay", %{conn: conn, admin: admin} do
  56. conn
  57. |> put_req_header("content-type", "application/json")
  58. |> post("/api/pleroma/admin/relay", %{
  59. relay_url: "http://mastodon.example.org/users/admin"
  60. })
  61. conn =
  62. conn
  63. |> put_req_header("content-type", "application/json")
  64. |> delete("/api/pleroma/admin/relay", %{
  65. relay_url: "http://mastodon.example.org/users/admin"
  66. })
  67. assert json_response_and_validate_schema(conn, 200) ==
  68. "http://mastodon.example.org/users/admin"
  69. [log_entry_one, log_entry_two] = Repo.all(ModerationLog)
  70. assert ModerationLog.get_log_entry_message(log_entry_one) ==
  71. "@#{admin.nickname} followed relay: http://mastodon.example.org/users/admin"
  72. assert ModerationLog.get_log_entry_message(log_entry_two) ==
  73. "@#{admin.nickname} unfollowed relay: http://mastodon.example.org/users/admin"
  74. end
  75. end
  76. end