diff options
author | kaniini <ariadne@dereferenced.org> | 2019-10-02 10:46:14 +0000 |
---|---|---|
committer | kaniini <ariadne@dereferenced.org> | 2019-10-02 10:46:14 +0000 |
commit | 433f2c0f6854d2838819e08f0fb0a9e8cf058021 (patch) | |
tree | d098664dc27ca996f5797ac5b7fcddc282fe4869 /test/web/mastodon_api/controllers/instance_controller_test.exs | |
parent | debd0a306697f629dd8a9c2e4bf3a9b5f87db77e (diff) | |
parent | c8b01f6667a9b5b158103de449a7769c9274bcc3 (diff) | |
download | pleroma-433f2c0f6854d2838819e08f0fb0a9e8cf058021.tar.gz |
Merge branch 'split-masto-api/instance' into 'develop'
Extract instance actions from `MastodonAPIController` to `InstanceController`
See merge request pleroma/pleroma!1760
Diffstat (limited to 'test/web/mastodon_api/controllers/instance_controller_test.exs')
-rw-r--r-- | test/web/mastodon_api/controllers/instance_controller_test.exs | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/test/web/mastodon_api/controllers/instance_controller_test.exs b/test/web/mastodon_api/controllers/instance_controller_test.exs new file mode 100644 index 000000000..f8049f81f --- /dev/null +++ b/test/web/mastodon_api/controllers/instance_controller_test.exs @@ -0,0 +1,84 @@ +# 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 |