77 lines
		
	
	
	
		
			2.2 KiB
		
	
	
	
		
			Elixir
		
	
	
	
	
	
			
		
		
	
	
			77 lines
		
	
	
	
		
			2.2 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(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.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(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
 | 
