ObjectValidator Test: Extract attachments.
authorlain <lain@soykaf.club>
Mon, 6 Jul 2020 10:59:06 +0000 (12:59 +0200)
committerlain <lain@soykaf.club>
Mon, 6 Jul 2020 10:59:06 +0000 (12:59 +0200)
test/web/activity_pub/object_validator_test.exs
test/web/activity_pub/object_validators/attachment_validator_test.exs [new file with mode: 0644]

index f38bf7e0803ee1ad0eefc98431886f3cf37280a7..361ec552614ffc3eaaa6d094531336c1c8bc44ae 100644 (file)
@@ -1,3 +1,7 @@
+# Pleroma: A lightweight social networking server
+# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
+# SPDX-License-Identifier: AGPL-3.0-only
+
 defmodule Pleroma.Web.ActivityPub.ObjectValidatorTest do
   use Pleroma.DataCase
 
@@ -5,75 +9,12 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidatorTest do
   alias Pleroma.Web.ActivityPub.ActivityPub
   alias Pleroma.Web.ActivityPub.Builder
   alias Pleroma.Web.ActivityPub.ObjectValidator
-  alias Pleroma.Web.ActivityPub.ObjectValidators.AttachmentValidator
   alias Pleroma.Web.ActivityPub.ObjectValidators.LikeValidator
   alias Pleroma.Web.ActivityPub.Utils
   alias Pleroma.Web.CommonAPI
 
   import Pleroma.Factory
 
-  describe "attachments" do
-    test "works with honkerific attachments" do
-      attachment = %{
-        "mediaType" => "",
-        "name" => "",
-        "summary" => "298p3RG7j27tfsZ9RQ.jpg",
-        "type" => "Document",
-        "url" => "https://honk.tedunangst.com/d/298p3RG7j27tfsZ9RQ.jpg"
-      }
-
-      assert {:ok, attachment} =
-               AttachmentValidator.cast_and_validate(attachment)
-               |> Ecto.Changeset.apply_action(:insert)
-
-      assert attachment.mediaType == "application/octet-stream"
-    end
-
-    test "it turns mastodon attachments into our attachments" do
-      attachment = %{
-        "url" =>
-          "http://mastodon.example.org/system/media_attachments/files/000/000/002/original/334ce029e7bfb920.jpg",
-        "type" => "Document",
-        "name" => nil,
-        "mediaType" => "image/jpeg"
-      }
-
-      {:ok, attachment} =
-        AttachmentValidator.cast_and_validate(attachment)
-        |> Ecto.Changeset.apply_action(:insert)
-
-      assert [
-               %{
-                 href:
-                   "http://mastodon.example.org/system/media_attachments/files/000/000/002/original/334ce029e7bfb920.jpg",
-                 type: "Link",
-                 mediaType: "image/jpeg"
-               }
-             ] = attachment.url
-
-      assert attachment.mediaType == "image/jpeg"
-    end
-
-    test "it handles our own uploads" do
-      user = insert(:user)
-
-      file = %Plug.Upload{
-        content_type: "image/jpg",
-        path: Path.absname("test/fixtures/image.jpg"),
-        filename: "an_image.jpg"
-      }
-
-      {:ok, attachment} = ActivityPub.upload(file, actor: user.ap_id)
-
-      {:ok, attachment} =
-        attachment.data
-        |> AttachmentValidator.cast_and_validate()
-        |> Ecto.Changeset.apply_action(:insert)
-
-      assert attachment.mediaType == "image/jpeg"
-    end
-  end
-
   describe "chat message create activities" do
     test "it is invalid if the object already exists" do
       user = insert(:user)
diff --git a/test/web/activity_pub/object_validators/attachment_validator_test.exs b/test/web/activity_pub/object_validators/attachment_validator_test.exs
new file mode 100644 (file)
index 0000000..558bb31
--- /dev/null
@@ -0,0 +1,74 @@
+# Pleroma: A lightweight social networking server
+# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
+# SPDX-License-Identifier: AGPL-3.0-only
+
+defmodule Pleroma.Web.ActivityPub.ObjectValidators.AttachmentValidatorTest do
+  use Pleroma.DataCase
+
+  alias Pleroma.Web.ActivityPub.ActivityPub
+  alias Pleroma.Web.ActivityPub.ObjectValidators.AttachmentValidator
+
+  import Pleroma.Factory
+
+  describe "attachments" do
+    test "works with honkerific attachments" do
+      attachment = %{
+        "mediaType" => "",
+        "name" => "",
+        "summary" => "298p3RG7j27tfsZ9RQ.jpg",
+        "type" => "Document",
+        "url" => "https://honk.tedunangst.com/d/298p3RG7j27tfsZ9RQ.jpg"
+      }
+
+      assert {:ok, attachment} =
+               AttachmentValidator.cast_and_validate(attachment)
+               |> Ecto.Changeset.apply_action(:insert)
+
+      assert attachment.mediaType == "application/octet-stream"
+    end
+
+    test "it turns mastodon attachments into our attachments" do
+      attachment = %{
+        "url" =>
+          "http://mastodon.example.org/system/media_attachments/files/000/000/002/original/334ce029e7bfb920.jpg",
+        "type" => "Document",
+        "name" => nil,
+        "mediaType" => "image/jpeg"
+      }
+
+      {:ok, attachment} =
+        AttachmentValidator.cast_and_validate(attachment)
+        |> Ecto.Changeset.apply_action(:insert)
+
+      assert [
+               %{
+                 href:
+                   "http://mastodon.example.org/system/media_attachments/files/000/000/002/original/334ce029e7bfb920.jpg",
+                 type: "Link",
+                 mediaType: "image/jpeg"
+               }
+             ] = attachment.url
+
+      assert attachment.mediaType == "image/jpeg"
+    end
+
+    test "it handles our own uploads" do
+      user = insert(:user)
+
+      file = %Plug.Upload{
+        content_type: "image/jpg",
+        path: Path.absname("test/fixtures/image.jpg"),
+        filename: "an_image.jpg"
+      }
+
+      {:ok, attachment} = ActivityPub.upload(file, actor: user.ap_id)
+
+      {:ok, attachment} =
+        attachment.data
+        |> AttachmentValidator.cast_and_validate()
+        |> Ecto.Changeset.apply_action(:insert)
+
+      assert attachment.mediaType == "image/jpeg"
+    end
+  end
+end