Add test for friendica featured collection
authorFloatingGhost <hannah@coffee-and-dreams.uk>
Sun, 3 Jul 2022 15:59:12 +0000 (16:59 +0100)
committerFloatingGhost <hannah@coffee-and-dreams.uk>
Sun, 3 Jul 2022 15:59:12 +0000 (16:59 +0100)
test/fixtures/friendica/friendica_featured_collection.json [new file with mode: 0644]
test/fixtures/friendica/friendica_featured_collection_first.json [new file with mode: 0644]
test/pleroma/web/activity_pub/activity_pub_test.exs

diff --git a/test/fixtures/friendica/friendica_featured_collection.json b/test/fixtures/friendica/friendica_featured_collection.json
new file mode 100644 (file)
index 0000000..f640975
--- /dev/null
@@ -0,0 +1,29 @@
+{
+    "@context": [
+        "https://www.w3.org/ns/activitystreams",
+        "https://w3id.org/security/v1",
+        {
+            "vcard": "http://www.w3.org/2006/vcard/ns#",
+            "dfrn": "http://purl.org/macgirvin/dfrn/1.0/",
+            "diaspora": "https://diasporafoundation.org/ns/",
+            "litepub": "http://litepub.social/ns#",
+            "toot": "http://joinmastodon.org/ns#",
+            "featured": {
+                "@id": "toot:featured",
+                "@type": "@id"
+            },
+            "schema": "http://schema.org#",
+            "manuallyApprovesFollowers": "as:manuallyApprovesFollowers",
+            "sensitive": "as:sensitive",
+            "Hashtag": "as:Hashtag",
+            "directMessage": "litepub:directMessage",
+            "discoverable": "toot:discoverable",
+            "PropertyValue": "schema:PropertyValue",
+            "value": "schema:value"
+        }
+    ],
+    "id": "https://friendica.example.com/featured/raha",
+    "type": "OrderedCollection",
+    "totalItems": 0,
+    "first": "https://friendica.example.com/featured/raha?page=1"
+}
diff --git a/test/fixtures/friendica/friendica_featured_collection_first.json b/test/fixtures/friendica/friendica_featured_collection_first.json
new file mode 100644 (file)
index 0000000..7d450e4
--- /dev/null
@@ -0,0 +1,30 @@
+{
+    "@context": [
+        "https://www.w3.org/ns/activitystreams",
+        "https://w3id.org/security/v1",
+        {
+            "vcard": "http://www.w3.org/2006/vcard/ns#",
+            "dfrn": "http://purl.org/macgirvin/dfrn/1.0/",
+            "diaspora": "https://diasporafoundation.org/ns/",
+            "litepub": "http://litepub.social/ns#",
+            "toot": "http://joinmastodon.org/ns#",
+            "featured": {
+                "@id": "toot:featured",
+                "@type": "@id"
+            },
+            "schema": "http://schema.org#",
+            "manuallyApprovesFollowers": "as:manuallyApprovesFollowers",
+            "sensitive": "as:sensitive",
+            "Hashtag": "as:Hashtag",
+            "directMessage": "litepub:directMessage",
+            "discoverable": "toot:discoverable",
+            "PropertyValue": "schema:PropertyValue",
+            "value": "schema:value"
+        }
+    ],
+    "id": "https://friendica.example.com/featured/raha?page=1",
+    "type": "OrderedCollectionPage",
+    "totalItems": 0,
+    "partOf": "https://friendica.example.com/featured/raha",
+    "orderedItems": []
+}
index 574ef0d7155da69623db2c7488495e5735a87e4a..b21b9ee283969b893bb92f58f80d0663890b5e8c 100644 (file)
@@ -314,6 +314,46 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do
     end
   end
 
+  test "fetches user featured collection using the first property" do
+    ap_id = "https://friendica.example.com/raha"
+    featured_url = "https://friendica.example.com/raha/collections/featured"
+    first_url = "https://friendica.mnementh.co.uk/featured/spyro?page=1"
+
+    featured_data =
+      "test/fixtures/friendica/friendica_featured_collection.json"
+      |> File.read!()
+
+    page_data =
+      "test/fixtures/friendica/friendica_featured_collection.json"
+      |> File.read!()
+
+    Tesla.Mock.mock(fn
+      %{
+        method: :get,
+        url: ^featured_url
+      } ->
+        %Tesla.Env{
+          status: 200,
+          body: featured_data,
+          headers: [{"content-type", "application/activity+json"}]
+        }
+    end)
+
+    Tesla.Mock.mock_global(fn
+      %{
+        method: :get,
+        url: ^first_url
+      } ->
+        %Tesla.Env{
+          status: 200,
+          body: page_data,
+          headers: [{"content-type", "application/activity+json"}]
+        }
+    end)
+
+    {:ok, data} = ActivityPub.fetch_and_prepare_featured_from_ap_id(featured_url)
+  end
+
   test "it fetches the appropriate tag-restricted posts" do
     user = insert(:user)