2019-10-02 09:13:52 +02:00
|
|
|
# Pleroma: A lightweight social networking server
|
2020-03-03 23:44:49 +01:00
|
|
|
# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
|
2019-10-02 09:13:52 +02:00
|
|
|
# SPDX-License-Identifier: AGPL-3.0-only
|
|
|
|
|
|
|
|
defmodule Pleroma.Web.MastodonAPI.InstanceControllerTest do
|
|
|
|
use Pleroma.Web.ConnCase
|
|
|
|
|
|
|
|
alias Pleroma.User
|
|
|
|
import Pleroma.Factory
|
|
|
|
|
|
|
|
test "get instance information", %{conn: conn} do
|
|
|
|
conn = get(conn, "/api/v1/instance")
|
2020-05-05 15:24:16 +02:00
|
|
|
assert result = json_response_and_validate_schema(conn, 200)
|
2019-10-02 09:13:52 +02:00
|
|
|
|
|
|
|
email = Pleroma.Config.get([:instance, :email])
|
|
|
|
# Note: not checking for "max_toot_chars" since it's optional
|
|
|
|
assert %{
|
|
|
|
"uri" => _,
|
|
|
|
"title" => _,
|
|
|
|
"description" => _,
|
|
|
|
"version" => _,
|
|
|
|
"email" => from_config_email,
|
|
|
|
"urls" => %{
|
|
|
|
"streaming_api" => _
|
|
|
|
},
|
|
|
|
"stats" => _,
|
|
|
|
"thumbnail" => _,
|
|
|
|
"languages" => _,
|
|
|
|
"registrations" => _,
|
2020-07-16 00:04:30 +02:00
|
|
|
"approval_required" => _,
|
2019-10-02 09:13:52 +02:00
|
|
|
"poll_limits" => _,
|
|
|
|
"upload_limit" => _,
|
|
|
|
"avatar_upload_limit" => _,
|
|
|
|
"background_upload_limit" => _,
|
2020-05-18 13:28:50 +02:00
|
|
|
"banner_upload_limit" => _,
|
2020-07-06 11:12:37 +02:00
|
|
|
"background_image" => _,
|
|
|
|
"chat_limit" => _,
|
|
|
|
"description_limit" => _
|
2019-10-02 09:13:52 +02:00
|
|
|
} = result
|
|
|
|
|
2020-06-30 22:25:10 +02:00
|
|
|
assert result["pleroma"]["metadata"]["account_activation_required"] != nil
|
2020-04-27 14:28:08 +02:00
|
|
|
assert result["pleroma"]["metadata"]["features"]
|
|
|
|
assert result["pleroma"]["metadata"]["federation"]
|
2020-06-30 22:25:10 +02:00
|
|
|
assert result["pleroma"]["metadata"]["fields_limits"]
|
2020-04-27 14:28:08 +02:00
|
|
|
assert result["pleroma"]["vapid_public_key"]
|
|
|
|
|
2019-10-02 09:13:52 +02:00
|
|
|
assert email == from_config_email
|
|
|
|
end
|
|
|
|
|
|
|
|
test "get instance stats", %{conn: conn} do
|
|
|
|
user = insert(:user, %{local: true})
|
|
|
|
|
|
|
|
user2 = insert(:user, %{local: true})
|
2019-10-16 20:59:21 +02:00
|
|
|
{:ok, _user2} = User.deactivate(user2, !user2.deactivated)
|
2019-10-02 09:13:52 +02:00
|
|
|
|
|
|
|
insert(:user, %{local: false, nickname: "u@peer1.com"})
|
|
|
|
insert(:user, %{local: false, nickname: "u@peer2.com"})
|
|
|
|
|
2020-05-12 21:59:26 +02:00
|
|
|
{:ok, _} = Pleroma.Web.CommonAPI.post(user, %{status: "cofe"})
|
2019-10-02 09:13:52 +02:00
|
|
|
|
|
|
|
Pleroma.Stats.force_update()
|
|
|
|
|
|
|
|
conn = get(conn, "/api/v1/instance")
|
|
|
|
|
2020-05-05 15:24:16 +02:00
|
|
|
assert result = json_response_and_validate_schema(conn, 200)
|
2019-10-02 09:13:52 +02:00
|
|
|
|
|
|
|
stats = result["stats"]
|
|
|
|
|
|
|
|
assert stats
|
|
|
|
assert stats["user_count"] == 1
|
2019-12-21 12:41:19 +01:00
|
|
|
assert stats["status_count"] == 1
|
2019-10-02 09:13:52 +02:00
|
|
|
assert stats["domain_count"] == 2
|
|
|
|
end
|
|
|
|
|
|
|
|
test "get peers", %{conn: conn} do
|
|
|
|
insert(:user, %{local: false, nickname: "u@peer1.com"})
|
|
|
|
insert(:user, %{local: false, nickname: "u@peer2.com"})
|
|
|
|
|
|
|
|
Pleroma.Stats.force_update()
|
|
|
|
|
|
|
|
conn = get(conn, "/api/v1/instance/peers")
|
|
|
|
|
2020-05-05 15:24:16 +02:00
|
|
|
assert result = json_response_and_validate_schema(conn, 200)
|
2019-10-02 09:13:52 +02:00
|
|
|
|
|
|
|
assert ["peer1.com", "peer2.com"] == Enum.sort(result)
|
|
|
|
end
|
|
|
|
end
|