2019-07-10 05:13:23 +00:00
|
|
|
# Pleroma: A lightweight social networking server
|
2022-02-26 06:11:42 +00:00
|
|
|
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
2019-07-10 05:13:23 +00:00
|
|
|
# SPDX-License-Identifier: AGPL-3.0-only
|
|
|
|
|
2017-12-11 17:19:46 +00:00
|
|
|
defmodule Pleroma.Web.ActivityPub.ObjectViewTest do
|
|
|
|
use Pleroma.DataCase
|
|
|
|
import Pleroma.Factory
|
|
|
|
|
2019-07-08 16:53:02 +00:00
|
|
|
alias Pleroma.Object
|
2017-12-11 17:19:46 +00:00
|
|
|
alias Pleroma.Web.ActivityPub.ObjectView
|
2019-03-05 02:52:23 +00:00
|
|
|
alias Pleroma.Web.CommonAPI
|
2017-12-11 17:19:46 +00:00
|
|
|
|
|
|
|
test "renders a note object" do
|
|
|
|
note = insert(:note)
|
|
|
|
|
|
|
|
result = ObjectView.render("object.json", %{object: note})
|
|
|
|
|
|
|
|
assert result["id"] == note.data["id"]
|
|
|
|
assert result["to"] == note.data["to"]
|
|
|
|
assert result["content"] == note.data["content"]
|
|
|
|
assert result["type"] == "Note"
|
2018-11-08 15:05:28 +00:00
|
|
|
assert result["@context"]
|
2017-12-11 17:19:46 +00:00
|
|
|
end
|
2018-11-17 22:29:08 +00:00
|
|
|
|
|
|
|
test "renders a note activity" do
|
|
|
|
note = insert(:note_activity)
|
2021-01-04 12:38:31 +00:00
|
|
|
object = Object.normalize(note, fetch: false)
|
2018-11-17 22:29:08 +00:00
|
|
|
|
|
|
|
result = ObjectView.render("object.json", %{object: note})
|
|
|
|
|
|
|
|
assert result["id"] == note.data["id"]
|
|
|
|
assert result["to"] == note.data["to"]
|
|
|
|
assert result["object"]["type"] == "Note"
|
2019-07-08 16:53:02 +00:00
|
|
|
assert result["object"]["content"] == object.data["content"]
|
2018-11-17 22:29:08 +00:00
|
|
|
assert result["type"] == "Create"
|
|
|
|
assert result["@context"]
|
|
|
|
end
|
|
|
|
|
2020-02-08 16:58:02 +00:00
|
|
|
describe "note activity's `replies` collection rendering" do
|
2020-03-20 15:33:00 +00:00
|
|
|
setup do: clear_config([:activitypub, :note_replies_output_limit], 5)
|
2020-02-08 16:58:02 +00:00
|
|
|
|
|
|
|
test "renders `replies` collection for a note activity" do
|
|
|
|
user = insert(:user)
|
|
|
|
activity = insert(:note_activity, user: user)
|
|
|
|
|
|
|
|
{:ok, self_reply1} =
|
2020-05-12 19:59:26 +00:00
|
|
|
CommonAPI.post(user, %{status: "self-reply 1", in_reply_to_status_id: activity.id})
|
2020-02-08 16:58:02 +00:00
|
|
|
|
2020-02-09 07:17:21 +00:00
|
|
|
replies_uris = [self_reply1.object.data["id"]]
|
2020-02-08 16:58:02 +00:00
|
|
|
result = ObjectView.render("object.json", %{object: refresh_record(activity)})
|
|
|
|
|
2020-02-09 14:34:48 +00:00
|
|
|
assert %{"type" => "Collection", "items" => ^replies_uris} =
|
|
|
|
get_in(result, ["object", "replies"])
|
2020-02-08 16:58:02 +00:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2018-11-17 22:29:08 +00:00
|
|
|
test "renders a like activity" do
|
|
|
|
note = insert(:note_activity)
|
2021-01-04 12:38:31 +00:00
|
|
|
object = Object.normalize(note, fetch: false)
|
2018-11-17 22:29:08 +00:00
|
|
|
user = insert(:user)
|
|
|
|
|
2019-10-16 14:16:39 +00:00
|
|
|
{:ok, like_activity} = CommonAPI.favorite(user, note.id)
|
2018-11-17 22:29:08 +00:00
|
|
|
|
|
|
|
result = ObjectView.render("object.json", %{object: like_activity})
|
|
|
|
|
|
|
|
assert result["id"] == like_activity.data["id"]
|
2019-07-08 16:53:02 +00:00
|
|
|
assert result["object"] == object.data["id"]
|
2018-11-17 22:29:08 +00:00
|
|
|
assert result["type"] == "Like"
|
|
|
|
end
|
|
|
|
|
|
|
|
test "renders an announce activity" do
|
|
|
|
note = insert(:note_activity)
|
2021-01-04 12:38:31 +00:00
|
|
|
object = Object.normalize(note, fetch: false)
|
2018-11-17 22:29:08 +00:00
|
|
|
user = insert(:user)
|
|
|
|
|
2020-05-21 11:16:21 +00:00
|
|
|
{:ok, announce_activity} = CommonAPI.repeat(note.id, user)
|
2018-11-17 22:29:08 +00:00
|
|
|
|
|
|
|
result = ObjectView.render("object.json", %{object: announce_activity})
|
|
|
|
|
|
|
|
assert result["id"] == announce_activity.data["id"]
|
2019-07-08 16:53:02 +00:00
|
|
|
assert result["object"] == object.data["id"]
|
2018-11-17 22:29:08 +00:00
|
|
|
assert result["type"] == "Announce"
|
|
|
|
end
|
2022-09-11 02:54:04 +00:00
|
|
|
|
|
|
|
test "renders an undo announce activity" do
|
|
|
|
note = insert(:note_activity)
|
|
|
|
user = insert(:user)
|
|
|
|
|
|
|
|
{:ok, announce} = CommonAPI.repeat(note.id, user)
|
|
|
|
{:ok, undo} = CommonAPI.unrepeat(note.id, user)
|
|
|
|
|
|
|
|
result = ObjectView.render("object.json", %{object: undo})
|
|
|
|
|
|
|
|
assert result["id"] == undo.data["id"]
|
|
|
|
assert result["object"] == announce.data["id"]
|
|
|
|
assert result["type"] == "Undo"
|
|
|
|
end
|
2017-12-11 17:19:46 +00:00
|
|
|
end
|