Make outbound transmogrifier aware of edit history
This commit is contained in:
parent
5321fd0012
commit
014096aeef
5 changed files with 109 additions and 54 deletions
|
|
@ -312,6 +312,28 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do
|
|||
|
||||
assert url == "http://localhost:4001/emoji/dino%20walking.gif"
|
||||
end
|
||||
|
||||
test "Updates of Notes are handled" do
|
||||
user = insert(:user)
|
||||
|
||||
{:ok, activity} = CommonAPI.post(user, %{status: "everybody do the dinosaur :dinosaur:"})
|
||||
{:ok, update} = CommonAPI.update(user, activity, %{status: "mew mew :blank:"})
|
||||
|
||||
{:ok, prepared} = Transmogrifier.prepare_outgoing(update.data)
|
||||
|
||||
assert %{
|
||||
"content" => "mew mew :blank:",
|
||||
"tag" => [%{"name" => ":blank:", "type" => "Emoji"}],
|
||||
"formerRepresentations" => %{
|
||||
"orderedItems" => [
|
||||
%{
|
||||
"content" => "everybody do the dinosaur :dinosaur:",
|
||||
"tag" => [%{"name" => ":dinosaur:", "type" => "Emoji"}]
|
||||
}
|
||||
]
|
||||
}
|
||||
} = prepared["object"]
|
||||
end
|
||||
end
|
||||
|
||||
describe "user upgrade" do
|
||||
|
|
@ -576,57 +598,42 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do
|
|||
end
|
||||
end
|
||||
|
||||
describe "strip_internal_fields/1" do
|
||||
test "it strips internal fields in formerRepresentations" do
|
||||
describe "prepare_object/1" do
|
||||
test "it processes history" do
|
||||
original = %{
|
||||
"formerRepresentations" => %{
|
||||
"orderedItems" => [
|
||||
%{"generator" => %{}}
|
||||
%{
|
||||
"generator" => %{},
|
||||
"emoji" => %{"blobcat" => "http://localhost:4001/emoji/blobcat.png"}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
stripped = Transmogrifier.strip_internal_fields(original)
|
||||
processed = Transmogrifier.prepare_object(original)
|
||||
|
||||
refute Map.has_key?(
|
||||
Enum.at(stripped["formerRepresentations"]["orderedItems"], 0),
|
||||
"generator"
|
||||
)
|
||||
history_item = Enum.at(processed["formerRepresentations"]["orderedItems"], 0)
|
||||
|
||||
refute Map.has_key?(history_item, "generator")
|
||||
|
||||
assert [%{"name" => ":blobcat:"}] = history_item["tag"]
|
||||
end
|
||||
|
||||
test "it strips internal fields in maybe badly-formed formerRepresentations" do
|
||||
original = %{
|
||||
"formerRepresentations" => %{
|
||||
"orderedItems" => [
|
||||
%{"generator" => %{}},
|
||||
"https://example.com/1"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
stripped = Transmogrifier.strip_internal_fields(original)
|
||||
|
||||
refute Map.has_key?(
|
||||
Enum.at(stripped["formerRepresentations"]["orderedItems"], 0),
|
||||
"generator"
|
||||
)
|
||||
|
||||
assert Enum.at(stripped["formerRepresentations"]["orderedItems"], 1) ==
|
||||
"https://example.com/1"
|
||||
end
|
||||
|
||||
test "it ignores if formerRepresentations does not look like an OrderedCollection" do
|
||||
test "it works when there is no or bad history" do
|
||||
original = %{
|
||||
"formerRepresentations" => %{
|
||||
"items" => [
|
||||
%{"generator" => %{}}
|
||||
%{
|
||||
"generator" => %{},
|
||||
"emoji" => %{"blobcat" => "http://localhost:4001/emoji/blobcat.png"}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
stripped = Transmogrifier.strip_internal_fields(original)
|
||||
|
||||
assert Map.has_key?(Enum.at(stripped["formerRepresentations"]["items"], 0), "generator")
|
||||
processed = Transmogrifier.prepare_object(original)
|
||||
assert processed["formerRepresentations"] == original["formerRepresentations"]
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue