From 5f38513bf063f348ca963ac89d078721a40bfc0a Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Thu, 17 Sep 2020 14:51:18 +0200 Subject: [PATCH] ArticleNoteValidatorTest: Test mastodon Note object --- .../article_note_validator_test.exs | 80 ++++++++++++++----- 1 file changed, 62 insertions(+), 18 deletions(-) diff --git a/test/pleroma/web/activity_pub/object_validators/article_note_validator_test.exs b/test/pleroma/web/activity_pub/object_validators/article_note_validator_test.exs index 1f992b397..77dfacd9e 100644 --- a/test/pleroma/web/activity_pub/object_validators/article_note_validator_test.exs +++ b/test/pleroma/web/activity_pub/object_validators/article_note_validator_test.exs @@ -5,31 +5,75 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.ArticleNoteValidatorTest do use Pleroma.DataCase, async: true + alias Pleroma.User + alias Pleroma.Web.ActivityPub.ObjectValidator alias Pleroma.Web.ActivityPub.ObjectValidators.ArticleNoteValidator alias Pleroma.Web.ActivityPub.Utils import Pleroma.Factory - describe "Notes" do - setup do - user = insert(:user) + setup_all do + Tesla.Mock.mock_global(fn env -> apply(HttpRequestMock, :request, [env]) end) + :ok + end - note = %{ - "id" => Utils.generate_activity_id(), - "type" => "Note", - "actor" => user.ap_id, - "to" => [user.follower_address], - "cc" => [], - "content" => "Hellow this is content.", - "context" => "xxx", - "summary" => "a post" - } + test "a basic note validates" do + user = insert(:user) - %{user: user, note: note} - end + note = %{ + "id" => Utils.generate_activity_id(), + "type" => "Note", + "actor" => user.ap_id, + "to" => [user.follower_address], + "cc" => [], + "content" => "Hellow this is content.", + "context" => "xxx", + "summary" => "a post" + } - test "a basic note validates", %{note: note} do - %{valid?: true} = ArticleNoteValidator.cast_and_validate(note) - end + %{valid?: true} = ArticleNoteValidator.cast_and_validate(note) + end + + test "Mastodon Note" do + data = + File.read!("test/fixtures/mastodon-post-activity.json") + |> Jason.decode!() + + {:ok, %User{}} = ObjectValidator.fetch_actor(data) + + assert %{changes: changes, valid?: true} = + ArticleNoteValidator.cast_and_validate(data["object"]) + + assert %{ + actor: "http://mastodon.example.org/users/admin", + attributedTo: "http://mastodon.example.org/users/admin", + cc: [ + "http://localtesting.pleroma.lol/users/lain", + "http://mastodon.example.org/users/admin/followers" + ], + content: + "

@lain

", + context: "tag:mastodon.example.org,2018-02-12:objectId=20:objectType=Conversation", + id: "http://mastodon.example.org/users/admin/statuses/99512778738411822", + published: "2018-02-12T14:08:20Z", + sensitive: true, + summary: "cw", + tag: [ + %{ + "href" => "http://localtesting.pleroma.lol/users/lain", + "name" => "@lain@localtesting.pleroma.lol", + "type" => "Mention" + } + ], + to: ["https://www.w3.org/ns/activitystreams#Public"], + type: "Note", + url: "http://mastodon.example.org/@admin/99512778738411822", + replies: [ + "http://mastodon.example.org/users/admin/statuses/99512778738411823", + "http://mastodon.example.org/users/admin/statuses/99512778738411824" + ] + } = changes + + assert changes[:context_id] end end