X-Git-Url: http://git.squeep.com/?a=blobdiff_plain;f=test%2Fweb%2Factivity_pub%2Ftransmogrifier_test.exs;h=2803f1a0533cd10b42df0f903181e3ce025b63b6;hb=e3629af4daaa8ea44d8fea53d426db6527cdc358;hp=1857348527da6c97c8ee2b0dae2f1cb0047837a3;hpb=4816b09fa787cc27b5a0a4b0bdd5dcda4fe06ee2;p=akkoma diff --git a/test/web/activity_pub/transmogrifier_test.exs b/test/web/activity_pub/transmogrifier_test.exs index 185734852..2803f1a05 100644 --- a/test/web/activity_pub/transmogrifier_test.exs +++ b/test/web/activity_pub/transmogrifier_test.exs @@ -4,6 +4,8 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do alias Pleroma.Activity alias Pleroma.User alias Pleroma.Repo + alias Pleroma.Web.Websub.WebsubClientSubscription + alias Pleroma.Web.Websub.WebsubServerSubscription import Ecto.Query import Pleroma.Factory @@ -34,7 +36,9 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do {:ok, returned_activity} = Transmogrifier.handle_incoming(data) - assert Activity.get_create_activity_by_object_ap_id("tag:shitposter.club,2017-05-05:noticeId=2827873:objectType=comment") + 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 @@ -122,6 +126,28 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do 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! + + {: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 = 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.bio == "

Some bio

" + end end describe "prepare outgoing" do @@ -181,12 +207,12 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do describe "user upgrade" do test "it upgrades a user to activitypub" do - user = insert(:user, %{local: false, ap_id: "https://niu.moe/users/rye", follower_address: "..."}) + 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"}) {:ok, unrelated_activity} = CommonAPI.post(user_two, %{"status" => "test"}) - assert "..." in activity.recipients + assert "http://localhost:4001/users/rye@niu.moe/followers" in activity.recipients user = Repo.get(User, user.id) assert user.info["note_count"] == 1 @@ -204,6 +230,8 @@ 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"] refute "..." in activity.recipients unrelated_activity = Repo.get(Activity, unrelated_activity.id) @@ -214,4 +242,32 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do refute "..." in user_two.following end end + + describe "maybe_retire_websub" do + test "it deletes all websub client subscripitions with the user as topic" do + subscription = %WebsubClientSubscription{topic: "https://niu.moe/users/rye.atom"} + {:ok, ws} = Repo.insert(subscription) + + subscription = %WebsubClientSubscription{topic: "https://niu.moe/users/pasty.atom"} + {:ok, ws2} = Repo.insert(subscription) + + Transmogrifier.maybe_retire_websub("https://niu.moe/users/rye") + + refute Repo.get(WebsubClientSubscription, ws.id) + assert Repo.get(WebsubClientSubscription, ws2.id) + end + + test "it deletes all websub server subscriptions with the server as callback" do + subscription = %WebsubClientSubscription{topic: "https://niu.moe/users/rye.atom"} + {:ok, ws} = Repo.insert(subscription) + + subscription = %WebsubClientSubscription{topic: "https://niu.moe/users/pasty.atom"} + {:ok, ws2} = Repo.insert(subscription) + + Transmogrifier.maybe_retire_websub("https://niu.moe/users/rye") + + refute Repo.get(WebsubClientSubscription, ws.id) + assert Repo.get(WebsubClientSubscription, ws2.id) + end + end end