forked from AkkomaGang/akkoma
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 @@ def pin_data_from_featured_collection(
|
||||||
)
|
)
|
||||||
when type in ["OrderedCollection", "Collection"] do
|
when type in ["OrderedCollection", "Collection"] do
|
||||||
{:ok, objects} = Collections.Fetcher.fetch_collection(collection)
|
{: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
|
end
|
||||||
|
|
||||||
def fetch_and_prepare_featured_from_ap_id(nil) do
|
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 @@ test "fetches user featured collection using the first property" do
|
||||||
assert Map.has_key?(data, "http://inserted")
|
assert Map.has_key?(data, "http://inserted")
|
||||||
end
|
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
|
test "it fetches the appropriate tag-restricted posts" do
|
||||||
user = insert(:user)
|
user = insert(:user)
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue