Don't fail fetching when the user in a replied-to message can't be fetched. See merge request pleroma/pleroma!2711merge-requests/2720/head
@@ -446,12 +446,9 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do | |||
when objtype in ["Article", "Event", "Note", "Video", "Page", "Question", "Answer", "Audio"] do | |||
actor = Containment.get_actor(data) | |||
data = | |||
Map.put(data, "actor", actor) | |||
|> fix_addressing | |||
with nil <- Activity.get_create_by_object_ap_id(object["id"]), | |||
{:ok, %User{} = user} <- User.get_or_fetch_by_ap_id(data["actor"]) do | |||
{:ok, %User{} = user} <- User.get_or_fetch_by_ap_id(actor), | |||
data <- Map.put(data, "actor", actor) |> fix_addressing() do | |||
object = fix_object(object, options) | |||
params = %{ | |||
@@ -0,0 +1,72 @@ | |||
{ | |||
"@context" : [ | |||
"https://www.w3.org/ns/activitystreams", | |||
{ | |||
"atomUri" : "ostatus:atomUri", | |||
"conversation" : "ostatus:conversation", | |||
"inReplyToAtomUri" : "ostatus:inReplyToAtomUri", | |||
"ostatus" : "http://ostatus.org#", | |||
"sensitive" : "as:sensitive", | |||
"toot" : "http://joinmastodon.org/ns#", | |||
"votersCount" : "toot:votersCount" | |||
} | |||
], | |||
"atomUri" : "https://busshi.moe/users/tuxcrafting/statuses/104410921027210069", | |||
"attachment" : [], | |||
"attributedTo" : "https://busshi.moe/users/tuxcrafting", | |||
"cc" : [ | |||
"https://busshi.moe/users/tuxcrafting/followers", | |||
"https://stereophonic.space/users/fixpoint", | |||
"https://blob.cat/users/blobyoumu", | |||
"https://cawfee.club/users/grips", | |||
"https://jaeger.website/users/igel" | |||
], | |||
"content" : "<p><span class=\"h-card\"><a href=\"https://stereophonic.space/users/fixpoint\" class=\"u-url mention\">@<span>fixpoint</span></a></span> <span class=\"h-card\"><a href=\"https://blob.cat/users/blobyoumu\" class=\"u-url mention\">@<span>blobyoumu</span></a></span> <span class=\"h-card\"><a href=\"https://cawfee.club/users/grips\" class=\"u-url mention\">@<span>grips</span></a></span> <span class=\"h-card\"><a href=\"https://jaeger.website/users/igel\" class=\"u-url mention\">@<span>igel</span></a></span> there's a difference between not liking nukes and not liking nuclear power<br />nukes are pretty bad as are all WMDs in general but disliking nuclear power just indicates you are unable of thought</p>", | |||
"contentMap" : { | |||
"en" : "<p><span class=\"h-card\"><a href=\"https://stereophonic.space/users/fixpoint\" class=\"u-url mention\">@<span>fixpoint</span></a></span> <span class=\"h-card\"><a href=\"https://blob.cat/users/blobyoumu\" class=\"u-url mention\">@<span>blobyoumu</span></a></span> <span class=\"h-card\"><a href=\"https://cawfee.club/users/grips\" class=\"u-url mention\">@<span>grips</span></a></span> <span class=\"h-card\"><a href=\"https://jaeger.website/users/igel\" class=\"u-url mention\">@<span>igel</span></a></span> there's a difference between not liking nukes and not liking nuclear power<br />nukes are pretty bad as are all WMDs in general but disliking nuclear power just indicates you are unable of thought</p>" | |||
}, | |||
"conversation" : "https://cawfee.club/contexts/ad6c73d8-efc2-4e74-84ea-2dacf1a27a5e", | |||
"id" : "https://busshi.moe/users/tuxcrafting/statuses/104410921027210069", | |||
"inReplyTo" : "https://stereophonic.space/objects/02997b83-3ea7-4b63-94af-ef3aa2d4ed17", | |||
"inReplyToAtomUri" : "https://stereophonic.space/objects/02997b83-3ea7-4b63-94af-ef3aa2d4ed17", | |||
"published" : "2020-06-26T15:10:19Z", | |||
"replies" : { | |||
"first" : { | |||
"items" : [], | |||
"next" : "https://busshi.moe/users/tuxcrafting/statuses/104410921027210069/replies?only_other_accounts=true&page=true", | |||
"partOf" : "https://busshi.moe/users/tuxcrafting/statuses/104410921027210069/replies", | |||
"type" : "CollectionPage" | |||
}, | |||
"id" : "https://busshi.moe/users/tuxcrafting/statuses/104410921027210069/replies", | |||
"type" : "Collection" | |||
}, | |||
"sensitive" : false, | |||
"summary" : null, | |||
"tag" : [ | |||
{ | |||
"href" : "https://stereophonic.space/users/fixpoint", | |||
"name" : "@fixpoint@stereophonic.space", | |||
"type" : "Mention" | |||
}, | |||
{ | |||
"href" : "https://blob.cat/users/blobyoumu", | |||
"name" : "@blobyoumu@blob.cat", | |||
"type" : "Mention" | |||
}, | |||
{ | |||
"href" : "https://cawfee.club/users/grips", | |||
"name" : "@grips@cawfee.club", | |||
"type" : "Mention" | |||
}, | |||
{ | |||
"href" : "https://jaeger.website/users/igel", | |||
"name" : "@igel@jaeger.website", | |||
"type" : "Mention" | |||
} | |||
], | |||
"to" : [ | |||
"https://www.w3.org/ns/activitystreams#Public" | |||
], | |||
"type" : "Note", | |||
"url" : "https://busshi.moe/@tuxcrafting/104410921027210069" | |||
} |
@@ -0,0 +1,59 @@ | |||
{ | |||
"@context" : [ | |||
"https://www.w3.org/ns/activitystreams", | |||
"https://social.sakamoto.gq/schemas/litepub-0.1.jsonld", | |||
{ | |||
"@language" : "und" | |||
} | |||
], | |||
"actor" : "https://social.sakamoto.gq/users/eal", | |||
"attachment" : [], | |||
"attributedTo" : "https://social.sakamoto.gq/users/eal", | |||
"cc" : [ | |||
"https://social.sakamoto.gq/users/eal/followers" | |||
], | |||
"content" : "<span class=\"h-card\"><a data-user=\"9uw2wH0iTYAMV7XnLU\" class=\"u-url mention\" href=\"https://busshi.moe/@tuxcrafting\" rel=\"ugc\">@<span>tuxcrafting</span></a></span> <span class=\"h-card\"><a data-user=\"9r5l8j8x23NI9KUFu4\" class=\"u-url mention\" href=\"https://stereophonic.space/users/fixpoint\" rel=\"ugc\">@<span>fixpoint</span></a></span> <span class=\"h-card\"><a data-user=\"9orDK545JwjY4Lxjge\" class=\"u-url mention\" href=\"https://blob.cat/users/blobyoumu\" rel=\"ugc\">@<span>blobyoumu</span></a></span> <span class=\"h-card\"><a data-user=\"68184\" class=\"u-url mention\" href=\"https://cawfee.club/users/grips\" rel=\"ugc\">@<span>grips</span></a></span> <span class=\"h-card\"><a data-user=\"9sAmMgHVKjTXKpgx84\" class=\"u-url mention\" href=\"https://jaeger.website/users/igel\" rel=\"ugc\">@<span>igel</span></a></span> What's bad about nukes?", | |||
"context" : "https://cawfee.club/contexts/ad6c73d8-efc2-4e74-84ea-2dacf1a27a5e", | |||
"conversation" : "https://cawfee.club/contexts/ad6c73d8-efc2-4e74-84ea-2dacf1a27a5e", | |||
"id" : "https://social.sakamoto.gq/objects/f20f2497-66d9-4a52-a2e1-1be2a39c32c1", | |||
"inReplyTo" : "https://busshi.moe/users/tuxcrafting/statuses/104410921027210069", | |||
"published" : "2020-06-26T15:20:15.975737Z", | |||
"sensitive" : false, | |||
"summary" : "", | |||
"tag" : [ | |||
{ | |||
"href" : "https://blob.cat/users/blobyoumu", | |||
"name" : "@blobyoumu@blob.cat", | |||
"type" : "Mention" | |||
}, | |||
{ | |||
"href" : "https://busshi.moe/users/tuxcrafting", | |||
"name" : "@tuxcrafting@busshi.moe", | |||
"type" : "Mention" | |||
}, | |||
{ | |||
"href" : "https://cawfee.club/users/grips", | |||
"name" : "@grips@cawfee.club", | |||
"type" : "Mention" | |||
}, | |||
{ | |||
"href" : "https://jaeger.website/users/igel", | |||
"name" : "@igel@jaeger.website", | |||
"type" : "Mention" | |||
}, | |||
{ | |||
"href" : "https://stereophonic.space/users/fixpoint", | |||
"name" : "@fixpoint@stereophonic.space", | |||
"type" : "Mention" | |||
} | |||
], | |||
"to" : [ | |||
"https://busshi.moe/users/tuxcrafting", | |||
"https://www.w3.org/ns/activitystreams#Public", | |||
"https://blob.cat/users/blobyoumu", | |||
"https://stereophonic.space/users/fixpoint", | |||
"https://cawfee.club/users/grips", | |||
"https://jaeger.website/users/igel" | |||
], | |||
"type" : "Note" | |||
} |
@@ -0,0 +1,43 @@ | |||
{ | |||
"@context" : [ | |||
"https://www.w3.org/ns/activitystreams", | |||
"https://social.sakamoto.gq/schemas/litepub-0.1.jsonld", | |||
{ | |||
"@language" : "und" | |||
} | |||
], | |||
"attachment" : [], | |||
"discoverable" : true, | |||
"endpoints" : { | |||
"oauthAuthorizationEndpoint" : "https://social.sakamoto.gq/oauth/authorize", | |||
"oauthRegistrationEndpoint" : "https://social.sakamoto.gq/api/v1/apps", | |||
"oauthTokenEndpoint" : "https://social.sakamoto.gq/oauth/token", | |||
"sharedInbox" : "https://social.sakamoto.gq/inbox", | |||
"uploadMedia" : "https://social.sakamoto.gq/api/ap/upload_media" | |||
}, | |||
"followers" : "https://social.sakamoto.gq/users/eal/followers", | |||
"following" : "https://social.sakamoto.gq/users/eal/following", | |||
"icon" : { | |||
"type" : "Image", | |||
"url" : "https://social.sakamoto.gq/media/f1cb6f79bf6839f3223ca240441f766056b74ddd23c69bcaf8bb1ba1ecff6eec.jpg" | |||
}, | |||
"id" : "https://social.sakamoto.gq/users/eal", | |||
"image" : { | |||
"type" : "Image", | |||
"url" : "https://social.sakamoto.gq/media/e5cccf26421e8366f4e34be3c9d5042b8bc8dcceccc7c8e89785fa312dd9632c.jpg" | |||
}, | |||
"inbox" : "https://social.sakamoto.gq/users/eal/inbox", | |||
"manuallyApprovesFollowers" : false, | |||
"name" : "ìì", | |||
"outbox" : "https://social.sakamoto.gq/users/eal/outbox", | |||
"preferredUsername" : "eal", | |||
"publicKey" : { | |||
"id" : "https://social.sakamoto.gq/users/eal#main-key", | |||
"owner" : "https://social.sakamoto.gq/users/eal", | |||
"publicKeyPem" : "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAz3pF85YOhhv2Zaxv9YQ7\nrCe1aEhetCMVHtrK63tUVGoGdsblyKnVeJNbFcr6k3y35OpHS3HXIi6GzgihYcTu\nONLP4eQMHTnLUNAQZi03mjJA4iIq8v/tm8ZkL2mXsQSAbWj6Iq518mHNN7OvCoNt\n3Xjepl/0kgkc2gsund7m8r+Wu0Fusx6UlUyyAk3PexdDRdSSlVLeskqtP8jtdQDo\nL70pMyL+VD+Qb9RKFdtgJ+M4OqYP+7FVzCqXN0QIPhFf/kvHSLr+c4Y3Wm0nAKHU\n9CwXWXz5Xqscpv41KlgnUCOkTXb5eBSt23lNulae5srVzWBiFb6guiCpNzBGa+Sq\nrwIDAQAB\n-----END PUBLIC KEY-----\n\n" | |||
}, | |||
"summary" : "Pizza napoletana supremacist.<br><br>Any artworks posted here that are good are not mine.", | |||
"tag" : [], | |||
"type" : "Person", | |||
"url" : "https://social.sakamoto.gq/users/eal" | |||
} |
@@ -0,0 +1,59 @@ | |||
{ | |||
"@context" : [ | |||
"https://www.w3.org/ns/activitystreams", | |||
"https://w3id.org/security/v1", | |||
{ | |||
"IdentityProof" : "toot:IdentityProof", | |||
"PropertyValue" : "schema:PropertyValue", | |||
"alsoKnownAs" : { | |||
"@id" : "as:alsoKnownAs", | |||
"@type" : "@id" | |||
}, | |||
"discoverable" : "toot:discoverable", | |||
"featured" : { | |||
"@id" : "toot:featured", | |||
"@type" : "@id" | |||
}, | |||
"focalPoint" : { | |||
"@container" : "@list", | |||
"@id" : "toot:focalPoint" | |||
}, | |||
"manuallyApprovesFollowers" : "as:manuallyApprovesFollowers", | |||
"movedTo" : { | |||
"@id" : "as:movedTo", | |||
"@type" : "@id" | |||
}, | |||
"schema" : "http://schema.org#", | |||
"toot" : "http://joinmastodon.org/ns#", | |||
"value" : "schema:value" | |||
} | |||
], | |||
"attachment" : [], | |||
"discoverable" : true, | |||
"endpoints" : { | |||
"sharedInbox" : "https://busshi.moe/inbox" | |||
}, | |||
"featured" : "https://busshi.moe/users/tuxcrafting/collections/featured", | |||
"followers" : "https://busshi.moe/users/tuxcrafting/followers", | |||
"following" : "https://busshi.moe/users/tuxcrafting/following", | |||
"icon" : { | |||
"mediaType" : "image/jpeg", | |||
"type" : "Image", | |||
"url" : "https://blobcdn.busshi.moe/busshifiles/accounts/avatars/000/046/872/original/054f0806ccb303d0.jpg" | |||
}, | |||
"id" : "https://busshi.moe/users/tuxcrafting", | |||
"inbox" : "https://busshi.moe/users/tuxcrafting/inbox", | |||
"manuallyApprovesFollowers" : true, | |||
"name" : "@tuxcrafting@localhost:8080", | |||
"outbox" : "https://busshi.moe/users/tuxcrafting/outbox", | |||
"preferredUsername" : "tuxcrafting", | |||
"publicKey" : { | |||
"id" : "https://busshi.moe/users/tuxcrafting#main-key", | |||
"owner" : "https://busshi.moe/users/tuxcrafting", | |||
"publicKeyPem" : "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwqWWTBf9OizsBiBhGS/M\nQTT6fB1VvQP6vvxouGZ5cGg1a97V67ouhjJ+nGMuWr++DNYjJYkk2TOynfykk0H/\n8rRSujSe3BNRKYGNzdnRJu/4XxgIE847Fqx5SijSP23JGYcn8TjeSUsN2u2YYVXK\n+Eb3Bu7DjGiqwNon6YB0h5qkGjkMSMVIFn0hZx6Z21bkfYWgra96Ok5OWf7Ck3je\nCuErlCMZcbQcHtFpBueJAxYchjNvm6fqwZxLX/NtaHdr7Fm2kin89mqzliapBlFH\nCXk7Jln6xV5I6ryggPAMzm3fuHzeo0RWlu8lrxLfARBVwaQQZS99bwqp6N9O2aUp\nYwIDAQAB\n-----END PUBLIC KEY-----\n" | |||
}, | |||
"summary" : "<p>expert procrastinator</p><p>trans(humanist|gender|istorized)</p><p>web: <a href=\"https://tuxcrafting.port0.org\" rel=\"nofollow noopener noreferrer\" target=\"_blank\"><span class=\"invisible\">https://</span><span class=\"\">tuxcrafting.port0.org</span><span class=\"invisible\"></span></a><br />pronouns: she/they<br />languages: french (native)/english (fluent)/hebrew (ok-ish)/esperanto (barely)</p>", | |||
"tag" : [], | |||
"type" : "Person", | |||
"url" : "https://busshi.moe/@tuxcrafting" | |||
} |
@@ -26,6 +26,46 @@ defmodule Pleroma.Object.FetcherTest do | |||
:ok | |||
end | |||
describe "error cases" do | |||
setup do | |||
mock(fn | |||
%{method: :get, url: "https://social.sakamoto.gq/notice/9wTkLEnuq47B25EehM"} -> | |||
%Tesla.Env{ | |||
status: 200, | |||
body: File.read!("test/fixtures/fetch_mocks/9wTkLEnuq47B25EehM.json") | |||
} | |||
%{method: :get, url: "https://social.sakamoto.gq/users/eal"} -> | |||
%Tesla.Env{ | |||
status: 200, | |||
body: File.read!("test/fixtures/fetch_mocks/eal.json") | |||
} | |||
%{method: :get, url: "https://busshi.moe/users/tuxcrafting/statuses/104410921027210069"} -> | |||
%Tesla.Env{ | |||
status: 200, | |||
body: File.read!("test/fixtures/fetch_mocks/104410921027210069.json") | |||
} | |||
%{method: :get, url: "https://busshi.moe/users/tuxcrafting"} -> | |||
%Tesla.Env{ | |||
status: 500 | |||
} | |||
end) | |||
:ok | |||
end | |||
@tag capture_log: true | |||
test "it works when fetching the OP actor errors out" do | |||
# Here we simulate a case where the author of the OP can't be read | |||
assert {:ok, _} = | |||
Fetcher.fetch_object_from_id( | |||
"https://social.sakamoto.gq/notice/9wTkLEnuq47B25EehM" | |||
) | |||
end | |||
end | |||
describe "max thread distance restriction" do | |||
@ap_id "http://mastodon.example.org/@admin/99541947525187367" | |||
setup do: clear_config([:instance, :federation_incoming_replies_max_depth]) | |||