diff options
Diffstat (limited to 'test')
| -rw-r--r-- | test/web/activity_pub/side_effects_test.exs | 13 | ||||
| -rw-r--r-- | test/web/pleroma_api/controllers/chat_controller_test.exs | 22 | ||||
| -rw-r--r-- | test/web/pleroma_api/views/chat_message_reference_view_test.exs (renamed from test/web/pleroma_api/views/chat_message_view_test.exs) | 20 | 
3 files changed, 42 insertions, 13 deletions
| diff --git a/test/web/activity_pub/side_effects_test.exs b/test/web/activity_pub/side_effects_test.exs index 210ba6ef0..ff6b3ac15 100644 --- a/test/web/activity_pub/side_effects_test.exs +++ b/test/web/activity_pub/side_effects_test.exs @@ -8,6 +8,7 @@ defmodule Pleroma.Web.ActivityPub.SideEffectsTest do    alias Pleroma.Activity    alias Pleroma.Chat +  alias Pleroma.ChatMessageReference    alias Pleroma.Notification    alias Pleroma.Object    alias Pleroma.Repo @@ -330,7 +331,7 @@ defmodule Pleroma.Web.ActivityPub.SideEffectsTest do        end      end -    test "it creates a Chat for the local users and bumps the unread count, except for the author" do +    test "it creates a Chat and ChatMessageReferences for the local users and bumps the unread count, except for the author" do        author = insert(:user, local: true)        recipient = insert(:user, local: true) @@ -347,8 +348,18 @@ defmodule Pleroma.Web.ActivityPub.SideEffectsTest do        chat = Chat.get(author.id, recipient.ap_id)        assert chat.unread == 0 +      [cm_ref] = ChatMessageReference.for_chat_query(chat) |> Repo.all() + +      assert cm_ref.object.data["content"] == "hey" +      assert cm_ref.seen == true +        chat = Chat.get(recipient.id, author.ap_id)        assert chat.unread == 1 + +      [cm_ref] = ChatMessageReference.for_chat_query(chat) |> Repo.all() + +      assert cm_ref.object.data["content"] == "hey" +      assert cm_ref.seen == false      end      test "it creates a Chat for the local users and bumps the unread count" do diff --git a/test/web/pleroma_api/controllers/chat_controller_test.exs b/test/web/pleroma_api/controllers/chat_controller_test.exs index d79aa3148..bd4024c09 100644 --- a/test/web/pleroma_api/controllers/chat_controller_test.exs +++ b/test/web/pleroma_api/controllers/chat_controller_test.exs @@ -5,6 +5,7 @@ defmodule Pleroma.Web.PleromaAPI.ChatControllerTest do    use Pleroma.Web.ConnCase, async: true    alias Pleroma.Chat +  alias Pleroma.ChatMessageReference    alias Pleroma.Object    alias Pleroma.User    alias Pleroma.Web.ActivityPub.ActivityPub @@ -95,7 +96,7 @@ defmodule Pleroma.Web.PleromaAPI.ChatControllerTest do    describe "DELETE /api/v1/pleroma/chats/:id/messages/:message_id" do      setup do: oauth_access(["write:statuses"]) -    test "it deletes a message for the author of the message", %{conn: conn, user: user} do +    test "it deletes a message from the chat", %{conn: conn, user: user} do        recipient = insert(:user)        {:ok, message} = @@ -107,23 +108,32 @@ defmodule Pleroma.Web.PleromaAPI.ChatControllerTest do        chat = Chat.get(user.id, recipient.ap_id) +      cm_ref = ChatMessageReference.for_chat_and_object(chat, object) + +      # Deleting your own message removes the message and the reference        result =          conn          |> put_req_header("content-type", "application/json") -        |> delete("/api/v1/pleroma/chats/#{chat.id}/messages/#{object.id}") +        |> delete("/api/v1/pleroma/chats/#{chat.id}/messages/#{cm_ref.id}")          |> json_response_and_validate_schema(200) -      assert result["id"] == to_string(object.id) +      assert result["id"] == cm_ref.id +      refute ChatMessageReference.get_by_id(cm_ref.id) +      assert %{data: %{"type" => "Tombstone"}} = Object.get_by_id(object.id) +      # Deleting other people's messages just removes the reference        object = Object.normalize(other_message, false) +      cm_ref = ChatMessageReference.for_chat_and_object(chat, object)        result =          conn          |> put_req_header("content-type", "application/json") -        |> delete("/api/v1/pleroma/chats/#{chat.id}/messages/#{object.id}") -        |> json_response(400) +        |> delete("/api/v1/pleroma/chats/#{chat.id}/messages/#{cm_ref.id}") +        |> json_response_and_validate_schema(200) -      assert result == %{"error" => "could_not_delete"} +      assert result["id"] == cm_ref.id +      refute ChatMessageReference.get_by_id(cm_ref.id) +      assert Object.get_by_id(object.id)      end    end diff --git a/test/web/pleroma_api/views/chat_message_view_test.exs b/test/web/pleroma_api/views/chat_message_reference_view_test.exs index d7a2d10a5..00024d52c 100644 --- a/test/web/pleroma_api/views/chat_message_view_test.exs +++ b/test/web/pleroma_api/views/chat_message_reference_view_test.exs @@ -2,14 +2,15 @@  # Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>  # SPDX-License-Identifier: AGPL-3.0-only -defmodule Pleroma.Web.PleromaAPI.ChatMessageViewTest do +defmodule Pleroma.Web.PleromaAPI.ChatMessageReferenceViewTest do    use Pleroma.DataCase    alias Pleroma.Chat +  alias Pleroma.ChatMessageReference    alias Pleroma.Object    alias Pleroma.Web.ActivityPub.ActivityPub    alias Pleroma.Web.CommonAPI -  alias Pleroma.Web.PleromaAPI.ChatMessageView +  alias Pleroma.Web.PleromaAPI.ChatMessageReferenceView    import Pleroma.Factory @@ -30,25 +31,32 @@ defmodule Pleroma.Web.PleromaAPI.ChatMessageViewTest do      object = Object.normalize(activity) -    chat_message = ChatMessageView.render("show.json", object: object, for: user, chat: chat) +    cm_ref = ChatMessageReference.for_chat_and_object(chat, object) -    assert chat_message[:id] == object.id |> to_string() +    chat_message = ChatMessageReferenceView.render("show.json", chat_message_reference: cm_ref) + +    assert chat_message[:id] == cm_ref.id      assert chat_message[:content] == "kippis :firefox:"      assert chat_message[:account_id] == user.id      assert chat_message[:chat_id]      assert chat_message[:created_at] +    assert chat_message[:seen] == true      assert match?([%{shortcode: "firefox"}], chat_message[:emojis])      {:ok, activity} = CommonAPI.post_chat_message(recipient, user, "gkgkgk", media_id: upload.id)      object = Object.normalize(activity) -    chat_message_two = ChatMessageView.render("show.json", object: object, for: user, chat: chat) +    cm_ref = ChatMessageReference.for_chat_and_object(chat, object) + +    chat_message_two = +      ChatMessageReferenceView.render("show.json", chat_message_reference: cm_ref) -    assert chat_message_two[:id] == object.id |> to_string() +    assert chat_message_two[:id] == cm_ref.id      assert chat_message_two[:content] == "gkgkgk"      assert chat_message_two[:account_id] == recipient.id      assert chat_message_two[:chat_id] == chat_message[:chat_id]      assert chat_message_two[:attachment] +    assert chat_message_two[:seen] == false    end  end | 
