ActivityPub: Use is_unicode_emoji? function.
[akkoma] / test / web / pleroma_api / pleroma_api_controller_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.PleromaAPI.PleromaAPIControllerTest do
6 use Pleroma.Web.ConnCase
7
8 alias Pleroma.Conversation.Participation
9 alias Pleroma.Repo
10 alias Pleroma.Web.CommonAPI
11
12 import Pleroma.Factory
13
14 test "POST /api/v1/pleroma/statuses/:id/react_with_emoji", %{conn: conn} do
15 user = insert(:user)
16 other_user = insert(:user)
17
18 {:ok, activity} = CommonAPI.post(user, %{"status" => "#cofe"})
19
20 result =
21 conn
22 |> assign(:user, other_user)
23 |> post("/api/v1/pleroma/statuses/#{activity.id}/react_with_emoji", %{"emoji" => "☕"})
24
25 assert %{"id" => id} = json_response(result, 200)
26 assert to_string(activity.id) == id
27 end
28
29 test "GET /api/v1/pleroma/statuses/:id/emoji_reactions_by", %{conn: conn} do
30 user = insert(:user)
31 other_user = insert(:user)
32
33 {:ok, activity} = CommonAPI.post(user, %{"status" => "#cofe"})
34
35 result =
36 conn
37 |> get("/api/v1/pleroma/statuses/#{activity.id}/emoji_reactions_by")
38 |> json_response(200)
39
40 assert result == %{}
41
42 {:ok, _, _} = CommonAPI.react_with_emoji(activity.id, other_user, "🎅")
43
44 result =
45 conn
46 |> get("/api/v1/pleroma/statuses/#{activity.id}/emoji_reactions_by")
47 |> json_response(200)
48
49 [represented_user] = result["🎅"]
50 assert represented_user["id"] == other_user.id
51 end
52
53 test "/api/v1/pleroma/conversations/:id", %{conn: conn} do
54 user = insert(:user)
55 other_user = insert(:user)
56
57 {:ok, _activity} =
58 CommonAPI.post(user, %{"status" => "Hi @#{other_user.nickname}!", "visibility" => "direct"})
59
60 [participation] = Participation.for_user(other_user)
61
62 result =
63 conn
64 |> assign(:user, other_user)
65 |> get("/api/v1/pleroma/conversations/#{participation.id}")
66 |> json_response(200)
67
68 assert result["id"] == participation.id |> to_string()
69 end
70
71 test "/api/v1/pleroma/conversations/:id/statuses", %{conn: conn} do
72 user = insert(:user)
73 other_user = insert(:user)
74 third_user = insert(:user)
75
76 {:ok, _activity} =
77 CommonAPI.post(user, %{"status" => "Hi @#{third_user.nickname}!", "visibility" => "direct"})
78
79 {:ok, activity} =
80 CommonAPI.post(user, %{"status" => "Hi @#{other_user.nickname}!", "visibility" => "direct"})
81
82 [participation] = Participation.for_user(other_user)
83
84 {:ok, activity_two} =
85 CommonAPI.post(other_user, %{
86 "status" => "Hi!",
87 "in_reply_to_status_id" => activity.id,
88 "in_reply_to_conversation_id" => participation.id
89 })
90
91 result =
92 conn
93 |> assign(:user, other_user)
94 |> get("/api/v1/pleroma/conversations/#{participation.id}/statuses")
95 |> json_response(200)
96
97 assert length(result) == 2
98
99 id_one = activity.id
100 id_two = activity_two.id
101 assert [%{"id" => ^id_one}, %{"id" => ^id_two}] = result
102 end
103
104 test "PATCH /api/v1/pleroma/conversations/:id", %{conn: conn} do
105 user = insert(:user)
106 other_user = insert(:user)
107
108 {:ok, _activity} = CommonAPI.post(user, %{"status" => "Hi", "visibility" => "direct"})
109
110 [participation] = Participation.for_user(user)
111
112 participation = Repo.preload(participation, :recipients)
113
114 assert [user] == participation.recipients
115 assert other_user not in participation.recipients
116
117 result =
118 conn
119 |> assign(:user, user)
120 |> patch("/api/v1/pleroma/conversations/#{participation.id}", %{
121 "recipients" => [user.id, other_user.id]
122 })
123 |> json_response(200)
124
125 assert result["id"] == participation.id |> to_string
126
127 [participation] = Participation.for_user(user)
128 participation = Repo.preload(participation, :recipients)
129
130 assert user in participation.recipients
131 assert other_user in participation.recipients
132 end
133 end