search indexing metadata respects discoverable flag
authorstwf <steven.fuchs@dockyard.com>
Mon, 14 Sep 2020 17:18:11 +0000 (13:18 -0400)
committerstwf <steven.fuchs@dockyard.com>
Mon, 14 Sep 2020 17:18:11 +0000 (13:18 -0400)
lib/pleroma/web/metadata/restrict_indexing.ex
test/web/metadata/metadata_test.exs
test/web/metadata/restrict_indexing_test.exs

index f1560789657724965acda5f46e9053ed764e2cfa..a1dcb6e15145ea0da013a139a8723a6bb580c51a 100644 (file)
@@ -10,7 +10,9 @@ defmodule Pleroma.Web.Metadata.Providers.RestrictIndexing do
   """
 
   @impl true
-  def build_tags(%{user: %{local: false}}) do
+  def build_tags(%{user: %{local: true, discoverable: true}}), do: []
+
+  def build_tags(_) do
     [
       {:meta,
        [
@@ -19,7 +21,4 @@ defmodule Pleroma.Web.Metadata.Providers.RestrictIndexing do
        ], []}
     ]
   end
-
-  @impl true
-  def build_tags(%{user: %{local: true}}), do: []
 end
index 9d3121b7bb876eea8dc2a980d640193e1a954285..fe30096289c48bd0469dd8e94ada0fe9e85fae63 100644 (file)
@@ -18,17 +18,32 @@ defmodule Pleroma.Web.MetadataTest do
     test "for local user" do
       user = insert(:user)
 
+      assert Pleroma.Web.Metadata.build_tags(%{user: user}) =~
+               "<meta content=\"noindex, noarchive\" name=\"robots\">"
+    end
+
+    test "for local user set to discoverable" do
+      user = insert(:user, discoverable: true)
+
       refute Pleroma.Web.Metadata.build_tags(%{user: user}) =~
                "<meta content=\"noindex, noarchive\" name=\"robots\">"
     end
   end
 
   describe "no metadata for private instances" do
-    test "for local user" do
+    test "for local user set to discoverable" do
       clear_config([:instance, :public], false)
-      user = insert(:user, bio: "This is my secret fedi account bio")
+      user = insert(:user, bio: "This is my secret fedi account bio", discoverable: true)
 
       assert "" = Pleroma.Web.Metadata.build_tags(%{user: user})
     end
+
+    test "search exclusion metadata is included" do
+      clear_config([:instance, :public], false)
+      user = insert(:user, bio: "This is my secret fedi account bio")
+
+      assert "<meta content=\"noindex, noarchive\" name=\"robots\">" ==
+               Pleroma.Web.Metadata.build_tags(%{user: user})
+    end
   end
 end
index aad0bac422f5feda4d574878f7247c57da34195c..6b3a653724dcca51d29815b560a1afcc7388b1eb 100644 (file)
@@ -14,8 +14,14 @@ defmodule Pleroma.Web.Metadata.Providers.RestrictIndexingTest do
 
     test "for local user" do
       assert Pleroma.Web.Metadata.Providers.RestrictIndexing.build_tags(%{
-               user: %Pleroma.User{local: true}
+               user: %Pleroma.User{local: true, discoverable: true}
              }) == []
     end
+
+    test "for local user when discoverable is false" do
+      assert Pleroma.Web.Metadata.Providers.RestrictIndexing.build_tags(%{
+               user: %Pleroma.User{local: true, discoverable: false}
+             }) == [{:meta, [name: "robots", content: "noindex, noarchive"], []}]
+    end
   end
 end