logo

pleroma

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

instance_controller_test.exs (4884B)


  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.MastodonAPI.InstanceControllerTest do
  5. # TODO: Should not need Cachex
  6. use Pleroma.Web.ConnCase
  7. alias Pleroma.Rule
  8. alias Pleroma.User
  9. import Pleroma.Factory
  10. test "get instance information", %{conn: conn} do
  11. conn = get(conn, "/api/v1/instance")
  12. assert result = json_response_and_validate_schema(conn, 200)
  13. email = Pleroma.Config.get([:instance, :email])
  14. thumbnail = Pleroma.Web.Endpoint.url() <> Pleroma.Config.get([:instance, :instance_thumbnail])
  15. background = Pleroma.Web.Endpoint.url() <> Pleroma.Config.get([:instance, :background_image])
  16. # Note: not checking for "max_toot_chars" since it's optional
  17. assert %{
  18. "uri" => _,
  19. "title" => _,
  20. "description" => _,
  21. "short_description" => _,
  22. "version" => _,
  23. "email" => from_config_email,
  24. "urls" => %{
  25. "streaming_api" => _
  26. },
  27. "stats" => _,
  28. "thumbnail" => from_config_thumbnail,
  29. "languages" => _,
  30. "registrations" => _,
  31. "approval_required" => _,
  32. "poll_limits" => _,
  33. "upload_limit" => _,
  34. "avatar_upload_limit" => _,
  35. "background_upload_limit" => _,
  36. "banner_upload_limit" => _,
  37. "background_image" => from_config_background,
  38. "shout_limit" => _,
  39. "description_limit" => _,
  40. "rules" => _
  41. } = result
  42. assert result["pleroma"]["metadata"]["account_activation_required"] != nil
  43. assert result["pleroma"]["metadata"]["features"]
  44. assert result["pleroma"]["metadata"]["federation"]
  45. assert result["pleroma"]["metadata"]["fields_limits"]
  46. assert result["pleroma"]["vapid_public_key"]
  47. assert result["pleroma"]["stats"]["mau"] == 0
  48. assert email == from_config_email
  49. assert thumbnail == from_config_thumbnail
  50. assert background == from_config_background
  51. end
  52. test "get instance stats", %{conn: conn} do
  53. user = insert(:user, %{local: true})
  54. user2 = insert(:user, %{local: true})
  55. {:ok, _user2} = User.set_activation(user2, false)
  56. insert(:user, %{local: false, nickname: "u@peer1.com"})
  57. insert(:user, %{local: false, nickname: "u@peer2.com"})
  58. {:ok, _} = Pleroma.Web.CommonAPI.post(user, %{status: "cofe"})
  59. Pleroma.Stats.force_update()
  60. conn = get(conn, "/api/v1/instance")
  61. assert result = json_response_and_validate_schema(conn, 200)
  62. stats = result["stats"]
  63. assert stats
  64. assert stats["user_count"] == 1
  65. assert stats["status_count"] == 1
  66. assert stats["domain_count"] == 2
  67. end
  68. test "get peers", %{conn: conn} do
  69. insert(:user, %{local: false, nickname: "u@peer1.com"})
  70. insert(:user, %{local: false, nickname: "u@peer2.com"})
  71. Pleroma.Stats.force_update()
  72. conn = get(conn, "/api/v1/instance/peers")
  73. assert result = json_response_and_validate_schema(conn, 200)
  74. assert ["peer1.com", "peer2.com"] == Enum.sort(result)
  75. end
  76. test "instance languages", %{conn: conn} do
  77. assert %{"languages" => ["en"]} =
  78. conn
  79. |> get("/api/v1/instance")
  80. |> json_response_and_validate_schema(200)
  81. clear_config([:instance, :languages], ["aa", "bb"])
  82. assert %{"languages" => ["aa", "bb"]} =
  83. conn
  84. |> get("/api/v1/instance")
  85. |> json_response_and_validate_schema(200)
  86. end
  87. test "get instance contact information", %{conn: conn} do
  88. user = insert(:user, %{local: true})
  89. clear_config([:instance, :contact_username], user.nickname)
  90. conn = get(conn, "/api/v1/instance")
  91. assert result = json_response_and_validate_schema(conn, 200)
  92. assert result["contact_account"]["id"] == user.id
  93. end
  94. test "get instance information v2", %{conn: conn} do
  95. clear_config([:auth, :oauth_consumer_strategies], [])
  96. assert get(conn, "/api/v2/instance")
  97. |> json_response_and_validate_schema(200)
  98. end
  99. test "get instance rules", %{conn: conn} do
  100. Rule.create(%{text: "Example rule", hint: "Rule description", priority: 1})
  101. Rule.create(%{text: "Third rule", priority: 2})
  102. Rule.create(%{text: "Second rule", priority: 1})
  103. conn = get(conn, "/api/v1/instance")
  104. assert result = json_response_and_validate_schema(conn, 200)
  105. assert [
  106. %{
  107. "text" => "Example rule",
  108. "hint" => "Rule description"
  109. },
  110. %{
  111. "text" => "Second rule",
  112. "hint" => ""
  113. },
  114. %{
  115. "text" => "Third rule",
  116. "hint" => ""
  117. }
  118. ] = result["rules"]
  119. end
  120. end