1 # Pleroma: A lightweight social networking server
2 # Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/>
3 # SPDX-License-Identifier: AGPL-3.0-only
5 defmodule Pleroma.Web.PleromaAPI.PleromaAPIControllerTest do
6 use Pleroma.Web.ConnCase
8 alias Pleroma.Conversation.Participation
10 alias Pleroma.Web.CommonAPI
12 import Pleroma.Factory
14 test "/api/v1/pleroma/conversations/:id", %{conn: conn} do
16 other_user = insert(:user)
19 CommonAPI.post(user, %{"status" => "Hi @#{other_user.nickname}!", "visibility" => "direct"})
21 [participation] = Participation.for_user(other_user)
25 |> assign(:user, other_user)
26 |> get("/api/v1/pleroma/conversations/#{participation.id}")
29 assert result["id"] == participation.id |> to_string()
32 test "/api/v1/pleroma/conversations/:id/statuses", %{conn: conn} do
34 other_user = insert(:user)
35 third_user = insert(:user)
38 CommonAPI.post(user, %{"status" => "Hi @#{third_user.nickname}!", "visibility" => "direct"})
41 CommonAPI.post(user, %{"status" => "Hi @#{other_user.nickname}!", "visibility" => "direct"})
43 [participation] = Participation.for_user(other_user)
46 CommonAPI.post(other_user, %{
48 "in_reply_to_status_id" => activity.id,
49 "in_reply_to_conversation_id" => participation.id
54 |> assign(:user, other_user)
55 |> get("/api/v1/pleroma/conversations/#{participation.id}/statuses")
58 assert length(result) == 2
61 id_two = activity_two.id
62 assert [%{"id" => ^id_one}, %{"id" => ^id_two}] = result
65 test "PATCH /api/v1/pleroma/conversations/:id", %{conn: conn} do
67 other_user = insert(:user)
69 {:ok, _activity} = CommonAPI.post(user, %{"status" => "Hi", "visibility" => "direct"})
71 [participation] = Participation.for_user(user)
73 participation = Repo.preload(participation, :recipients)
75 assert [user] == participation.recipients
76 assert other_user not in participation.recipients
80 |> assign(:user, user)
81 |> patch("/api/v1/pleroma/conversations/#{participation.id}", %{
82 "recipients" => [user.id, other_user.id]
86 assert result["id"] == participation.id |> to_string
88 [participation] = Participation.for_user(user)
89 participation = Repo.preload(participation, :recipients)
91 assert user in participation.recipients
92 assert other_user in participation.recipients