ObjectValidators.{Announce,EmojiReact,Like}: Fix context, actor & addressing
[akkoma] / test / pleroma / web / activity_pub / object_validators / announce_validation_test.exs
index 9613dea9bf03a11a54fb5348a3e102ec6418d9f8..20964e855979b46c6647ec72589aa7e7752325d3 100644 (file)
@@ -1,5 +1,5 @@
 # Pleroma: A lightweight social networking server
-# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
+# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
 # SPDX-License-Identifier: AGPL-3.0-only
 
 defmodule Pleroma.Web.ActivityPub.ObjectValidators.AnnounceValidationTest do
@@ -18,7 +18,7 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.AnnounceValidationTest do
       announcer = insert(:user)
       {:ok, post_activity} = CommonAPI.post(user, %{status: "uguu"})
 
-      object = Object.normalize(post_activity, false)
+      object = Object.normalize(post_activity, fetch: false)
       {:ok, valid_announce, []} = Builder.announce(announcer, object)
 
       %{
@@ -33,6 +33,18 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.AnnounceValidationTest do
       assert {:ok, _object, _meta} = ObjectValidator.validate(valid_announce, [])
     end
 
+    test "keeps announced object context", %{valid_announce: valid_announce} do
+      assert %Object{data: %{"context" => object_context}} =
+               Object.get_cached_by_ap_id(valid_announce["object"])
+
+      {:ok, %{"context" => context}, _} =
+        valid_announce
+        |> Map.put("context", "https://example.org/invalid_context_id")
+        |> ObjectValidator.validate([])
+
+      assert context == object_context
+    end
+
     test "returns an error if the object can't be found", %{valid_announce: valid_announce} do
       without_object =
         valid_announce
@@ -51,16 +63,6 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.AnnounceValidationTest do
       assert {:object, {"can't find object", []}} in cng.errors
     end
 
-    test "returns an error if we don't have the actor", %{valid_announce: valid_announce} do
-      nonexisting_actor =
-        valid_announce
-        |> Map.put("actor", "https://gensokyo.2hu/users/raymoo")
-
-      {:error, cng} = ObjectValidator.validate(nonexisting_actor, [])
-
-      assert {:actor, {"can't find user", []}} in cng.errors
-    end
-
     test "returns an error if the actor already announced the object", %{
       valid_announce: valid_announce,
       announcer: announcer,
@@ -81,7 +83,7 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.AnnounceValidationTest do
       {:ok, post_activity} =
         CommonAPI.post(user, %{status: "a secret post", visibility: "private"})
 
-      object = Object.normalize(post_activity, false)
+      object = Object.normalize(post_activity, fetch: false)
 
       # Another user can't announce it
       {:ok, announce, []} = Builder.announce(announcer, object, public: false)