forked from AkkomaGang/akkoma
ObjectValidator Test: Extract attachments.
This commit is contained in:
parent
69f0b286f7
commit
0aa4c20d78
2 changed files with 78 additions and 63 deletions
|
@ -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
|
defmodule Pleroma.Web.ActivityPub.ObjectValidatorTest do
|
||||||
use Pleroma.DataCase
|
use Pleroma.DataCase
|
||||||
|
|
||||||
|
@ -5,75 +9,12 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidatorTest do
|
||||||
alias Pleroma.Web.ActivityPub.ActivityPub
|
alias Pleroma.Web.ActivityPub.ActivityPub
|
||||||
alias Pleroma.Web.ActivityPub.Builder
|
alias Pleroma.Web.ActivityPub.Builder
|
||||||
alias Pleroma.Web.ActivityPub.ObjectValidator
|
alias Pleroma.Web.ActivityPub.ObjectValidator
|
||||||
alias Pleroma.Web.ActivityPub.ObjectValidators.AttachmentValidator
|
|
||||||
alias Pleroma.Web.ActivityPub.ObjectValidators.LikeValidator
|
alias Pleroma.Web.ActivityPub.ObjectValidators.LikeValidator
|
||||||
alias Pleroma.Web.ActivityPub.Utils
|
alias Pleroma.Web.ActivityPub.Utils
|
||||||
alias Pleroma.Web.CommonAPI
|
alias Pleroma.Web.CommonAPI
|
||||||
|
|
||||||
import Pleroma.Factory
|
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
|
describe "chat message create activities" do
|
||||||
test "it is invalid if the object already exists" do
|
test "it is invalid if the object already exists" do
|
||||||
user = insert(:user)
|
user = insert(:user)
|
||||||
|
|
|
@ -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
|
Loading…
Reference in a new issue