From 5a8e0208b1cfb1995353b83338f20dc5cca195e1 Mon Sep 17 00:00:00 2001
From: Mark Felder <feld@FreeBSD.org>
Date: Tue, 30 Jun 2020 15:25:10 -0500
Subject: [PATCH] Add fields limits to instance metadata, add tests

---
 lib/pleroma/web/mastodon_api/views/instance_view.ex  | 12 +++++++++++-
 .../controllers/instance_controller_test.exs         |  2 ++
 2 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/lib/pleroma/web/mastodon_api/views/instance_view.ex b/lib/pleroma/web/mastodon_api/views/instance_view.ex
index 118678962..347480d49 100644
--- a/lib/pleroma/web/mastodon_api/views/instance_view.ex
+++ b/lib/pleroma/web/mastodon_api/views/instance_view.ex
@@ -38,7 +38,8 @@ defmodule Pleroma.Web.MastodonAPI.InstanceView do
         metadata: %{
           account_activation_required: Keyword.get(instance, :account_activation_required),
           features: features(),
-          federation: federation()
+          federation: federation(),
+          fields_limits: fields_limits()
         },
         vapid_public_key: Keyword.get(Pleroma.Web.Push.vapid_config(), :public_key)
       }
@@ -89,4 +90,13 @@ defmodule Pleroma.Web.MastodonAPI.InstanceView do
     end
     |> Map.put(:enabled, Config.get([:instance, :federating]))
   end
+
+  def fields_limits do
+    %{
+      maxFields: Config.get([:instance, :max_account_fields]),
+      maxRemoteFields: Config.get([:instance, :max_remote_account_fields]),
+      nameLength: Config.get([:instance, :account_field_name_length]),
+      valueLength: Config.get([:instance, :account_field_value_length])
+    }
+  end
 end
diff --git a/test/web/mastodon_api/controllers/instance_controller_test.exs b/test/web/mastodon_api/controllers/instance_controller_test.exs
index 8bdfdddd1..95ee26416 100644
--- a/test/web/mastodon_api/controllers/instance_controller_test.exs
+++ b/test/web/mastodon_api/controllers/instance_controller_test.exs
@@ -35,8 +35,10 @@ defmodule Pleroma.Web.MastodonAPI.InstanceControllerTest do
              "background_image" => _
            } = result
 
+    assert result["pleroma"]["metadata"]["account_activation_required"] != nil
     assert result["pleroma"]["metadata"]["features"]
     assert result["pleroma"]["metadata"]["federation"]
+    assert result["pleroma"]["metadata"]["fields_limits"]
     assert result["pleroma"]["vapid_public_key"]
 
     assert email == from_config_email
-- 
2.49.0