aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlain <lain@soykaf.club>2020-06-22 13:15:37 +0200
committerlain <lain@soykaf.club>2020-06-22 13:15:37 +0200
commit31a4d42ce0470d74417279a855192294650cff97 (patch)
tree4f9acc8c603d90478d7b0857363b092d2c8de2bf
parent75670a99e46a09f9bddc0959c680c2cb173e1f3b (diff)
downloadpleroma-31a4d42ce0470d74417279a855192294650cff97.tar.gz
SideEffects: Handle user updating.
-rw-r--r--lib/pleroma/web/activity_pub/side_effects.ex12
-rw-r--r--test/web/activity_pub/side_effects_test.exs16
2 files changed, 28 insertions, 0 deletions
diff --git a/lib/pleroma/web/activity_pub/side_effects.ex b/lib/pleroma/web/activity_pub/side_effects.ex
index 1a1cc675c..09fd7d7c9 100644
--- a/lib/pleroma/web/activity_pub/side_effects.ex
+++ b/lib/pleroma/web/activity_pub/side_effects.ex
@@ -21,6 +21,18 @@ defmodule Pleroma.Web.ActivityPub.SideEffects do
def handle(object, meta \\ [])
# Tasks this handles:
+ # Update the user
+ def handle(%{data: %{"type" => "Update", "object" => updated_object}} = object, meta) do
+ {:ok, new_user_data} = ActivityPub.user_data_from_user_object(updated_object)
+
+ User.get_by_ap_id(updated_object["id"])
+ |> User.remote_user_changeset(new_user_data)
+ |> User.update_and_set_cache()
+
+ {:ok, object, meta}
+ end
+
+ # Tasks this handles:
# - Add like to object
# - Set up notification
def handle(%{data: %{"type" => "Like"}} = object, meta) do
diff --git a/test/web/activity_pub/side_effects_test.exs b/test/web/activity_pub/side_effects_test.exs
index 6bbbaae87..1d7c2736b 100644
--- a/test/web/activity_pub/side_effects_test.exs
+++ b/test/web/activity_pub/side_effects_test.exs
@@ -64,6 +64,22 @@ defmodule Pleroma.Web.ActivityPub.SideEffectsTest do
end
end
+ describe "update users" do
+ setup do
+ user = insert(:user)
+ {:ok, update_data, []} = Builder.update(user, %{"id" => user.ap_id, "name" => "new name!"})
+ {:ok, update, _meta} = ActivityPub.persist(update_data, local: true)
+
+ %{user: user, update_data: update_data, update: update}
+ end
+
+ test "it updates the user", %{user: user, update: update} do
+ {:ok, _, _} = SideEffects.handle(update)
+ user = User.get_by_id(user.id)
+ assert user.name == "new name!"
+ end
+ end
+
describe "delete objects" do
setup do
user = insert(:user)