X-Git-Url: http://git.squeep.com/?a=blobdiff_plain;f=test%2Fweb%2Factivity_pub%2Ftransmogrifier_test.exs;h=3dab597465d2b212ff9b6dabd230a1daaa3b1188;hb=9e6ae447294d055af6add2efa9aca0024a252fe1;hp=375e74ad963634d2425fef2e58611c3cdfd7c8e9;hpb=2aea3bc632ffe73c86f4ac9fff79286c179f425f;p=akkoma diff --git a/test/web/activity_pub/transmogrifier_test.exs b/test/web/activity_pub/transmogrifier_test.exs index 375e74ad9..3dab59746 100644 --- a/test/web/activity_pub/transmogrifier_test.exs +++ b/test/web/activity_pub/transmogrifier_test.exs @@ -16,9 +16,10 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do test "it ignores an incoming notice if we already have it" do activity = insert(:note_activity) - data = File.read!("test/fixtures/mastodon-post-activity.json") - |> Poison.decode! - |> Map.put("object", activity.data["object"]) + data = + File.read!("test/fixtures/mastodon-post-activity.json") + |> Poison.decode!() + |> Map.put("object", activity.data["object"]) {:ok, returned_activity} = Transmogrifier.handle_incoming(data) @@ -26,51 +27,72 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do end test "it fetches replied-to activities if we don't have them" do - data = File.read!("test/fixtures/mastodon-post-activity.json") - |> Poison.decode! + data = + File.read!("test/fixtures/mastodon-post-activity.json") + |> Poison.decode!() - object = data["object"] - |> Map.put("inReplyTo", "https://shitposter.club/notice/2827873") + object = + data["object"] + |> Map.put("inReplyTo", "https://shitposter.club/notice/2827873") - data = data - |> Map.put("object", object) + data = + data + |> Map.put("object", object) {:ok, returned_activity} = Transmogrifier.handle_incoming(data) - assert activity = Activity.get_create_activity_by_object_ap_id("tag:shitposter.club,2017-05-05:noticeId=2827873:objectType=comment") - assert returned_activity.data["object"]["inReplyToAtomUri"] == "https://shitposter.club/notice/2827873" + assert activity = + Activity.get_create_activity_by_object_ap_id( + "tag:shitposter.club,2017-05-05:noticeId=2827873:objectType=comment" + ) + + assert returned_activity.data["object"]["inReplyToAtomUri"] == + "https://shitposter.club/notice/2827873" + assert returned_activity.data["object"]["inReplyToStatusId"] == activity.id end test "it works for incoming notices" do - data = File.read!("test/fixtures/mastodon-post-activity.json") |> Poison.decode! + data = File.read!("test/fixtures/mastodon-post-activity.json") |> Poison.decode!() {:ok, %Activity{data: data, local: false}} = Transmogrifier.handle_incoming(data) - assert data["id"] == "http://mastodon.example.org/users/admin/statuses/99512778738411822/activity" - assert data["context"] == "tag:mastodon.example.org,2018-02-12:objectId=20:objectType=Conversation" + + assert data["id"] == + "http://mastodon.example.org/users/admin/statuses/99512778738411822/activity" + + assert data["context"] == + "tag:mastodon.example.org,2018-02-12:objectId=20:objectType=Conversation" + assert data["to"] == ["https://www.w3.org/ns/activitystreams#Public"] + assert data["cc"] == [ - "http://mastodon.example.org/users/admin/followers", - "http://localtesting.pleroma.lol/users/lain" - ] + "http://mastodon.example.org/users/admin/followers", + "http://localtesting.pleroma.lol/users/lain" + ] + assert data["actor"] == "http://mastodon.example.org/users/admin" object = data["object"] assert object["id"] == "http://mastodon.example.org/users/admin/statuses/99512778738411822" assert object["to"] == ["https://www.w3.org/ns/activitystreams#Public"] + assert object["cc"] == [ - "http://mastodon.example.org/users/admin/followers", - "http://localtesting.pleroma.lol/users/lain" - ] + "http://mastodon.example.org/users/admin/followers", + "http://localtesting.pleroma.lol/users/lain" + ] + assert object["actor"] == "http://mastodon.example.org/users/admin" assert object["attributedTo"] == "http://mastodon.example.org/users/admin" - assert object["context"] == "tag:mastodon.example.org,2018-02-12:objectId=20:objectType=Conversation" + + assert object["context"] == + "tag:mastodon.example.org,2018-02-12:objectId=20:objectType=Conversation" + assert object["sensitive"] == true end test "it works for incoming notices with hashtags" do - data = File.read!("test/fixtures/mastodon-post-activity-hashtag.json") |> Poison.decode! + data = File.read!("test/fixtures/mastodon-post-activity-hashtag.json") |> Poison.decode!() {:ok, %Activity{data: data, local: false}} = Transmogrifier.handle_incoming(data) assert Enum.at(data["object"]["tag"], 2) == "moo" @@ -78,8 +100,11 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do test "it works for incoming follow requests" do user = insert(:user) - data = File.read!("test/fixtures/mastodon-follow-activity.json") |> Poison.decode! - |> Map.put("object", user.ap_id) + + data = + File.read!("test/fixtures/mastodon-follow-activity.json") + |> Poison.decode!() + |> Map.put("object", user.ap_id) {:ok, %Activity{data: data, local: false}} = Transmogrifier.handle_incoming(data) @@ -93,8 +118,10 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do user = insert(:user) {:ok, activity} = CommonAPI.post(user, %{"status" => "hello"}) - data = File.read!("test/fixtures/mastodon-like.json") |> Poison.decode! - |> Map.put("object", activity.data["object"]["id"]) + data = + File.read!("test/fixtures/mastodon-like.json") + |> Poison.decode!() + |> Map.put("object", activity.data["object"]["id"]) {:ok, %Activity{data: data, local: false}} = Transmogrifier.handle_incoming(data) @@ -105,14 +132,18 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do end test "it works for incoming announces" do - data = File.read!("test/fixtures/mastodon-announce.json") |> Poison.decode! + data = File.read!("test/fixtures/mastodon-announce.json") |> Poison.decode!() {:ok, %Activity{data: data, local: false}} = Transmogrifier.handle_incoming(data) assert data["actor"] == "http://mastodon.example.org/users/admin" assert data["type"] == "Announce" - assert data["id"] == "http://mastodon.example.org/users/admin/statuses/99542391527669785/activity" - assert data["object"] == "http://mastodon.example.org/users/admin/statuses/99541947525187367" + + assert data["id"] == + "http://mastodon.example.org/users/admin/statuses/99542391527669785/activity" + + assert data["object"] == + "http://mastodon.example.org/users/admin/statuses/99541947525187367" assert Activity.get_create_activity_by_object_ap_id(data["object"]) end @@ -121,53 +152,77 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do user = insert(:user) {:ok, activity} = CommonAPI.post(user, %{"status" => "hey"}) - data = File.read!("test/fixtures/mastodon-announce.json") - |> Poison.decode! - |> Map.put("object", activity.data["object"]["id"]) + data = + File.read!("test/fixtures/mastodon-announce.json") + |> Poison.decode!() + |> Map.put("object", activity.data["object"]["id"]) {:ok, %Activity{data: data, local: false}} = Transmogrifier.handle_incoming(data) assert data["actor"] == "http://mastodon.example.org/users/admin" assert data["type"] == "Announce" - assert data["id"] == "http://mastodon.example.org/users/admin/statuses/99542391527669785/activity" + + assert data["id"] == + "http://mastodon.example.org/users/admin/statuses/99542391527669785/activity" + assert data["object"] == activity.data["object"]["id"] assert Activity.get_create_activity_by_object_ap_id(data["object"]).id == activity.id end test "it works for incoming update activities" do - data = File.read!("test/fixtures/mastodon-post-activity.json") |> Poison.decode! + data = File.read!("test/fixtures/mastodon-post-activity.json") |> Poison.decode!() {:ok, %Activity{data: data, local: false}} = Transmogrifier.handle_incoming(data) - update_data = File.read!("test/fixtures/mastodon-update.json") |> Poison.decode! - object = update_data["object"] - |> Map.put("actor", data["actor"]) - |> Map.put("id", data["actor"]) + update_data = File.read!("test/fixtures/mastodon-update.json") |> Poison.decode!() + + object = + update_data["object"] + |> Map.put("actor", data["actor"]) + |> Map.put("id", data["actor"]) - update_data = update_data - |> Map.put("actor", data["actor"]) - |> Map.put("object", object) + update_data = + update_data + |> Map.put("actor", data["actor"]) + |> Map.put("object", object) {:ok, %Activity{data: data, local: false}} = Transmogrifier.handle_incoming(update_data) user = User.get_cached_by_ap_id(data["actor"]) assert user.name == "gargle" - assert user.avatar["url"] == [%{"href" => "https://cd.niu.moe/accounts/avatars/000/033/323/original/fd7f8ae0b3ffedc9.jpeg"}] - assert user.info["banner"]["url"] == [%{"href" => "https://cd.niu.moe/accounts/headers/000/033/323/original/850b3448fa5fd477.png"}] + + assert user.avatar["url"] == [ + %{ + "href" => + "https://cd.niu.moe/accounts/avatars/000/033/323/original/fd7f8ae0b3ffedc9.jpeg" + } + ] + + assert user.info["banner"]["url"] == [ + %{ + "href" => + "https://cd.niu.moe/accounts/headers/000/033/323/original/850b3448fa5fd477.png" + } + ] + assert user.bio == "

