Fix broken attachments from owncast (#31)
authorfloatingghost <hannah@coffee-and-dreams.uk>
Fri, 1 Jul 2022 11:14:55 +0000 (11:14 +0000)
committerfloatingghost <hannah@coffee-and-dreams.uk>
Fri, 1 Jul 2022 11:14:55 +0000 (11:14 +0000)
Reviewed-on: https://akkoma.dev/AkkomaGang/akkoma/pulls/31

lib/pleroma/web/activity_pub/object_validators/article_note_page_validator.ex
test/fixtures/owncast-note-with-attachment.json [new file with mode: 0644]
test/pleroma/web/activity_pub/object_validators/article_note_page_validator_test.exs

index 815995895e067879bf97f381bdef557d0ac20651..a9f395c5eaf397614863bc71c4b5c91b4d792fd0 100644 (file)
@@ -108,6 +108,7 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.ArticleNotePageValidator do
     |> fix_replies()
     |> fix_source()
     |> fix_misskey_content()
+    |> Transmogrifier.fix_attachments()
     |> Transmogrifier.fix_emoji()
     |> Transmogrifier.fix_content_map()
   end
diff --git a/test/fixtures/owncast-note-with-attachment.json b/test/fixtures/owncast-note-with-attachment.json
new file mode 100644 (file)
index 0000000..68cb6bb
--- /dev/null
@@ -0,0 +1,31 @@
+{
+  "attachment": {
+    "content": "Live stream preview",
+    "type": "Image",
+    "url": "https://owncast.localhost.localdomain/preview.gif?us=KjfNX387gm"
+  },
+  "attributedTo": "https://owncast.localhost.localdomain/federation/user/streamer",
+  "audience": "https://www.w3.org/ns/activitystreams#Public",
+  "content": "<p>I've gone live!</p><p></p><p><a class=\"hashtag\" href=\"https://directory.owncast.online/tags/owncast\">#owncast</a> <a class=\"hashtag\" href=\"https://directory.owncast.online/tags/streaming\">#streaming</a></p><a href=\"https://owncast.localhost.localdomain\">https://owncast.localhost.localdomain</a>",
+  "id": "https://owncast.localhost.localdomain/federation/KjBNuq8ng",
+  "published": "2022-04-17T15:42:03Z",
+  "tag": [
+    {
+      "href": "https://directory.owncast.online/tags/owncast",
+      "name": "#owncast",
+      "type": "Hashtag"
+    },
+    {
+      "href": "https://directory.owncast.online/tags/streaming",
+      "name": "#streaming",
+      "type": "Hashtag"
+    },
+    {
+      "href": "https://directory.owncast.online/tags/owncast",
+      "name": "#owncast",
+      "type": "Hashtag"
+    }
+  ],
+  "to": "https://www.w3.org/ns/activitystreams#Public",
+  "type": "Note"
+}
index 2bd1e46c131376f719a5c3ede92940c4e99779cf..717a704d407649e0efe21d384953ed0d78902283 100644 (file)
@@ -52,5 +52,16 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.ArticleNotePageValidatorTest
       %{valid?: true, changes: %{replies: ["https://bookwyrm.com/user/TestUser/status/18"]}} =
         ArticleNotePageValidator.cast_and_validate(note)
     end
+
+    test "a note with an attachment should work", _ do
+      insert(:user, %{ap_id: "https://owncast.localhost.localdomain/federation/user/streamer"})
+
+      note =
+        "test/fixtures/owncast-note-with-attachment.json"
+        |> File.read!()
+        |> Jason.decode!()
+
+      %{valid?: true} = ArticleNotePageValidator.cast_and_validate(note)
+    end
   end
 end