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