1 # Pleroma: A lightweight social networking server
2 # Copyright © 2019 Pleroma Authors <https://pleroma.social/>
3 # SPDX-License-Identifier: AGPL-3.0-only
5 defmodule Pleroma.Web.ActivityPub.PublisherTest do
10 alias Pleroma.Activity
11 alias Pleroma.Web.ActivityPub.Publisher
13 @as_public "https://www.w3.org/ns/activitystreams#Public"
15 describe "determine_inbox/2" do
16 test "it returns sharedInbox for messages involving as:Public in to" do
19 info: %{source_data: %{"endpoints" => %{"sharedInbox" => "http://example.com/inbox"}}}
23 data: %{"to" => [@as_public], "cc" => [user.follower_address]}
26 assert Publisher.determine_inbox(activity, user) == "http://example.com/inbox"
29 test "it returns sharedInbox for messages involving as:Public in cc" do
32 info: %{source_data: %{"endpoints" => %{"sharedInbox" => "http://example.com/inbox"}}}
36 data: %{"cc" => [@as_public], "to" => [user.follower_address]}
39 assert Publisher.determine_inbox(activity, user) == "http://example.com/inbox"
42 test "it returns sharedInbox for messages involving multiple recipients in to" do
45 info: %{source_data: %{"endpoints" => %{"sharedInbox" => "http://example.com/inbox"}}}
48 user_two = insert(:user)
49 user_three = insert(:user)
52 data: %{"cc" => [], "to" => [user.ap_id, user_two.ap_id, user_three.ap_id]}
55 assert Publisher.determine_inbox(activity, user) == "http://example.com/inbox"
58 test "it returns sharedInbox for messages involving multiple recipients in cc" do
61 info: %{source_data: %{"endpoints" => %{"sharedInbox" => "http://example.com/inbox"}}}
64 user_two = insert(:user)
65 user_three = insert(:user)
68 data: %{"to" => [], "cc" => [user.ap_id, user_two.ap_id, user_three.ap_id]}
71 assert Publisher.determine_inbox(activity, user) == "http://example.com/inbox"
74 test "it returns sharedInbox for messages involving multiple recipients in total" do
79 "inbox" => "http://example.com/personal-inbox",
80 "endpoints" => %{"sharedInbox" => "http://example.com/inbox"}
85 user_two = insert(:user)
88 data: %{"to" => [user_two.ap_id], "cc" => [user.ap_id]}
91 assert Publisher.determine_inbox(activity, user) == "http://example.com/inbox"
94 test "it returns inbox for messages involving single recipients in total" do
99 "inbox" => "http://example.com/personal-inbox",
100 "endpoints" => %{"sharedInbox" => "http://example.com/inbox"}
105 activity = %Activity{
106 data: %{"to" => [user.ap_id], "cc" => []}
109 assert Publisher.determine_inbox(activity, user) == "http://example.com/personal-inbox"