|
|
@@ -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) |
|
|
|