Merge remote-tracking branch 'origin/develop' into pleroma-conversations
[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 "/api/v1/pleroma/conversations/:id/statuses", %{conn: conn} do
15 user = insert(:user)
16 other_user = insert(:user)
17 third_user = insert(:user)
18
19 {:ok, _activity} =
20 CommonAPI.post(user, %{"status" => "Hi @#{third_user.nickname}!", "visibility" => "direct"})
21
22 {:ok, activity} =
23 CommonAPI.post(user, %{"status" => "Hi @#{other_user.nickname}!", "visibility" => "direct"})
24
25 [participation] = Participation.for_user(other_user)
26
27 {:ok, activity_two} =
28 CommonAPI.post(other_user, %{
29 "status" => "Hi!",
30 "in_reply_to_status_id" => activity.id,
31 "in_reply_to_conversation_id" => participation.id
32 })
33
34 result =
35 conn
36 |> assign(:user, other_user)
37 |> get("/api/v1/pleroma/conversations/#{participation.id}/statuses")
38 |> json_response(200)
39
40 assert length(result) == 2
41
42 id_one = activity.id
43 id_two = activity_two.id
44 assert [%{"id" => ^id_one}, %{"id" => ^id_two}] = result
45 end
46
47 test "PATCH /api/v1/pleroma/conversations/:id", %{conn: conn} do
48 user = insert(:user)
49 other_user = insert(:user)
50
51 {:ok, _activity} = CommonAPI.post(user, %{"status" => "Hi", "visibility" => "direct"})
52
53 [participation] = Participation.for_user(user)
54
55 participation = Repo.preload(participation, :recipients)
56
57 assert [user] == participation.recipients
58 assert other_user not in participation.recipients
59
60 result =
61 conn
62 |> assign(:user, user)
63 |> patch("/api/v1/pleroma/conversations/#{participation.id}", %{
64 "recipients" => [user.id, other_user.id]
65 })
66 |> json_response(200)
67
68 assert result["id"] == participation.id |> to_string
69
70 assert recipients = result["pleroma"]["recipients"]
71 recipient_ids = Enum.map(recipients, & &1["id"])
72
73 assert user.id in recipient_ids
74 assert other_user.id in recipient_ids
75 end
76 end