diff --git a/test/fixtures/friendica/friendica_featured_collection.json b/test/fixtures/friendica/friendica_featured_collection.json new file mode 100644 index 000000000..f640975f3 --- /dev/null +++ b/test/fixtures/friendica/friendica_featured_collection.json @@ -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 index 000000000..7d450e42f --- /dev/null +++ b/test/fixtures/friendica/friendica_featured_collection_first.json @@ -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": [] +} diff --git a/test/pleroma/web/activity_pub/activity_pub_test.exs b/test/pleroma/web/activity_pub/activity_pub_test.exs index 574ef0d71..b21b9ee28 100644 --- a/test/pleroma/web/activity_pub/activity_pub_test.exs +++ b/test/pleroma/web/activity_pub/activity_pub_test.exs @@ -314,6 +314,46 @@ test "fetches user featured collection" 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)