a9197b0c579f1a591b452367ee59d1ca411035d0
[akkoma] / test / web / activity_pub / views / object_view_test.exs
1 # Pleroma: A lightweight social networking server
2 # Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/>
3 # SPDX-License-Identifier: AGPL-3.0-only
4
5 defmodule Pleroma.Web.ActivityPub.ObjectViewTest do
6 use Pleroma.DataCase
7 import Pleroma.Factory
8
9 alias Pleroma.Object
10 alias Pleroma.Web.ActivityPub.ObjectView
11 alias Pleroma.Web.CommonAPI
12
13 test "renders a note object" do
14 note = insert(:note)
15
16 result = ObjectView.render("object.json", %{object: note})
17
18 assert result["id"] == note.data["id"]
19 assert result["to"] == note.data["to"]
20 assert result["content"] == note.data["content"]
21 assert result["type"] == "Note"
22 assert result["@context"]
23 end
24
25 test "renders a note activity" do
26 note = insert(:note_activity)
27 object = Object.normalize(note)
28
29 result = ObjectView.render("object.json", %{object: note})
30
31 assert result["id"] == note.data["id"]
32 assert result["to"] == note.data["to"]
33 assert result["object"]["type"] == "Note"
34 assert result["object"]["content"] == object.data["content"]
35 assert result["type"] == "Create"
36 assert result["@context"]
37 end
38
39 describe "note activity's `replies` collection rendering" do
40 clear_config([:activitypub, :note_replies_output_limit]) do
41 Pleroma.Config.put([:activitypub, :note_replies_output_limit], 5)
42 end
43
44 test "renders `replies` collection for a note activity" do
45 user = insert(:user)
46 activity = insert(:note_activity, user: user)
47
48 {:ok, self_reply1} =
49 CommonAPI.post(user, %{"status" => "self-reply 1", "in_reply_to_status_id" => activity.id})
50
51 replies_uris = [self_reply1.object.data["id"]]
52 result = ObjectView.render("object.json", %{object: refresh_record(activity)})
53
54 assert %{
55 "type" => "Collection",
56 "first" => %{"type" => "Collection", "items" => ^replies_uris}
57 } = get_in(result, ["object", "replies"])
58 end
59 end
60
61 test "renders a like activity" do
62 note = insert(:note_activity)
63 object = Object.normalize(note)
64 user = insert(:user)
65
66 {:ok, like_activity, _} = CommonAPI.favorite(note.id, user)
67
68 result = ObjectView.render("object.json", %{object: like_activity})
69
70 assert result["id"] == like_activity.data["id"]
71 assert result["object"] == object.data["id"]
72 assert result["type"] == "Like"
73 end
74
75 test "renders an announce activity" do
76 note = insert(:note_activity)
77 object = Object.normalize(note)
78 user = insert(:user)
79
80 {:ok, announce_activity, _} = CommonAPI.repeat(note.id, user)
81
82 result = ObjectView.render("object.json", %{object: announce_activity})
83
84 assert result["id"] == announce_activity.data["id"]
85 assert result["object"] == object.data["id"]
86 assert result["type"] == "Announce"
87 end
88 end