Add test to validate URLs to custom emojis are properly encoded
[akkoma] / test / pleroma / web / activity_pub / transmogrifier_test.exs
index 333bb4f9bf9812167719796463e1418a6990f1c3..aa32ebaab26a8077da0ac954d480d2b28f498bb6 100644 (file)
@@ -31,14 +31,14 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do
 
       follow_data =
         File.read!("test/fixtures/mastodon-follow-activity.json")
-        |> Poison.decode!()
+        |> Jason.decode!()
         |> Map.put("object", user.ap_id)
 
       {:ok, %Activity{data: _, local: false}} = Transmogrifier.handle_incoming(follow_data)
 
       data =
         File.read!("test/fixtures/mastodon-unfollow-activity.json")
-        |> Poison.decode!()
+        |> Jason.decode!()
         |> Map.put("object", follow_data)
 
       {:ok, %Activity{data: data, local: false}} = Transmogrifier.handle_incoming(data)
@@ -281,6 +281,21 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do
 
       {:ok, _modified} = Transmogrifier.prepare_outgoing(activity.data)
     end
+
+    test "custom emoji urls are URI encoded" do
+      # :dinosaur: filename has a space -> dino walking.gif
+      user = insert(:user)
+
+      {:ok, activity} = CommonAPI.post(user, %{status: "everybody do the dinosaur :dinosaur:"})
+
+      {:ok, prepared} = Transmogrifier.prepare_outgoing(activity.data)
+
+      assert length(prepared["object"]["tag"]) == 1
+
+      url = prepared["object"]["tag"] |> List.first() |> Map.get("icon") |> Map.get("url")
+
+      assert url == "http://localhost:4001/emoji/dino%20walking.gif"
+    end
   end
 
   describe "user upgrade" do