From 75c4ceb4a2e5b59607a4688a2519e2f784aaa8f6 Mon Sep 17 00:00:00 2001 From: Sadposter Date: Fri, 5 Apr 2019 15:14:19 +0100 Subject: Add tests for subscriptions --- test/notification_test.exs | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'test') diff --git a/test/notification_test.exs b/test/notification_test.exs index 12b4292aa..3a11d493b 100644 --- a/test/notification_test.exs +++ b/test/notification_test.exs @@ -29,6 +29,18 @@ defmodule Pleroma.NotificationTest do assert notification.activity_id == activity.id assert other_notification.activity_id == activity.id end + + + test "it creates a notification for subscribed users" do + user = insert(:user) + subscriber = insert(:user) + + {:ok, _, _} = TwitterAPI.subscribe(subscriber, %{"user_id" => user.id}) + {:ok, status} = TwitterAPI.create_status(user, %{"status" => "Akariiiin"}) + {:ok, [notification]} = Notification.create_notifications(status) + + assert notification.user_id == subscriber.id + end end describe "create_notification" do @@ -84,6 +96,16 @@ defmodule Pleroma.NotificationTest do {:ok, dupe} = TwitterAPI.repeat(user, status.id) assert nil == Notification.create_notification(dupe, retweeted_user) end + + test "it doesn't create duplicate notifications for follow+subscribed users" do + user = insert(:user) + subscriber = insert(:user) + + {:ok, _, _, _} = TwitterAPI.follow(subscriber, %{"user_id" => user.id}) + {:ok, _, _} = TwitterAPI.subscribe(subscriber, %{"user_id" => user.id}) + {:ok, status} = TwitterAPI.create_status(user, %{"status" => "Akariiiin"}) + {:ok, [_notif]} = Notification.create_notifications(status) + end end describe "get notification" do -- cgit v1.2.3 From d56866c824d8023c9ca162ffef4c2eff150de399 Mon Sep 17 00:00:00 2001 From: Sadposter Date: Fri, 5 Apr 2019 15:21:33 +0100 Subject: Add subscribed status to user view Added in pleroma extensions, but can be moved whenever --- test/web/twitter_api/views/user_view_test.exs | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) (limited to 'test') diff --git a/test/web/twitter_api/views/user_view_test.exs b/test/web/twitter_api/views/user_view_test.exs index 0feaf4b64..f9ae5888c 100644 --- a/test/web/twitter_api/views/user_view_test.exs +++ b/test/web/twitter_api/views/user_view_test.exs @@ -105,7 +105,8 @@ defmodule Pleroma.Web.TwitterAPI.UserViewTest do "fields" => [], "pleroma" => %{ "confirmation_pending" => false, - "tags" => [] + "tags" => [], + "subscribed" => false } } @@ -153,7 +154,8 @@ defmodule Pleroma.Web.TwitterAPI.UserViewTest do "fields" => [], "pleroma" => %{ "confirmation_pending" => false, - "tags" => [] + "tags" => [], + "subscribed" => false, } } @@ -202,13 +204,22 @@ defmodule Pleroma.Web.TwitterAPI.UserViewTest do "fields" => [], "pleroma" => %{ "confirmation_pending" => false, - "tags" => [] + "tags" => [], + "subscribed" => false } } assert represented == UserView.render("show.json", %{user: follower, for: user}) end + test "a user that you are subscribed to" do + user = insert(:user) + subscriber = insert(:user) + {:ok, subscriber} = User.subscribe(subscriber, user) + represented = UserView.render("show.json", %{user: user, for: subscriber}) + assert represented["pleroma"]["subscribed"] == true + end + test "a user that is a moderator" do user = insert(:user, %{info: %{is_moderator: true}}) represented = UserView.render("show.json", %{user: user, for: user}) -- cgit v1.2.3 From 06cd547fc6562b00d505fcc8e78ba7c734b1adf0 Mon Sep 17 00:00:00 2001 From: Sadposter Date: Fri, 5 Apr 2019 15:22:48 +0100 Subject: Format subscriptions related stuff --- test/notification_test.exs | 3 +-- test/web/twitter_api/views/user_view_test.exs | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) (limited to 'test') diff --git a/test/notification_test.exs b/test/notification_test.exs index 3a11d493b..96a8d372a 100644 --- a/test/notification_test.exs +++ b/test/notification_test.exs @@ -30,7 +30,6 @@ defmodule Pleroma.NotificationTest do assert other_notification.activity_id == activity.id end - test "it creates a notification for subscribed users" do user = insert(:user) subscriber = insert(:user) @@ -38,7 +37,7 @@ defmodule Pleroma.NotificationTest do {:ok, _, _} = TwitterAPI.subscribe(subscriber, %{"user_id" => user.id}) {:ok, status} = TwitterAPI.create_status(user, %{"status" => "Akariiiin"}) {:ok, [notification]} = Notification.create_notifications(status) - + assert notification.user_id == subscriber.id end end diff --git a/test/web/twitter_api/views/user_view_test.exs b/test/web/twitter_api/views/user_view_test.exs index f9ae5888c..8986112cc 100644 --- a/test/web/twitter_api/views/user_view_test.exs +++ b/test/web/twitter_api/views/user_view_test.exs @@ -155,7 +155,7 @@ defmodule Pleroma.Web.TwitterAPI.UserViewTest do "pleroma" => %{ "confirmation_pending" => false, "tags" => [], - "subscribed" => false, + "subscribed" => false } } -- cgit v1.2.3 From 73afd13c2114dde0f9939d2f8c8516d2693b7e95 Mon Sep 17 00:00:00 2001 From: Sadposter Date: Fri, 5 Apr 2019 15:37:00 +0100 Subject: Add subscription key to one test I forgot about --- test/web/twitter_api/views/user_view_test.exs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'test') diff --git a/test/web/twitter_api/views/user_view_test.exs b/test/web/twitter_api/views/user_view_test.exs index 8986112cc..69d9c5da5 100644 --- a/test/web/twitter_api/views/user_view_test.exs +++ b/test/web/twitter_api/views/user_view_test.exs @@ -299,7 +299,8 @@ defmodule Pleroma.Web.TwitterAPI.UserViewTest do "fields" => [], "pleroma" => %{ "confirmation_pending" => false, - "tags" => [] + "tags" => [], + "subscribed" => false } } -- cgit v1.2.3 From 9ca91cbb8764ef4f8fe5303705dd98984e4e90c0 Mon Sep 17 00:00:00 2001 From: Sadposter Date: Fri, 5 Apr 2019 16:51:45 +0100 Subject: Change relationship direction of subscriptions --- test/web/mastodon_api/account_view_test.exs | 2 ++ .../mastodon_api/mastodon_api_controller_test.exs | 19 +++++++++++++++++++ test/web/twitter_api/views/user_view_test.exs | 20 ++++---------------- 3 files changed, 25 insertions(+), 16 deletions(-) (limited to 'test') diff --git a/test/web/mastodon_api/account_view_test.exs b/test/web/mastodon_api/account_view_test.exs index 6dc60afe9..48580ff1e 100644 --- a/test/web/mastodon_api/account_view_test.exs +++ b/test/web/mastodon_api/account_view_test.exs @@ -142,6 +142,7 @@ defmodule Pleroma.Web.MastodonAPI.AccountViewTest do blocking: true, muting: false, muting_notifications: false, + subscribing: false, requested: false, domain_blocking: false, showing_reblogs: true, @@ -198,6 +199,7 @@ defmodule Pleroma.Web.MastodonAPI.AccountViewTest do following: false, followed_by: false, blocking: true, + subscribing: false, muting: false, muting_notifications: false, requested: false, diff --git a/test/web/mastodon_api/mastodon_api_controller_test.exs b/test/web/mastodon_api/mastodon_api_controller_test.exs index 6060cc97f..811a2dd7b 100644 --- a/test/web/mastodon_api/mastodon_api_controller_test.exs +++ b/test/web/mastodon_api/mastodon_api_controller_test.exs @@ -1555,6 +1555,25 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do assert %{"id" => _id, "muting" => false} = json_response(conn, 200) end + test "subscribing / unsubscribing to a user", %{conn: conn} do + user = insert(:user) + subscription_target = insert(:user) + + conn = + conn + |> assign(:user, user) + |> post("/api/v1/pleroma/accounts/#{subscription_target.id}/subscribe") + + assert %{"id" => _id, "subscribing" => true} = json_response(conn, 200) + + conn = + build_conn() + |> assign(:user, user) + |> post("/api/v1/pleroma/accounts/#{subscription_target.id}/unsubscribe") + + assert %{"id" => _id, "subscribing" => false} = json_response(conn, 200) + end + test "getting a list of mutes", %{conn: conn} do user = insert(:user) other_user = insert(:user) diff --git a/test/web/twitter_api/views/user_view_test.exs b/test/web/twitter_api/views/user_view_test.exs index 69d9c5da5..0feaf4b64 100644 --- a/test/web/twitter_api/views/user_view_test.exs +++ b/test/web/twitter_api/views/user_view_test.exs @@ -105,8 +105,7 @@ defmodule Pleroma.Web.TwitterAPI.UserViewTest do "fields" => [], "pleroma" => %{ "confirmation_pending" => false, - "tags" => [], - "subscribed" => false + "tags" => [] } } @@ -154,8 +153,7 @@ defmodule Pleroma.Web.TwitterAPI.UserViewTest do "fields" => [], "pleroma" => %{ "confirmation_pending" => false, - "tags" => [], - "subscribed" => false + "tags" => [] } } @@ -204,22 +202,13 @@ defmodule Pleroma.Web.TwitterAPI.UserViewTest do "fields" => [], "pleroma" => %{ "confirmation_pending" => false, - "tags" => [], - "subscribed" => false + "tags" => [] } } assert represented == UserView.render("show.json", %{user: follower, for: user}) end - test "a user that you are subscribed to" do - user = insert(:user) - subscriber = insert(:user) - {:ok, subscriber} = User.subscribe(subscriber, user) - represented = UserView.render("show.json", %{user: user, for: subscriber}) - assert represented["pleroma"]["subscribed"] == true - end - test "a user that is a moderator" do user = insert(:user, %{info: %{is_moderator: true}}) represented = UserView.render("show.json", %{user: user, for: user}) @@ -299,8 +288,7 @@ defmodule Pleroma.Web.TwitterAPI.UserViewTest do "fields" => [], "pleroma" => %{ "confirmation_pending" => false, - "tags" => [], - "subscribed" => false + "tags" => [] } } -- cgit v1.2.3 From f6e131eeb9b9e75e66c5e64084f46e57b9b1358f Mon Sep 17 00:00:00 2001 From: Sadposter Date: Fri, 5 Apr 2019 17:00:41 +0100 Subject: Don't use twitterAPI for subscription tests --- test/notification_test.exs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'test') diff --git a/test/notification_test.exs b/test/notification_test.exs index 96a8d372a..2163c95c0 100644 --- a/test/notification_test.exs +++ b/test/notification_test.exs @@ -33,8 +33,9 @@ defmodule Pleroma.NotificationTest do test "it creates a notification for subscribed users" do user = insert(:user) subscriber = insert(:user) + + User.subscribe(subscriber, user) - {:ok, _, _} = TwitterAPI.subscribe(subscriber, %{"user_id" => user.id}) {:ok, status} = TwitterAPI.create_status(user, %{"status" => "Akariiiin"}) {:ok, [notification]} = Notification.create_notifications(status) @@ -101,7 +102,7 @@ defmodule Pleroma.NotificationTest do subscriber = insert(:user) {:ok, _, _, _} = TwitterAPI.follow(subscriber, %{"user_id" => user.id}) - {:ok, _, _} = TwitterAPI.subscribe(subscriber, %{"user_id" => user.id}) + User.subscribe(subscriber, user) {:ok, status} = TwitterAPI.create_status(user, %{"status" => "Akariiiin"}) {:ok, [_notif]} = Notification.create_notifications(status) end -- cgit v1.2.3 From a270e7a1915c0d36004e16fc9a166a42ea3eff8a Mon Sep 17 00:00:00 2001 From: Sadposter Date: Fri, 5 Apr 2019 17:07:58 +0100 Subject: Mix format everything --- test/notification_test.exs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'test') diff --git a/test/notification_test.exs b/test/notification_test.exs index 2163c95c0..8109623af 100644 --- a/test/notification_test.exs +++ b/test/notification_test.exs @@ -33,7 +33,7 @@ defmodule Pleroma.NotificationTest do test "it creates a notification for subscribed users" do user = insert(:user) subscriber = insert(:user) - + User.subscribe(subscriber, user) {:ok, status} = TwitterAPI.create_status(user, %{"status" => "Akariiiin"}) -- cgit v1.2.3 From 76fdfd1c7f10332783ef167b7b996edd4813b1c3 Mon Sep 17 00:00:00 2001 From: Sadposter Date: Sun, 7 Apr 2019 15:11:29 +0100 Subject: Add check on activity visibility in sub notification --- test/notification_test.exs | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'test') diff --git a/test/notification_test.exs b/test/notification_test.exs index 8109623af..5727620c9 100644 --- a/test/notification_test.exs +++ b/test/notification_test.exs @@ -106,6 +106,18 @@ defmodule Pleroma.NotificationTest do {:ok, status} = TwitterAPI.create_status(user, %{"status" => "Akariiiin"}) {:ok, [_notif]} = Notification.create_notifications(status) end + + test "it doesn't create subscription notifications if the recipient cannot see the status" do + user = insert(:user) + subscriber = insert(:user) + + User.subscribe(subscriber, user) + + {:ok, status} = + TwitterAPI.create_status(user, %{"status" => "inwisible", "visibility" => "direct"}) + + assert {:ok, []} == Notification.create_notifications(status) + end end describe "get notification" do -- cgit v1.2.3 From 13ff312c48c338c93ee9aa85ec2e48c2059d5168 Mon Sep 17 00:00:00 2001 From: Sadposter Date: Mon, 8 Apr 2019 12:46:12 +0100 Subject: Sever subscription in case of block --- test/user_test.exs | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'test') diff --git a/test/user_test.exs b/test/user_test.exs index 38712cebb..2368f95f5 100644 --- a/test/user_test.exs +++ b/test/user_test.exs @@ -146,6 +146,15 @@ defmodule Pleroma.UserTest do {:error, _} = User.follow(blockee, blocker) end + test "can't subscribe to a user who blocked us" do + blocker = insert(:user) + blocked = insert(:user) + + {:ok, blocker} = User.block(blocker, blocked) + + {:error, _} = User.subscribe(blocked, blocker) + end + test "local users do not automatically follow local locked accounts" do follower = insert(:user, info: %{locked: true}) followed = insert(:user, info: %{locked: true}) @@ -729,6 +738,22 @@ defmodule Pleroma.UserTest do refute User.following?(blocker, blocked) refute User.following?(blocked, blocker) end + + test "blocks tear down blocked->blocker subscription relationships" do + blocker = insert(:user) + blocked = insert(:user) + + {:ok, blocker} = User.subscribe(blocked, blocker) + + assert User.subscribed_to?(blocked, blocker) + refute User.subscribed_to?(blocker, blocked) + + {:ok, blocker} = User.block(blocker, blocked) + + assert User.blocks?(blocker, blocked) + refute User.subscribed_to?(blocker, blocked) + refute User.subscribed_to?(blocked, blocker) + end end describe "domain blocking" do -- cgit v1.2.3