[#518] Fixed /api/v1/instance ("domain_count" value) and /api/v1/instance/peers respo...
authorIvan Tashkinov <ivantashkinov@gmail.com>
Wed, 16 Jan 2019 08:07:46 +0000 (11:07 +0300)
committerIvan Tashkinov <ivantashkinov@gmail.com>
Wed, 16 Jan 2019 08:07:46 +0000 (11:07 +0300)
lib/pleroma/stats.ex
test/web/mastodon_api/mastodon_api_controller_test.exs

index 8a030ecd0e02b557f84785de8fc3d7866f193ee6..65a6d58b5a583b958c2d9aa3b7ddc59fc3e81abb 100644 (file)
@@ -34,10 +34,11 @@ defmodule Pleroma.Stats do
     peers =
       from(
         u in Pleroma.User,
-        select: fragment("distinct ?->'host'", u.info),
+        select: fragment("distinct split_part(?, '@', 2)", u.nickname),
         where: u.local != ^true
       )
       |> Repo.all()
+      |> Enum.filter(& &1)
 
     domain_count = Enum.count(peers)
 
index fe8f845c7c0f6dde2a063cda4c76702d1bbd30aa..62677638dcd37147f2b7057729c52e1b34334d80 100644 (file)
@@ -1471,20 +1471,36 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do
   test "get instance information", %{conn: conn} do
     insert(:user, %{local: true})
     user = insert(:user, %{local: true})
-    insert(:user, %{local: false})
+    insert(:user, %{local: false, nickname: "u@peer1.com"})
+    insert(:user, %{local: false, nickname: "u@peer2.com"})
 
     {:ok, _} = TwitterAPI.create_status(user, %{"status" => "cofe"})
 
     Pleroma.Stats.update_stats()
 
-    conn =
-      conn
-      |> get("/api/v1/instance")
+    conn = get(conn, "/api/v1/instance")
+
+    assert result = json_response(conn, 200)
+
+    stats = result["stats"]
+
+    assert stats
+    assert stats["user_count"] == 2
+    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.update_stats()
+
+    conn = get(conn, "/api/v1/instance/peers")
 
     assert result = json_response(conn, 200)
 
-    assert result["stats"]["user_count"] == 2
-    assert result["stats"]["status_count"] == 1
+    assert ["peer1.com", "peer2.com"] == Enum.sort(result)
   end
 
   test "put settings", %{conn: conn} do