From d8c842a7713ab2c9dd49bdabfad4f5a1b6120fcf Mon Sep 17 00:00:00 2001 From: Francis Dinh Date: Thu, 17 May 2018 22:15:57 -0400 Subject: Add support for incoming remote unfollows --- test/web/activity_pub/transmogrifier_test.exs | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'test/web/activity_pub') diff --git a/test/web/activity_pub/transmogrifier_test.exs b/test/web/activity_pub/transmogrifier_test.exs index a3408da9d..8ed7147f4 100644 --- a/test/web/activity_pub/transmogrifier_test.exs +++ b/test/web/activity_pub/transmogrifier_test.exs @@ -260,6 +260,30 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do assert data["object"]["id"] == "http://mastodon.example.org/users/admin/statuses/99542391527669785/activity" end + + test "it works for incomming unfollows" do + user = insert(:user) + + follow_data = + File.read!("test/fixtures/mastodon-follow-activity.json") + |> Poison.decode!() + |> Map.put("object", user.ap_id) + + {:ok, %Activity{data: _, local: false}} = Transmogrifier.handle_incoming(follow_data) + + data = + File.read!("test/fixtures/mastodon-unfollow-activity.json") + |> Poison.decode!() + |> Map.put("object", follow_data) + + {:ok, %Activity{data: data, local: false}} = Transmogrifier.handle_incoming(data) + + assert data["type"] == "Undo" + assert data["object"]["type"] == "Follow" + assert data["actor"] == "http://mastodon.example.org/users/admin" + + refute User.following?(User.get_by_ap_id(data["actor"]), user) + end end describe "prepare outgoing" do -- cgit v1.2.3 From e6dc15b96cb971836211a1e57be1756936456c17 Mon Sep 17 00:00:00 2001 From: Francis Dinh Date: Thu, 17 May 2018 23:53:34 -0400 Subject: Undo formatting in user.ex --- test/web/activity_pub/transmogrifier_test.exs | 24 ------------------------ 1 file changed, 24 deletions(-) (limited to 'test/web/activity_pub') diff --git a/test/web/activity_pub/transmogrifier_test.exs b/test/web/activity_pub/transmogrifier_test.exs index 8ed7147f4..a3408da9d 100644 --- a/test/web/activity_pub/transmogrifier_test.exs +++ b/test/web/activity_pub/transmogrifier_test.exs @@ -260,30 +260,6 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do assert data["object"]["id"] == "http://mastodon.example.org/users/admin/statuses/99542391527669785/activity" end - - test "it works for incomming unfollows" do - user = insert(:user) - - follow_data = - File.read!("test/fixtures/mastodon-follow-activity.json") - |> Poison.decode!() - |> Map.put("object", user.ap_id) - - {:ok, %Activity{data: _, local: false}} = Transmogrifier.handle_incoming(follow_data) - - data = - File.read!("test/fixtures/mastodon-unfollow-activity.json") - |> Poison.decode!() - |> Map.put("object", follow_data) - - {:ok, %Activity{data: data, local: false}} = Transmogrifier.handle_incoming(data) - - assert data["type"] == "Undo" - assert data["object"]["type"] == "Follow" - assert data["actor"] == "http://mastodon.example.org/users/admin" - - refute User.following?(User.get_by_ap_id(data["actor"]), user) - end end describe "prepare outgoing" do -- cgit v1.2.3 From 8d11bae0d5e649f9dc0570b24ee5c4c74b8b463f Mon Sep 17 00:00:00 2001 From: Francis Dinh Date: Thu, 17 May 2018 23:55:00 -0400 Subject: Revert "Undo formatting in user.ex" This reverts commit e6dc15b96cb971836211a1e57be1756936456c17. --- test/web/activity_pub/transmogrifier_test.exs | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'test/web/activity_pub') diff --git a/test/web/activity_pub/transmogrifier_test.exs b/test/web/activity_pub/transmogrifier_test.exs index a3408da9d..8ed7147f4 100644 --- a/test/web/activity_pub/transmogrifier_test.exs +++ b/test/web/activity_pub/transmogrifier_test.exs @@ -260,6 +260,30 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do assert data["object"]["id"] == "http://mastodon.example.org/users/admin/statuses/99542391527669785/activity" end + + test "it works for incomming unfollows" do + user = insert(:user) + + follow_data = + File.read!("test/fixtures/mastodon-follow-activity.json") + |> Poison.decode!() + |> Map.put("object", user.ap_id) + + {:ok, %Activity{data: _, local: false}} = Transmogrifier.handle_incoming(follow_data) + + data = + File.read!("test/fixtures/mastodon-unfollow-activity.json") + |> Poison.decode!() + |> Map.put("object", follow_data) + + {:ok, %Activity{data: data, local: false}} = Transmogrifier.handle_incoming(data) + + assert data["type"] == "Undo" + assert data["object"]["type"] == "Follow" + assert data["actor"] == "http://mastodon.example.org/users/admin" + + refute User.following?(User.get_by_ap_id(data["actor"]), user) + end end describe "prepare outgoing" do -- cgit v1.2.3 From 1e43de0f86ea632a313f9bf7434183a6db38f0b6 Mon Sep 17 00:00:00 2001 From: Francis Dinh Date: Sat, 19 May 2018 21:23:52 -0400 Subject: Formatting and add tests for blocks/unblocks --- test/web/activity_pub/transmogrifier_test.exs | 46 +++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) (limited to 'test/web/activity_pub') diff --git a/test/web/activity_pub/transmogrifier_test.exs b/test/web/activity_pub/transmogrifier_test.exs index 8ed7147f4..0ca00a07e 100644 --- a/test/web/activity_pub/transmogrifier_test.exs +++ b/test/web/activity_pub/transmogrifier_test.exs @@ -280,10 +280,56 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do assert data["type"] == "Undo" assert data["object"]["type"] == "Follow" + assert data["object"]["object"] == user.ap_id assert data["actor"] == "http://mastodon.example.org/users/admin" refute User.following?(User.get_by_ap_id(data["actor"]), user) end + + test "it works for incoming blocks" do + user = insert(:user) + + data = + File.read!("test/fixtures/mastodon-block-activity.json") + |> Poison.decode!() + |> Map.put("object", user.ap_id) + + {:ok, %Activity{data: data, local: false}} = Transmogrifier.handle_incoming(data) + + assert data["type"] == "Block" + assert data["object"] == user.ap_id + assert data["actor"] == "https://mastodon.example.org/users/admin" + + blocker = User.get_by_ap_id(data["actor"]) + + assert User.blocks?(blocker, user.ap_id) + end + + test "it works for incoming unblocks" do + user = insert(:user) + + block_data = + File.read!("test/fixtures/mastodon-block-activity.json") + |> Poison.decode!() + |> Map.put("object", user.ap_id) + + {:ok, %Activity{data: _, local: false}} = Transmogrifier.handle_incoming(block_data) + + data = + File.read!("test/fixtures/mastodon-unblock-activity.json") + |> Poison.decode!() + |> Map.put("object", block_data) + + {:ok, %Activity{data: data, local: false}} = Transmogrifier.handle_incoming(data) + assert data["type"] == "Undo" + assert data["object"]["type"] == "Block" + assert data["object"]["object"] == user.ap_id + assert data["actor"] == "https://mastodon.example.org/users/admin" + + blocker = User.get_by_ap_id(data["actor"]) + + refute User.blocks?(blocker, user.ap_id) + end end describe "prepare outgoing" do -- cgit v1.2.3 From d46393f6efd6475bb20b6a12a7c6ebf800f6c5b5 Mon Sep 17 00:00:00 2001 From: Francis Dinh Date: Sun, 20 May 2018 02:15:56 -0400 Subject: Fix test for blocks --- test/web/activity_pub/transmogrifier_test.exs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'test/web/activity_pub') diff --git a/test/web/activity_pub/transmogrifier_test.exs b/test/web/activity_pub/transmogrifier_test.exs index 0ca00a07e..1d38661eb 100644 --- a/test/web/activity_pub/transmogrifier_test.exs +++ b/test/web/activity_pub/transmogrifier_test.exs @@ -298,7 +298,7 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do assert data["type"] == "Block" assert data["object"] == user.ap_id - assert data["actor"] == "https://mastodon.example.org/users/admin" + assert data["actor"] == "http://mastodon.example.org/users/admin" blocker = User.get_by_ap_id(data["actor"]) -- cgit v1.2.3 From 56de0216ae36394dba1aa9bac6c931af67233658 Mon Sep 17 00:00:00 2001 From: Francis Dinh Date: Sun, 20 May 2018 19:45:05 -0400 Subject: pass user to User.blocks?/2 instead of ap_id --- test/web/activity_pub/transmogrifier_test.exs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'test/web/activity_pub') diff --git a/test/web/activity_pub/transmogrifier_test.exs b/test/web/activity_pub/transmogrifier_test.exs index 87fadece2..da55909bc 100644 --- a/test/web/activity_pub/transmogrifier_test.exs +++ b/test/web/activity_pub/transmogrifier_test.exs @@ -357,7 +357,7 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do blocker = User.get_by_ap_id(data["actor"]) - assert User.blocks?(blocker, user.ap_id) + assert User.blocks?(blocker, user) end test "it works for incoming unblocks" do -- cgit v1.2.3 From 89c5de90969cbd2b7cd5854c7209795443659062 Mon Sep 17 00:00:00 2001 From: Francis Dinh Date: Sun, 20 May 2018 21:01:14 -0400 Subject: Fix unfollows --- test/web/activity_pub/activity_pub_test.exs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'test/web/activity_pub') diff --git a/test/web/activity_pub/activity_pub_test.exs b/test/web/activity_pub/activity_pub_test.exs index 9adce84b5..35f0deffe 100644 --- a/test/web/activity_pub/activity_pub_test.exs +++ b/test/web/activity_pub/activity_pub_test.exs @@ -425,7 +425,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do assert activity.data["type"] == "Undo" assert activity.data["actor"] == follower.ap_id - assert activity.data["object"] == follow_activity.data["id"] + assert activity.data["object"]["id"] == follow_activity.data["id"] end end -- cgit v1.2.3 From cc5373b846d7f816a3e78af342468f2ea8415b8d Mon Sep 17 00:00:00 2001 From: Francis Dinh Date: Mon, 21 May 2018 05:00:58 -0400 Subject: Fix unblock handling --- test/web/activity_pub/transmogrifier_test.exs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'test/web/activity_pub') diff --git a/test/web/activity_pub/transmogrifier_test.exs b/test/web/activity_pub/transmogrifier_test.exs index da55909bc..cf6b1d0b5 100644 --- a/test/web/activity_pub/transmogrifier_test.exs +++ b/test/web/activity_pub/transmogrifier_test.exs @@ -316,7 +316,7 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do "http://mastodon.example.org/users/admin/statuses/99542391527669785/activity" end - test "it works for incomming unfollows" do + test "it works for incomming unfollows with an existing follow" do user = insert(:user) follow_data = @@ -360,7 +360,7 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do assert User.blocks?(blocker, user) end - test "it works for incoming unblocks" do + test "it works for incoming unblocks with an existing block" do user = insert(:user) block_data = @@ -379,11 +379,11 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do assert data["type"] == "Undo" assert data["object"]["type"] == "Block" assert data["object"]["object"] == user.ap_id - assert data["actor"] == "https://mastodon.example.org/users/admin" + assert data["actor"] == "http://mastodon.example.org/users/admin" blocker = User.get_by_ap_id(data["actor"]) - refute User.blocks?(blocker, user.ap_id) + refute User.blocks?(blocker, user) end end -- cgit v1.2.3 From b2c6ae7d820fb9d6bf81c6912e3e9b10a6fa7dd2 Mon Sep 17 00:00:00 2001 From: Francis Dinh Date: Tue, 22 May 2018 04:27:40 -0400 Subject: Hook up unfollow and (un)block to MastoAPI + tests --- test/web/activity_pub/activity_pub_test.exs | 33 +++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) (limited to 'test/web/activity_pub') diff --git a/test/web/activity_pub/activity_pub_test.exs b/test/web/activity_pub/activity_pub_test.exs index 35f0deffe..081c202b1 100644 --- a/test/web/activity_pub/activity_pub_test.exs +++ b/test/web/activity_pub/activity_pub_test.exs @@ -425,10 +425,43 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do assert activity.data["type"] == "Undo" assert activity.data["actor"] == follower.ap_id + + assert is_map(activity.data["object"]) + assert activity.data["object"]["type"] == "Follow" + assert activity.data["object"]["object"] == followed.ap_id assert activity.data["object"]["id"] == follow_activity.data["id"] end end + describe "blocking / unblocking" do + test "creates a block activity" do + blocker = insert(:user) + blocked = insert(:user) + + {:ok, activity} = ActivityPub.block(blocker, blocked) + + assert activity.data["type"] == "Block" + assert activity.data["actor"] == blocker.ap_id + assert activity.data["object"] == blocked.ap_id + end + + test "creates an undo activity for the last block" do + blocker = insert(:user) + blocked = insert(:user) + + {:ok, block_activity} = ActivityPub.block(blocker, blocked) + {:ok, activity} = ActivityPub.unblock(blocker, blocked) + + assert activity.data["type"] == "Undo" + assert activity.data["actor"] == blocker.ap_id + + assert is_map(activity.data["object"]) + assert activity.data["object"]["type"] == "Block" + assert activity.data["object"]["object"] == blocked.ap_id + assert activity.data["object"]["id"] == block_activity.data["id"] + end + end + describe "deletion" do test "it creates a delete activity and deletes the original object" do note = insert(:note_activity) -- cgit v1.2.3