1 defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do
3 alias Pleroma.Web.ActivityPub.Transmogrifier
6 alias Pleroma.Web.CommonAPI
8 describe "handle_incoming" do
9 test "it works for incoming notices" do
10 data = File.read!("test/fixtures/mastodon-post-activity.json") |> Poison.decode!
12 {:ok, %Activity{data: data, local: false}} = Transmogrifier.handle_incoming(data)
13 assert data["id"] == "http://mastodon.example.org/users/admin/statuses/99512778738411822/activity"
14 assert data["context"] == "tag:mastodon.example.org,2018-02-12:objectId=20:objectType=Conversation"
15 assert data["to"] == ["https://www.w3.org/ns/activitystreams#Public"]
16 assert data["cc"] == [
17 "http://mastodon.example.org/users/admin/followers",
18 "http://localtesting.pleroma.lol/users/lain"
20 assert data["actor"] == "http://mastodon.example.org/users/admin"
22 object = data["object"]
23 assert object["id"] == "http://mastodon.example.org/users/admin/statuses/99512778738411822"
25 assert object["to"] == ["https://www.w3.org/ns/activitystreams#Public"]
26 assert object["cc"] == [
27 "http://mastodon.example.org/users/admin/followers",
28 "http://localtesting.pleroma.lol/users/lain"
30 assert object["actor"] == "http://mastodon.example.org/users/admin"
31 assert object["attributedTo"] == "http://mastodon.example.org/users/admin"
35 describe "prepare outgoing" do
36 test "it turns mentions into tags" do
38 other_user = insert(:user)
40 {:ok, activity} = CommonAPI.post(user, %{"status" => "hey, @#{other_user.nickname}, how are ya?"})
42 {:ok, modified} = Transmogrifier.prepare_outgoing(activity.data)
43 object = modified["object"]
46 "href" => other_user.ap_id,
47 "name" => "@#{other_user.nickname}",
51 assert Enum.member?(object["tags"], expected_tag)
54 test "it adds the json-ld context" do
57 {:ok, activity} = CommonAPI.post(user, %{"status" => "hey"})
58 {:ok, modified} = Transmogrifier.prepare_outgoing(activity.data)
60 assert modified["@context"] == "https://www.w3.org/ns/activitystreams"
63 test "it sets the 'attributedTo' property to the actor of the object if it doesn't have one" do
66 {:ok, activity} = CommonAPI.post(user, %{"status" => "hey"})
67 {:ok, modified} = Transmogrifier.prepare_outgoing(activity.data)
69 assert modified["object"]["actor"] == modified["object"]["attributedTo"]