mirror of
https://git.youjo.love/youjo/youjo-be.git
synced 2024-11-20 05:49:54 +01:00
don't error out if the featured collection has a string ID
This commit is contained in:
parent
1f6deb0ef4
commit
0a55c37182
3 changed files with 60 additions and 1 deletions
|
@ -1657,7 +1657,13 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do
|
|||
)
|
||||
when type in ["OrderedCollection", "Collection"] do
|
||||
{:ok, objects} = Collections.Fetcher.fetch_collection(collection)
|
||||
Map.new(objects, fn %{"id" => object_ap_id} -> {object_ap_id, NaiveDateTime.utc_now()} end)
|
||||
|
||||
# Items can either be a map _or_ a string
|
||||
objects
|
||||
|> Map.new(fn
|
||||
ap_id when is_binary(ap_id) -> {ap_id, NaiveDateTime.utc_now()}
|
||||
%{"id" => object_ap_id} -> {object_ap_id, NaiveDateTime.utc_now()}
|
||||
end)
|
||||
end
|
||||
|
||||
def fetch_and_prepare_featured_from_ap_id(nil) do
|
||||
|
|
20
test/fixtures/mastodon/featured_collection.json
vendored
Normal file
20
test/fixtures/mastodon/featured_collection.json
vendored
Normal file
|
@ -0,0 +1,20 @@
|
|||
{
|
||||
"@context": [
|
||||
"https://www.w3.org/ns/activitystreams",
|
||||
{
|
||||
"ostatus": "http://ostatus.org#",
|
||||
"atomUri": "ostatus:atomUri",
|
||||
"inReplyToAtomUri": "ostatus:inReplyToAtomUri",
|
||||
"conversation": "ostatus:conversation",
|
||||
"sensitive": "as:sensitive",
|
||||
"toot": "http://joinmastodon.org/ns#",
|
||||
"votersCount": "toot:votersCount"
|
||||
}
|
||||
],
|
||||
"id": "https://example.com/users/alisaie/collections/featured",
|
||||
"type": "OrderedCollection",
|
||||
"totalItems": 5,
|
||||
"orderedItems": [
|
||||
"https://example.com/users/alisaie/statuses/108311386746229284"
|
||||
]
|
||||
}
|
|
@ -347,6 +347,39 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do
|
|||
assert Map.has_key?(data, "http://inserted")
|
||||
end
|
||||
|
||||
test "fetches user featured when it has string IDs" do
|
||||
featured_url = "https://example.com/alisaie/collections/featured"
|
||||
dead_url = "https://example.com/users/alisaie/statuses/108311386746229284"
|
||||
|
||||
featured_data =
|
||||
"test/fixtures/mastodon/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"}]
|
||||
}
|
||||
|
||||
%{
|
||||
method: :get,
|
||||
url: ^dead_url
|
||||
} ->
|
||||
%Tesla.Env{
|
||||
status: 404,
|
||||
body: "{}",
|
||||
headers: [{"content-type", "application/activity+json"}]
|
||||
}
|
||||
end)
|
||||
|
||||
{:ok, %{}} = ActivityPub.fetch_and_prepare_featured_from_ap_id(featured_url)
|
||||
end
|
||||
|
||||
test "it fetches the appropriate tag-restricted posts" do
|
||||
user = insert(:user)
|
||||
|
||||
|
|
Loading…
Reference in a new issue