forked from AkkomaGang/akkoma
85 lines
2.4 KiB
Elixir
85 lines
2.4 KiB
Elixir
|
# Pleroma: A lightweight social networking server
|
||
|
# Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/>
|
||
|
# 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")
|
||
|
assert result = json_response(conn, 200)
|
||
|
|
||
|
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" => _,
|
||
|
"poll_limits" => _,
|
||
|
"upload_limit" => _,
|
||
|
"avatar_upload_limit" => _,
|
||
|
"background_upload_limit" => _,
|
||
|
"banner_upload_limit" => _
|
||
|
} = result
|
||
|
|
||
|
assert email == from_config_email
|
||
|
end
|
||
|
|
||
|
test "get instance stats", %{conn: conn} do
|
||
|
user = insert(:user, %{local: true})
|
||
|
|
||
|
user2 = insert(:user, %{local: true})
|
||
|
{:ok, _user2} = User.deactivate(user2, !user2.info.deactivated)
|
||
|
|
||
|
insert(:user, %{local: false, nickname: "u@peer1.com"})
|
||
|
insert(:user, %{local: false, nickname: "u@peer2.com"})
|
||
|
|
||
|
{:ok, _} = Pleroma.Web.CommonAPI.post(user, %{"status" => "cofe"})
|
||
|
|
||
|
# Stats should count users with missing or nil `info.deactivated` value
|
||
|
|
||
|
{:ok, _user} =
|
||
|
user.id
|
||
|
|> User.get_cached_by_id()
|
||
|
|> User.update_info(&Ecto.Changeset.change(&1, %{deactivated: nil}))
|
||
|
|
||
|
Pleroma.Stats.force_update()
|
||
|
|
||
|
conn = get(conn, "/api/v1/instance")
|
||
|
|
||
|
assert result = json_response(conn, 200)
|
||
|
|
||
|
stats = result["stats"]
|
||
|
|
||
|
assert stats
|
||
|
assert stats["user_count"] == 1
|
||
|
assert stats["status_count"] == 1
|
||
|
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")
|
||
|
|
||
|
assert result = json_response(conn, 200)
|
||
|
|
||
|
assert ["peer1.com", "peer2.com"] == Enum.sort(result)
|
||
|
end
|
||
|
end
|