diff options
Diffstat (limited to 'test')
| -rw-r--r-- | test/notification_test.exs | 95 | ||||
| -rw-r--r-- | test/web/twitter_api/twitter_api_test.exs | 2 | 
2 files changed, 96 insertions, 1 deletions
| diff --git a/test/notification_test.exs b/test/notification_test.exs index 79290ac78..a36ed5bb8 100644 --- a/test/notification_test.exs +++ b/test/notification_test.exs @@ -3,6 +3,7 @@ defmodule Pleroma.NotificationTest do    alias Pleroma.Web.TwitterAPI.TwitterAPI    alias Pleroma.Web.CommonAPI    alias Pleroma.{User, Notification} +  alias Pleroma.Web.ActivityPub.Transmogrifier    import Pleroma.Factory    describe "create_notifications" do @@ -156,6 +157,100 @@ defmodule Pleroma.NotificationTest do      end    end +  describe "notification target determination" do +    test "it sends notifications to addressed users in new messages" do +      user = insert(:user) +      other_user = insert(:user) + +      {:ok, activity} = +        CommonAPI.post(user, %{ +          "status" => "hey @#{other_user.nickname}!" +        }) + +      assert other_user in Notification.get_notified_from_activity(activity) +    end + +    test "it sends notifications to mentioned users in new messages" do +      user = insert(:user) +      other_user = insert(:user) + +      create_activity = %{ +        "@context" => "https://www.w3.org/ns/activitystreams", +        "type" => "Create", +        "to" => ["https://www.w3.org/ns/activitystreams#Public"], +        "actor" => user.ap_id, +        "object" => %{ +          "type" => "Note", +          "content" => "message with a Mention tag, but no explicit tagging", +          "tag" => [ +            %{ +              "type" => "Mention", +              "href" => other_user.ap_id, +              "name" => other_user.nickname +            } +          ], +          "attributedTo" => user.ap_id +        } +      } + +      {:ok, activity} = Transmogrifier.handle_incoming(create_activity) + +      assert other_user in Notification.get_notified_from_activity(activity) +    end + +    test "it does not send notifications to users who are only cc in new messages" do +      user = insert(:user) +      other_user = insert(:user) + +      create_activity = %{ +        "@context" => "https://www.w3.org/ns/activitystreams", +        "type" => "Create", +        "to" => ["https://www.w3.org/ns/activitystreams#Public"], +        "cc" => [other_user.ap_id], +        "actor" => user.ap_id, +        "object" => %{ +          "type" => "Note", +          "content" => "hi everyone", +          "attributedTo" => user.ap_id +        } +      } + +      {:ok, activity} = Transmogrifier.handle_incoming(create_activity) + +      assert other_user not in Notification.get_notified_from_activity(activity) +    end + +    test "it does not send notification to mentioned users in likes" do +      user = insert(:user) +      other_user = insert(:user) +      third_user = insert(:user) + +      {:ok, activity_one} = +        CommonAPI.post(user, %{ +          "status" => "hey @#{other_user.nickname}!" +        }) + +      {:ok, activity_two, _} = CommonAPI.favorite(activity_one.id, third_user) + +      assert other_user not in Notification.get_notified_from_activity(activity_two) +    end + +    test "it does not send notification to mentioned users in announces" do +      user = insert(:user) +      other_user = insert(:user) +      third_user = insert(:user) + +      {:ok, activity_one} = +        CommonAPI.post(user, %{ +          "status" => "hey @#{other_user.nickname}!" +        }) + +      {:ok, activity_two, _} = CommonAPI.repeat(activity_one.id, third_user) + +      assert other_user not in Notification.get_notified_from_activity(activity_two) +    end +  end +    describe "notification lifecycle" do      test "liking an activity results in 1 notification, then 0 if the activity is deleted" do        user = insert(:user) diff --git a/test/web/twitter_api/twitter_api_test.exs b/test/web/twitter_api/twitter_api_test.exs index 6486540f8..8b9920bd9 100644 --- a/test/web/twitter_api/twitter_api_test.exs +++ b/test/web/twitter_api/twitter_api_test.exs @@ -48,7 +48,7 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPITest do               "https://www.w3.org/ns/activitystreams#Public"             ) -    assert Enum.member?(get_in(activity.data, ["cc"]), "shp") +    assert Enum.member?(get_in(activity.data, ["to"]), "shp")      assert activity.local == true      assert %{"moominmamma" => "http://localhost:4001/finmoji/128px/moominmamma-128.png"} = | 
