From 5b0d0b9ab2e9efba3d170a06ea3cc5c4ca33c2c9 Mon Sep 17 00:00:00 2001 From: Francis Dinh Date: Sat, 14 Apr 2018 22:34:06 -0400 Subject: Add unreblogging tests --- test/web/activity_pub/activity_pub_test.exs | 20 ++++++++++++++++++++ 1 file changed, 20 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 657d75a55..84f844322 100644 --- a/test/web/activity_pub/activity_pub_test.exs +++ b/test/web/activity_pub/activity_pub_test.exs @@ -271,6 +271,26 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do end end + describe "unannouncing an object" do + test "unannouncing a previously announced object" do + note_activity = insert(:note_activity) + object = Object.get_by_ap_id(note_activity.data["object"]["id"]) + user = insert(:user) + + # Unannouncing an object that is not announced does nothing + {:ok, object} = ActivityPub.unannounce(user, object) + assert object.data["announcement_count"] == 0 + + {:ok, announce_activity, object} = ActivityPub.announce(user, object) + assert object.data["announcement_count"] == 1 + + {:ok, object} = ActivityPub.unannounce(user, object) + assert object.data["announcement_count"] == 0 + + assert Repo.get(Activity, announce_activity.id) == nil + end + end + describe "uploading files" do test "copies the file to the configured folder" do file = %Plug.Upload{ -- cgit v1.2.3 From 687db1bc3a13d3303865a104f0475a6fc4671037 Mon Sep 17 00:00:00 2001 From: Francis Dinh Date: Wed, 18 Apr 2018 03:39:42 -0400 Subject: Expose unannounce activity so that it can be tested --- test/web/activity_pub/activity_pub_test.exs | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) (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 84f844322..85a6aecf0 100644 --- a/test/web/activity_pub/activity_pub_test.exs +++ b/test/web/activity_pub/activity_pub_test.exs @@ -278,15 +278,24 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do user = insert(:user) # Unannouncing an object that is not announced does nothing - {:ok, object} = ActivityPub.unannounce(user, object) - assert object.data["announcement_count"] == 0 + #{:ok, object} = ActivityPub.unannounce(user, object) + #assert object.data["announcement_count"] == 0 {:ok, announce_activity, object} = ActivityPub.announce(user, object) assert object.data["announcement_count"] == 1 - {:ok, object} = ActivityPub.unannounce(user, object) + {:ok, unannounce_activity, object} = ActivityPub.unannounce(user, object) assert object.data["announcement_count"] == 0 + assert unannounce_activity.data["to"] == [ + User.ap_followers(user), + note_activity.data["actor"] + ] + assert unannounce_activity.data["type"] == "Undo" + assert unannounce_activity.data["object"] == object.data["id"] + assert unannounce_activity.data["actor"] == user.ap_id + assert unannounce_activity.data["context"] == object.data["context"] + assert Repo.get(Activity, announce_activity.id) == nil end end -- cgit v1.2.3 From 7b4f55238eeb8561c6a8e43321cd965667cefabe Mon Sep 17 00:00:00 2001 From: Francis Dinh Date: Wed, 18 Apr 2018 06:00:40 -0400 Subject: Handle unrepeats via the TwitterAPI --- test/web/activity_pub/activity_pub_test.exs | 4 +++- 1 file changed, 3 insertions(+), 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 85a6aecf0..6a07da775 100644 --- a/test/web/activity_pub/activity_pub_test.exs +++ b/test/web/activity_pub/activity_pub_test.exs @@ -284,9 +284,11 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do {:ok, announce_activity, object} = ActivityPub.announce(user, object) assert object.data["announcement_count"] == 1 - {:ok, unannounce_activity, object} = ActivityPub.unannounce(user, object) + {:ok, unannounce_activity, activity, object} = ActivityPub.unannounce(user, object) assert object.data["announcement_count"] == 0 + assert activity == announce_activity + assert unannounce_activity.data["to"] == [ User.ap_followers(user), note_activity.data["actor"] -- cgit v1.2.3 From f0798440de96139f5717e90582e41ddb6ce5a0ce Mon Sep 17 00:00:00 2001 From: Francis Dinh Date: Fri, 20 Apr 2018 23:22:16 -0400 Subject: Use correct activity for undo --- test/web/activity_pub/activity_pub_test.exs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (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 6a07da775..e3258ed4e 100644 --- a/test/web/activity_pub/activity_pub_test.exs +++ b/test/web/activity_pub/activity_pub_test.exs @@ -291,12 +291,12 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do assert unannounce_activity.data["to"] == [ User.ap_followers(user), - note_activity.data["actor"] + announce_activity.data["actor"] ] assert unannounce_activity.data["type"] == "Undo" - assert unannounce_activity.data["object"] == object.data["id"] + assert unannounce_activity.data["object"] == announce_activity.data["id"] assert unannounce_activity.data["actor"] == user.ap_id - assert unannounce_activity.data["context"] == object.data["context"] + assert unannounce_activity.data["context"] == announce_activity.data["context"] assert Repo.get(Activity, announce_activity.id) == nil end -- cgit v1.2.3 From 8c0806539c1eac776db0634e2888927f1dd2141d Mon Sep 17 00:00:00 2001 From: Francis Dinh Date: Sun, 22 Apr 2018 21:28:51 -0400 Subject: Embed announce activity data instead of linking to it --- test/web/activity_pub/activity_pub_test.exs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (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 e3258ed4e..208cc42d2 100644 --- a/test/web/activity_pub/activity_pub_test.exs +++ b/test/web/activity_pub/activity_pub_test.exs @@ -292,9 +292,9 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do assert unannounce_activity.data["to"] == [ User.ap_followers(user), announce_activity.data["actor"] - ] + ] assert unannounce_activity.data["type"] == "Undo" - assert unannounce_activity.data["object"] == announce_activity.data["id"] + assert unannounce_activity.data["object"] == announce_activity.data assert unannounce_activity.data["actor"] == user.ap_id assert unannounce_activity.data["context"] == announce_activity.data["context"] -- cgit v1.2.3 From e981280fa74ddccb02c7deb27bd5cc5e85f9fc8f Mon Sep 17 00:00:00 2001 From: Francis Dinh Date: Wed, 25 Apr 2018 01:43:45 -0400 Subject: Formatting fixes --- test/web/activity_pub/activity_pub_test.exs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (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 31ac10d70..d9f00613a 100644 --- a/test/web/activity_pub/activity_pub_test.exs +++ b/test/web/activity_pub/activity_pub_test.exs @@ -280,8 +280,8 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do user = insert(:user) # Unannouncing an object that is not announced does nothing - #{:ok, object} = ActivityPub.unannounce(user, object) - #assert object.data["announcement_count"] == 0 + # {:ok, object} = ActivityPub.unannounce(user, object) + # assert object.data["announcement_count"] == 0 {:ok, announce_activity, object} = ActivityPub.announce(user, object) assert object.data["announcement_count"] == 1 @@ -294,7 +294,8 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do assert unannounce_activity.data["to"] == [ User.ap_followers(user), announce_activity.data["actor"] - ] + ] + assert unannounce_activity.data["type"] == "Undo" assert unannounce_activity.data["object"] == announce_activity.data["id"] assert unannounce_activity.data["actor"] == user.ap_id -- cgit v1.2.3 From 8b4ee0ea51431e268011781403bc97864b294989 Mon Sep 17 00:00:00 2001 From: Francis Dinh Date: Fri, 4 May 2018 03:19:48 -0400 Subject: Fix formatting --- 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 7735e1bf8..155965de8 100644 --- a/test/web/activity_pub/activity_pub_test.exs +++ b/test/web/activity_pub/activity_pub_test.exs @@ -295,7 +295,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do User.ap_followers(user), announce_activity.data["actor"] ] - + assert unannounce_activity.data["type"] == "Undo" assert unannounce_activity.data["object"] == announce_activity.data assert unannounce_activity.data["actor"] == user.ap_id -- cgit v1.2.3 From 16b793656d2eb79e19224462180d2d21fb57cc29 Mon Sep 17 00:00:00 2001 From: Francis Dinh Date: Fri, 11 May 2018 15:30:47 -0400 Subject: Add tests for unrepeats --- test/web/activity_pub/transmogrifier_test.exs | 28 +++++++++++++++++++++++++++ 1 file changed, 28 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 eb093262f..a3408da9d 100644 --- a/test/web/activity_pub/transmogrifier_test.exs +++ b/test/web/activity_pub/transmogrifier_test.exs @@ -232,6 +232,34 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do refute Repo.get(Activity, activity.id) end + + test "it works for incoming unannounces with an existing notice" do + user = insert(:user) + {:ok, activity} = CommonAPI.post(user, %{"status" => "hey"}) + + announce_data = + File.read!("test/fixtures/mastodon-announce.json") + |> Poison.decode!() + |> Map.put("object", activity.data["object"]["id"]) + + {:ok, %Activity{data: announce_data, local: false}} = + Transmogrifier.handle_incoming(announce_data) + + data = + File.read!("test/fixtures/mastodon-undo-announce.json") + |> Poison.decode!() + |> Map.put("object", announce_data) + |> Map.put("actor", announce_data["actor"]) + + {:ok, %Activity{data: data, local: false}} = Transmogrifier.handle_incoming(data) + + assert data["type"] == "Undo" + assert data["object"]["type"] == "Announce" + assert data["object"]["object"] == activity.data["object"]["id"] + + assert data["object"]["id"] == + "http://mastodon.example.org/users/admin/statuses/99542391527669785/activity" + end end describe "prepare outgoing" do -- cgit v1.2.3 From ec531ca281008e7d8d9d659e6f046a551fcb7c8a Mon Sep 17 00:00:00 2001 From: lain Date: Sun, 13 May 2018 11:18:48 +0200 Subject: Add test. --- test/web/activity_pub/activity_pub_test.exs | 10 ++++++++++ 1 file changed, 10 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 6d23adfcd..d336fad95 100644 --- a/test/web/activity_pub/activity_pub_test.exs +++ b/test/web/activity_pub/activity_pub_test.exs @@ -171,6 +171,16 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do end describe "public fetch activities" do + test "doesn't retrieve unlisted activities" do + user = insert(:user) + {:ok, unlisted_activity} = CommonAPI.post(user, %{"status" => "yeah", "visibility" => "unlisted"}) + {:ok, listed_activity} = CommonAPI.post(user, %{"status" => "yeah"}) + + [activity] = ActivityPub.fetch_public_activities() + + assert activity == listed_activity + end + test "retrieves public activities" do _activities = ActivityPub.fetch_public_activities() -- cgit v1.2.3 From 1027d1f6963b495a5abc67b05447619ce7d429db Mon Sep 17 00:00:00 2001 From: lain Date: Sun, 13 May 2018 12:07:11 +0200 Subject: Remove 'unlisted' handling for now. It's just too slow (over 1 second on small systems, haven't looked at the queries in detail yet). We'll need some other way to handle it. --- test/web/activity_pub/activity_pub_test.exs | 1 + 1 file changed, 1 insertion(+) (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 a39ba9adb..c4b59f5c7 100644 --- a/test/web/activity_pub/activity_pub_test.exs +++ b/test/web/activity_pub/activity_pub_test.exs @@ -171,6 +171,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do end describe "public fetch activities" do + @tag :skip test "doesn't retrieve unlisted activities" do user = insert(:user) {:ok, unlisted_activity} = CommonAPI.post(user, %{"status" => "yeah", "visibility" => "unlisted"}) -- cgit v1.2.3 From c7a85de35c3ef8cfca447ffdb85cd929258642df Mon Sep 17 00:00:00 2001 From: lain Date: Sun, 13 May 2018 12:38:13 +0200 Subject: Revert "Remove 'unlisted' handling for now." This reverts commit 1027d1f6963b495a5abc67b05447619ce7d429db. --- test/web/activity_pub/activity_pub_test.exs | 1 - 1 file changed, 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 c4b59f5c7..a39ba9adb 100644 --- a/test/web/activity_pub/activity_pub_test.exs +++ b/test/web/activity_pub/activity_pub_test.exs @@ -171,7 +171,6 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do end describe "public fetch activities" do - @tag :skip test "doesn't retrieve unlisted activities" do user = insert(:user) {:ok, unlisted_activity} = CommonAPI.post(user, %{"status" => "yeah", "visibility" => "unlisted"}) -- cgit v1.2.3 From 89954a2ce7a5003c539650112c974d1d05908e27 Mon Sep 17 00:00:00 2001 From: lain Date: Sun, 13 May 2018 13:02:24 +0200 Subject: Fix format. --- test/web/activity_pub/activity_pub_test.exs | 5 ++++- 1 file changed, 4 insertions(+), 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 a39ba9adb..c1ba626b7 100644 --- a/test/web/activity_pub/activity_pub_test.exs +++ b/test/web/activity_pub/activity_pub_test.exs @@ -173,7 +173,10 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do describe "public fetch activities" do test "doesn't retrieve unlisted activities" do user = insert(:user) - {:ok, unlisted_activity} = CommonAPI.post(user, %{"status" => "yeah", "visibility" => "unlisted"}) + + {:ok, unlisted_activity} = + CommonAPI.post(user, %{"status" => "yeah", "visibility" => "unlisted"}) + {:ok, listed_activity} = CommonAPI.post(user, %{"status" => "yeah"}) [activity] = ActivityPub.fetch_public_activities() -- cgit v1.2.3 From 19c96c8a19aece5419bc0be5ea3e2945887828b7 Mon Sep 17 00:00:00 2001 From: William Pitcock Date: Sat, 19 May 2018 08:06:23 +0000 Subject: tests: add tests for Transmogrifier.maybe_fix_user_object() --- test/web/activity_pub/transmogrifier_test.exs | 11 +++++++++++ 1 file changed, 11 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..b02d80cce 100644 --- a/test/web/activity_pub/transmogrifier_test.exs +++ b/test/web/activity_pub/transmogrifier_test.exs @@ -420,4 +420,15 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do assert Repo.get(WebsubClientSubscription, ws2.id) end end + + describe "actor rewriting" do + test "it fixes the actor URL property to be a proper URI" do + data = %{ + "url" => %{"href" => "http://example.com"} + } + + rewritten = Transmogrifier.maybe_fix_user_object(data) + assert rewritten["url"] == "http://example.com" + end + end end -- cgit v1.2.3 From 4033ed671443bbb4111b45473696dc8a23fe9873 Mon Sep 17 00:00:00 2001 From: William Pitcock Date: Sat, 19 May 2018 08:25:45 +0000 Subject: tests: add test for hubzilla follow activity too --- test/web/activity_pub/transmogrifier_test.exs | 18 ++++++++++++++++++ 1 file changed, 18 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 b02d80cce..d8579ecfe 100644 --- a/test/web/activity_pub/transmogrifier_test.exs +++ b/test/web/activity_pub/transmogrifier_test.exs @@ -1,6 +1,7 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do use Pleroma.DataCase alias Pleroma.Web.ActivityPub.Transmogrifier + alias Pleroma.Web.ActivityPub.Utils alias Pleroma.Web.OStatus alias Pleroma.Activity alias Pleroma.User @@ -118,6 +119,23 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do assert User.following?(User.get_by_ap_id(data["actor"]), user) end + test "it works for incoming follow requests from hubzilla" do + user = insert(:user) + + data = + File.read!("test/fixtures/hubzilla-follow-activity.json") + |> Poison.decode!() + |> Map.put("object", user.ap_id) + |> Utils.normalize_params() + + {:ok, %Activity{data: data, local: false}} = Transmogrifier.handle_incoming(data) + + assert data["actor"] == "https://hubzilla.example.org/channel/kaniini" + assert data["type"] == "Follow" + assert data["id"] == "https://hubzilla.example.org/channel/kaniini#follows/2" + assert User.following?(User.get_by_ap_id(data["actor"]), user) + end + test "it works for incoming likes" do user = insert(:user) {:ok, activity} = CommonAPI.post(user, %{"status" => "hello"}) -- cgit v1.2.3 From 6f39ecc41be77298ae375ca0a2f51ae7dc29fbbf Mon Sep 17 00:00:00 2001 From: Thog Date: Sat, 19 May 2018 15:22:43 +0200 Subject: Support Undo like activities (Fix #139) --- test/web/activity_pub/activity_pub_test.exs | 2 +- test/web/activity_pub/transmogrifier_test.exs | 37 +++++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 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 c1ba626b7..9adce84b5 100644 --- a/test/web/activity_pub/activity_pub_test.exs +++ b/test/web/activity_pub/activity_pub_test.exs @@ -277,7 +277,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do {:ok, like_activity, object} = ActivityPub.like(user, object) assert object.data["like_count"] == 1 - {:ok, object} = ActivityPub.unlike(user, object) + {:ok, _, _, object} = ActivityPub.unlike(user, object) assert object.data["like_count"] == 0 assert Repo.get(Activity, like_activity.id) == nil diff --git a/test/web/activity_pub/transmogrifier_test.exs b/test/web/activity_pub/transmogrifier_test.exs index d8579ecfe..a0af75a69 100644 --- a/test/web/activity_pub/transmogrifier_test.exs +++ b/test/web/activity_pub/transmogrifier_test.exs @@ -153,6 +153,43 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do assert data["object"] == activity.data["object"]["id"] end + test "it returns an error for incoming unlikes wihout a like activity" do + user = insert(:user) + {:ok, activity} = CommonAPI.post(user, %{"status" => "leave a like pls"}) + + data = + File.read!("test/fixtures/mastodon-undo-like.json") + |> Poison.decode!() + |> Map.put("object", activity.data["object"]["id"]) + + assert Transmogrifier.handle_incoming(data) == :error + end + + test "it works for incoming unlikes with an existing like activity" do + user = insert(:user) + {:ok, activity} = CommonAPI.post(user, %{"status" => "leave a like pls"}) + + like_data = + File.read!("test/fixtures/mastodon-like.json") + |> Poison.decode!() + |> Map.put("object", activity.data["object"]["id"]) + + {:ok, %Activity{data: like_data, local: false}} = Transmogrifier.handle_incoming(like_data) + + data = + File.read!("test/fixtures/mastodon-undo-like.json") + |> Poison.decode!() + |> Map.put("object", like_data) + |> Map.put("actor", like_data["actor"]) + + {:ok, %Activity{data: data, local: false}} = Transmogrifier.handle_incoming(data) + + assert data["actor"] == "http://mastodon.example.org/users/admin" + assert data["type"] == "Undo" + assert data["id"] == "http://mastodon.example.org/users/admin#likes/2/undo" + assert data["object"]["id"] == "http://mastodon.example.org/users/admin#likes/2" + end + test "it works for incoming announces" do data = File.read!("test/fixtures/mastodon-announce.json") |> Poison.decode!() -- cgit v1.2.3