logo

pleroma

My custom branche(s) on git.pleroma.social/pleroma/pleroma
commit: 1e0fa899b65622d9668599ed0f4ff0fdbe2d44e8
parent: d7f4f65560cab7c07969c910ffdf742b159cbb22
Author: lain <lain@soykaf.club>
Date:   Sat,  8 Jun 2019 10:22:15 +0000

Merge branch 'fix/transmogrifier-inReplyTo' into 'develop'

Transmogrifier: Do not crash if inReplyTo does not exist and can't be fetched

See merge request pleroma/pleroma!1259

Diffstat:

Mlib/pleroma/web/activity_pub/transmogrifier.ex2+-
Mtest/web/activity_pub/transmogrifier_test.exs16++++++++++++++++
2 files changed, 17 insertions(+), 1 deletion(-)

diff --git a/lib/pleroma/web/activity_pub/transmogrifier.ex b/lib/pleroma/web/activity_pub/transmogrifier.ex @@ -339,7 +339,7 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do def fix_type(%{"inReplyTo" => reply_id} = object) when is_binary(reply_id) do reply = Object.normalize(reply_id) - if reply.data["type"] == "Question" and object["name"] do + if reply && (reply.data["type"] == "Question" and object["name"]) do Map.put(object, "type", "Answer") else object diff --git a/test/web/activity_pub/transmogrifier_test.exs b/test/web/activity_pub/transmogrifier_test.exs @@ -60,6 +60,22 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do assert returned_object.data["inReplyToAtomUri"] == "https://shitposter.club/notice/2827873" end + test "it does not crash if the object in inReplyTo can't be fetched" do + data = + File.read!("test/fixtures/mastodon-post-activity.json") + |> Poison.decode!() + + object = + data["object"] + |> Map.put("inReplyTo", "https://404.site/whatever") + + data = + data + |> Map.put("object", object) + + {:ok, _returned_activity} = Transmogrifier.handle_incoming(data) + end + test "it works for incoming notices" do data = File.read!("test/fixtures/mastodon-post-activity.json") |> Poison.decode!()