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 ++++++++++++++++++++ .../mastodon_api/mastodon_api_controller_test.exs | 19 +++++++++++++++++++ 2 files changed, 39 insertions(+) (limited to 'test') 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{ diff --git a/test/web/mastodon_api/mastodon_api_controller_test.exs b/test/web/mastodon_api/mastodon_api_controller_test.exs index 5293b9364..f3a9c1def 100644 --- a/test/web/mastodon_api/mastodon_api_controller_test.exs +++ b/test/web/mastodon_api/mastodon_api_controller_test.exs @@ -264,6 +264,25 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do end end + describe "unreblogging" do + test "unreblogs and returns the unreblogged status", %{conn: conn} do + activity = insert(:note_activity) + user = insert(:user) + + {:ok, _, _} = CommonAPI.repeat(activity.id, user) + + conn = + conn + |> assign(:user, user) + |> post("/api/v1/statuses/#{activity.id}/unreblog") + + assert %{"reblog" => %{"id" => id, "reblogged" => false, "reblogs_count" => 0}} = + json_response(conn, 200) + + assert to_string(activity.id) == id + end + end + describe "favoriting" do test "favs a status and returns it", %{conn: conn} do activity = insert(:note_activity) -- cgit v1.2.3 From 42279f54cfa6b1728f71de0a14cfde8e615141e7 Mon Sep 17 00:00:00 2001 From: Francis Dinh Date: Mon, 16 Apr 2018 23:30:52 -0400 Subject: Return target status in MastoAPI endpoint instead of reblog activity --- test/web/mastodon_api/mastodon_api_controller_test.exs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'test') diff --git a/test/web/mastodon_api/mastodon_api_controller_test.exs b/test/web/mastodon_api/mastodon_api_controller_test.exs index f3a9c1def..2a24037d7 100644 --- a/test/web/mastodon_api/mastodon_api_controller_test.exs +++ b/test/web/mastodon_api/mastodon_api_controller_test.exs @@ -276,7 +276,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do |> assign(:user, user) |> post("/api/v1/statuses/#{activity.id}/unreblog") - assert %{"reblog" => %{"id" => id, "reblogged" => false, "reblogs_count" => 0}} = + assert %{"id" => id, "reblogged" => false, "reblogs_count" => 0} = json_response(conn, 200) assert to_string(activity.id) == id -- 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') 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') 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') 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') 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 ++++--- test/web/mastodon_api/mastodon_api_controller_test.exs | 3 +-- 2 files changed, 5 insertions(+), 5 deletions(-) (limited to 'test') 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 diff --git a/test/web/mastodon_api/mastodon_api_controller_test.exs b/test/web/mastodon_api/mastodon_api_controller_test.exs index 2a24037d7..14f8c3c42 100644 --- a/test/web/mastodon_api/mastodon_api_controller_test.exs +++ b/test/web/mastodon_api/mastodon_api_controller_test.exs @@ -276,8 +276,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do |> assign(:user, user) |> post("/api/v1/statuses/#{activity.id}/unreblog") - assert %{"id" => id, "reblogged" => false, "reblogs_count" => 0} = - json_response(conn, 200) + assert %{"id" => id, "reblogged" => false, "reblogs_count" => 0} = json_response(conn, 200) assert to_string(activity.id) == id end -- 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') 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/fixtures/mastodon-undo-announce.json | 47 +++++++++++++++++++++++++++ test/web/activity_pub/transmogrifier_test.exs | 28 ++++++++++++++++ 2 files changed, 75 insertions(+) create mode 100644 test/fixtures/mastodon-undo-announce.json (limited to 'test') diff --git a/test/fixtures/mastodon-undo-announce.json b/test/fixtures/mastodon-undo-announce.json new file mode 100644 index 000000000..2d8bca436 --- /dev/null +++ b/test/fixtures/mastodon-undo-announce.json @@ -0,0 +1,47 @@ +{ + "type": "Undo", + "signature": { + "type": "RsaSignature2017", + "signatureValue": "VU9AmHf3Pus9cWtMG/TOdxr+MRQfPHdTVKBBgFJBXhAlMhxEtcbxsu7zmqBgfIz6u0HpTCi5jRXEMftc228OJf/aBUkr4hyWADgcdmhPQgpibouDLgQf9BmnrPqb2rMbzZyt49GJkQZma8taLh077TTq6OKcnsAAJ1evEKOcRYS4OxBSwh4nI726bOXzZWoNzpTcrnm+llcUEN980sDSAS0uyZdb8AxZdfdG6DJQX4AkUD5qTpfqP/vC1ISirrNphvVhlxjUV9Amr4SYTsLx80vdZe5NjeL5Ir4jTIIQLedpxaDu1M9Q+Jpc0fYByQ2hOwUq8JxEmvHvarKjrq0Oww==", + "creator": "http://mastodon.example.org/users/admin#main-key", + "created": "2018-05-11T16:23:45Z" + }, + "object": { + "type": "Announce", + "to": [ + "http://www.w3.org/ns/activitystreams#Public" + ], + "published": "2018-05-11T16:23:37Z", + "object": "http://lostallofmy.faith/objects/acc592f0-093a-4326-856e-2ab30947ef11", + "id": "http://mastodon.example.org/users/admin/statuses/100011594053806179/activity", + "cc": [ + "http://lostallofmy.faith/users/admin", + "http://mastodon.example.org/users/admin/followers" + ], + "atomUri": "http://mastodon.example.org/users/admin/statuses/100011594053806179/activity", + "actor": "http://mastodon.example.org/users/admin" + }, + "id": "http://mastodon.example.org/users/admin#announces/100011594053806179/undo", + "actor": "http://mastodon.example.org/users/admin", + "@context": [ + "http://www.w3.org/ns/activitystreams", + "http://w3id.org/security/v1", + { + "toot": "http://joinmastodon.org/ns#", + "sensitive": "as:sensitive", + "ostatus": "http://ostatus.org#", + "movedTo": "as:movedTo", + "manuallyApprovesFollowers": "as:manuallyApprovesFollowers", + "inReplyToAtomUri": "ostatus:inReplyToAtomUri", + "focalPoint": { + "@id": "toot:focalPoint", + "@container": "@list" + }, + "featured": "toot:featured", + "conversation": "ostatus:conversation", + "atomUri": "ostatus:atomUri", + "Hashtag": "as:Hashtag", + "Emoji": "toot:Emoji" + } + ] +} 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 694e3769542ae661d3967c1c03d24be0496d98cc Mon Sep 17 00:00:00 2001 From: Francis Dinh Date: Sat, 12 May 2018 11:10:49 -0400 Subject: Update test fixture --- test/fixtures/mastodon-undo-announce.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'test') diff --git a/test/fixtures/mastodon-undo-announce.json b/test/fixtures/mastodon-undo-announce.json index 2d8bca436..05332bed2 100644 --- a/test/fixtures/mastodon-undo-announce.json +++ b/test/fixtures/mastodon-undo-announce.json @@ -12,13 +12,13 @@ "http://www.w3.org/ns/activitystreams#Public" ], "published": "2018-05-11T16:23:37Z", - "object": "http://lostallofmy.faith/objects/acc592f0-093a-4326-856e-2ab30947ef11", - "id": "http://mastodon.example.org/users/admin/statuses/100011594053806179/activity", + "object": "http://mastodon.example.org/@admin/99541947525187367", + "id": "http://mastodon.example.org/users/admin/statuses/99542391527669785/activity", "cc": [ - "http://lostallofmy.faith/users/admin", + "http://mastodon.example.org/users/admin", "http://mastodon.example.org/users/admin/followers" ], - "atomUri": "http://mastodon.example.org/users/admin/statuses/100011594053806179/activity", + "atomUri": "http://mastodon.example.org/users/admin/statuses/99542391527669785/activity", "actor": "http://mastodon.example.org/users/admin" }, "id": "http://mastodon.example.org/users/admin#announces/100011594053806179/undo", -- cgit v1.2.3