1 # Pleroma: A lightweight social networking server
2 # Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
3 # SPDX-License-Identifier: AGPL-3.0-only
5 defmodule Pleroma.Web.ActivityPub.ObjectValidators.CreateGenericValidatorTest do
6 use Pleroma.DataCase, async: true
8 alias Pleroma.Web.ActivityPub.ObjectValidator
9 alias Pleroma.Web.ActivityPub.ObjectValidators.CreateGenericValidator
10 alias Pleroma.Web.ActivityPub.Utils
12 import Pleroma.Factory
14 test "a Create/Note from Roadhouse validates" do
15 insert(:user, ap_id: "https://macgirvin.com/channel/mike")
18 "test/fixtures/roadhouse-create-activity.json"
23 {:ok, object_data} = ObjectValidator.cast_and_apply(note_activity["object"])
24 meta = [object_data: ObjectValidator.stringify_keys(object_data)]
26 assert %{valid?: true} = CreateGenericValidator.cast_and_validate(note_activity, meta)
29 test "a Create/Note with mismatched context uses the Note's context" do
33 "id" => Utils.generate_object_id(),
35 "actor" => user.ap_id,
36 "to" => [user.follower_address],
38 "content" => "Hello world",
39 "context" => Utils.generate_context_id()
43 "id" => Utils.generate_activity_id(),
45 "actor" => note["actor"],
49 "published" => DateTime.utc_now() |> DateTime.to_iso8601(),
50 "context" => Utils.generate_context_id()
54 {:ok, object_data} = ObjectValidator.cast_and_apply(note_activity["object"])
55 meta = [object_data: ObjectValidator.stringify_keys(object_data)]
57 validated = CreateGenericValidator.cast_and_validate(note_activity, meta)
59 assert validated.valid?
60 assert {:context, note["context"]} in validated.changes