Merge branch 'develop' of git.pleroma.social:pleroma/pleroma into remake-remodel-dms
authorlain <lain@soykaf.club>
Mon, 20 Apr 2020 10:37:17 +0000 (12:37 +0200)
committerlain <lain@soykaf.club>
Mon, 20 Apr 2020 10:37:17 +0000 (12:37 +0200)
1  2 
lib/pleroma/web/activity_pub/activity_pub.ex
lib/pleroma/web/activity_pub/side_effects.ex
lib/pleroma/web/mastodon_api/views/notification_view.ex
test/web/activity_pub/side_effects_test.exs

index 0b05d178bcac496d54738bba1bd9c8cfb96bcb13,4da1ab67f58385e2548c1e923fb742f09afc5f7b..2a99518317007c6bd52cc1e5a6dedaf149a8b3b3
@@@ -141,9 -122,9 +138,12 @@@ defmodule Pleroma.Web.MastodonAPI.Notif
            |> put_status(parent_activity_fn.(), reading_user, render_opts)
            |> put_emoji(activity)
  
 +        "pleroma:chat_mention" ->
 +          put_chat_message(response, activity, reading_user, render_opts)
 +
+         type when type in ["follow", "follow_request"] ->
+           response
          _ ->
            nil
        end
index d3ad4866cc6d4d0411e94499e9b9f2991dc59dcd,0b6b551564723da5d3869fe1be0ca053f68d80c8..2889a577c290f2437d27f8924b546ca014bfc54c
@@@ -33,67 -33,10 +34,72 @@@ defmodule Pleroma.Web.ActivityPub.SideE
        assert object.data["like_count"] == 1
        assert user.ap_id in object.data["likes"]
      end
+     test "creates a notification", %{like: like, poster: poster} do
+       {:ok, like, _} = SideEffects.handle(like)
+       assert Repo.get_by(Notification, user_id: poster.id, activity_id: like.id)
+     end
    end
 +
 +  describe "creation of ChatMessages" do
 +    test "notifies the recipient" do
 +      author = insert(:user, local: false)
 +      recipient = insert(:user, local: true)
 +
 +      {:ok, chat_message_data, _meta} = Builder.chat_message(author, recipient.ap_id, "hey")
 +      {:ok, chat_message_object} = Object.create(chat_message_data)
 +
 +      {:ok, create_activity_data, _meta} =
 +        Builder.create(author, chat_message_object.data["id"], [recipient.ap_id])
 +
 +      {:ok, create_activity, _meta} = ActivityPub.persist(create_activity_data, local: false)
 +
 +      {:ok, _create_activity, _meta} = SideEffects.handle(create_activity)
 +
 +      assert Repo.get_by(Notification, user_id: recipient.id, activity_id: create_activity.id)
 +    end
 +
 +    test "it creates a Chat for the local users and bumps the unread count" do
 +      author = insert(:user, local: false)
 +      recipient = insert(:user, local: true)
 +
 +      {:ok, chat_message_data, _meta} = Builder.chat_message(author, recipient.ap_id, "hey")
 +      {:ok, chat_message_object} = Object.create(chat_message_data)
 +
 +      {:ok, create_activity_data, _meta} =
 +        Builder.create(author, chat_message_object.data["id"], [recipient.ap_id])
 +
 +      {:ok, create_activity, _meta} = ActivityPub.persist(create_activity_data, local: false)
 +
 +      {:ok, _create_activity, _meta} = SideEffects.handle(create_activity)
 +
 +      # The remote user won't get a chat
 +      chat = Chat.get(author.id, recipient.ap_id)
 +      refute chat
 +
 +      # The local user will get a chat
 +      chat = Chat.get(recipient.id, author.ap_id)
 +      assert chat
 +
 +      author = insert(:user, local: true)
 +      recipient = insert(:user, local: true)
 +
 +      {:ok, chat_message_data, _meta} = Builder.chat_message(author, recipient.ap_id, "hey")
 +      {:ok, chat_message_object} = Object.create(chat_message_data)
 +
 +      {:ok, create_activity_data, _meta} =
 +        Builder.create(author, chat_message_object.data["id"], [recipient.ap_id])
 +
 +      {:ok, create_activity, _meta} = ActivityPub.persist(create_activity_data, local: false)
 +
 +      {:ok, _create_activity, _meta} = SideEffects.handle(create_activity)
 +
 +      # Both users are local and get the chat
 +      chat = Chat.get(author.id, recipient.ap_id)
 +      assert chat
 +
 +      chat = Chat.get(recipient.id, author.ap_id)
 +      assert chat
 +    end
 +  end
  end