82 lines
		
	
	
	
		
			2.4 KiB
		
	
	
	
		
			Elixir
		
	
	
	
	
	
			
		
		
	
	
			82 lines
		
	
	
	
		
			2.4 KiB
		
	
	
	
		
			Elixir
		
	
	
	
	
	
# Pleroma: A lightweight social networking server
 | 
						|
# Copyright © 2017-2020 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_and_validate_schema(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" => _,
 | 
						|
             "background_image" => _
 | 
						|
           } = result
 | 
						|
 | 
						|
    assert result["pleroma"]["metadata"]["features"]
 | 
						|
    assert result["pleroma"]["metadata"]["federation"]
 | 
						|
    assert result["pleroma"]["vapid_public_key"]
 | 
						|
 | 
						|
    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.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"})
 | 
						|
 | 
						|
    Pleroma.Stats.force_update()
 | 
						|
 | 
						|
    conn = get(conn, "/api/v1/instance")
 | 
						|
 | 
						|
    assert result = json_response_and_validate_schema(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_and_validate_schema(conn, 200)
 | 
						|
 | 
						|
    assert ["peer1.com", "peer2.com"] == Enum.sort(result)
 | 
						|
  end
 | 
						|
end
 |