Some bio

" end test "it works for incoming deletes" do activity = insert(:note_activity) - data = File.read!("test/fixtures/mastodon-delete.json") - |> Poison.decode! - object = data["object"] - |> Map.put("id", activity.data["object"]["id"]) + data = + File.read!("test/fixtures/mastodon-delete.json") + |> Poison.decode!() + + object = + data["object"] + |> Map.put("id", activity.data["object"]["id"]) - data = data - |> Map.put("object", object) - |> Map.put("actor", activity.data["actor"]) + data = + data + |> Map.put("object", object) + |> Map.put("actor", activity.data["actor"]) {:ok, %Activity{data: data, local: false}} = Transmogrifier.handle_incoming(data) @@ -180,7 +235,8 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do user = insert(:user) other_user = insert(:user) - {:ok, activity} = CommonAPI.post(user, %{"status" => "hey, @#{other_user.nickname}, how are ya? #2hu"}) + {:ok, activity} = + CommonAPI.post(user, %{"status" => "hey, @#{other_user.nickname}, how are ya? #2hu"}) {:ok, modified} = Transmogrifier.prepare_outgoing(activity.data) object = modified["object"] @@ -192,7 +248,7 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do } expected_tag = %{ - "href" => Pleroma.Web.Endpoint.url <> "/tags/2hu", + "href" => Pleroma.Web.Endpoint.url() <> "/tags/2hu", "type" => "Hashtag", "name" => "#2hu" } @@ -247,7 +303,9 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do user = insert(:user) - {:ok, activity} = CommonAPI.post(user, %{"status" => "HI!", "in_reply_to_status_id" => referred_activity.id}) + {:ok, activity} = + CommonAPI.post(user, %{"status" => "HI!", "in_reply_to_status_id" => referred_activity.id}) + {:ok, modified} = Transmogrifier.prepare_outgoing(activity.data) assert modified["object"]["inReplyTo"] == "http://gs.example.org:4040/index.php/notice/29" @@ -256,7 +314,14 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do describe "user upgrade" do test "it upgrades a user to activitypub" do - user = insert(:user, %{nickname: "rye@niu.moe", local: false, ap_id: "https://niu.moe/users/rye", follower_address: User.ap_followers(%User{nickname: "rye@niu.moe"})}) + user = + insert(:user, %{ + nickname: "rye@niu.moe", + local: false, + ap_id: "https://niu.moe/users/rye", + follower_address: User.ap_followers(%User{nickname: "rye@niu.moe"}) + }) + user_two = insert(:user, %{following: [user.follower_address]}) {:ok, activity} = CommonAPI.post(user, %{"status" => "test"}) @@ -279,8 +344,25 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do activity = Repo.get(Activity, activity.id) assert user.follower_address in activity.recipients - assert %{"url" => [%{"href" => "https://cdn.niu.moe/accounts/avatars/000/033/323/original/fd7f8ae0b3ffedc9.jpeg"}]} = user.avatar - assert %{"url" => [%{"href" => "https://cdn.niu.moe/accounts/headers/000/033/323/original/850b3448fa5fd477.png"}]} = user.info["banner"] + + assert %{ + "url" => [ + %{ + "href" => + "https://cdn.niu.moe/accounts/avatars/000/033/323/original/fd7f8ae0b3ffedc9.jpeg" + } + ] + } = user.avatar + + assert %{ + "url" => [ + %{ + "href" => + "https://cdn.niu.moe/accounts/headers/000/033/323/original/850b3448fa5fd477.png" + } + ] + } = user.info["banner"] + refute "..." in activity.recipients unrelated_activity = Repo.get(Activity, unrelated_activity.id)