1 defmodule Pleroma.Web.ActivityPub.VisibilityTest do
4 alias Pleroma.Web.ActivityPub.Visibility
5 alias Pleroma.Web.CommonAPI
10 mentioned = insert(:user)
11 following = insert(:user)
12 unrelated = insert(:user)
13 {:ok, following} = Pleroma.User.follow(following, user)
16 CommonAPI.post(user, %{"status" => "@#{mentioned.nickname}", "visibility" => "public"})
19 CommonAPI.post(user, %{"status" => "@#{mentioned.nickname}", "visibility" => "private"})
22 CommonAPI.post(user, %{"status" => "@#{mentioned.nickname}", "visibility" => "direct"})
25 CommonAPI.post(user, %{"status" => "@#{mentioned.nickname}", "visibility" => "unlisted"})
39 test "is_direct?", %{public: public, private: private, direct: direct, unlisted: unlisted} do
40 assert Visibility.is_direct?(direct)
41 refute Visibility.is_direct?(public)
42 refute Visibility.is_direct?(private)
43 refute Visibility.is_direct?(unlisted)
46 test "is_public?", %{public: public, private: private, direct: direct, unlisted: unlisted} do
47 refute Visibility.is_public?(direct)
48 assert Visibility.is_public?(public)
49 refute Visibility.is_public?(private)
50 assert Visibility.is_public?(unlisted)
53 test "is_private?", %{public: public, private: private, direct: direct, unlisted: unlisted} do
54 refute Visibility.is_private?(direct)
55 refute Visibility.is_private?(public)
56 assert Visibility.is_private?(private)
57 refute Visibility.is_private?(unlisted)
60 test "visible_for_user?", %{
70 # All visible to author
72 assert Visibility.visible_for_user?(public, user)
73 assert Visibility.visible_for_user?(private, user)
74 assert Visibility.visible_for_user?(unlisted, user)
75 assert Visibility.visible_for_user?(direct, user)
77 # All visible to a mentioned user
79 assert Visibility.visible_for_user?(public, mentioned)
80 assert Visibility.visible_for_user?(private, mentioned)
81 assert Visibility.visible_for_user?(unlisted, mentioned)
82 assert Visibility.visible_for_user?(direct, mentioned)
84 # DM not visible for just follower
86 assert Visibility.visible_for_user?(public, following)
87 assert Visibility.visible_for_user?(private, following)
88 assert Visibility.visible_for_user?(unlisted, following)
89 refute Visibility.visible_for_user?(direct, following)
91 # Public and unlisted visible for unrelated user
93 assert Visibility.visible_for_user?(public, unrelated)
94 assert Visibility.visible_for_user?(unlisted, unrelated)
95 refute Visibility.visible_for_user?(private, unrelated)
96 refute Visibility.visible_for_user?(direct, unrelated)