summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/notification_test.exs11
-rw-r--r--test/user_test.exs36
-rw-r--r--test/web/activity_pub/activity_pub_test.exs29
-rw-r--r--test/web/mastodon_api/account_view_test.exs3
-rw-r--r--test/web/mastodon_api/mastodon_api_controller_test.exs36
5 files changed, 104 insertions, 11 deletions
diff --git a/test/notification_test.exs b/test/notification_test.exs
index f50b3cb24..77fdb532f 100644
--- a/test/notification_test.exs
+++ b/test/notification_test.exs
@@ -20,4 +20,15 @@ defmodule Pleroma.NotificationTest do
assert other_notification.activity_id == activity.id
end
end
+
+ describe "create_notification" do
+ test "it doesn't create a notification for user if the user blocks the activity author" do
+ activity = insert(:note_activity)
+ author = User.get_by_ap_id(activity.data["actor"])
+ user = insert(:user)
+ {:ok, user} = User.block(user, author)
+
+ assert nil == Notification.create_notification(activity, user)
+ end
+ end
end
diff --git a/test/user_test.exs b/test/user_test.exs
index ae9a48e74..151b9afc0 100644
--- a/test/user_test.exs
+++ b/test/user_test.exs
@@ -9,11 +9,6 @@ defmodule Pleroma.UserTest do
import Ecto.Query
test "ap_id returns the activity pub id for the user" do
- host =
- Application.get_env(:pleroma, Pleroma.Web.Endpoint)
- |> Keyword.fetch!(:url)
- |> Keyword.fetch!(:host)
-
user = UserBuilder.build
expected_ap_id = "#{Pleroma.Web.base_url}/users/#{user.nickname}"
@@ -213,7 +208,9 @@ defmodule Pleroma.UserTest do
{:ok, res} = User.get_followers(user)
- assert res == [follower_one, follower_two]
+ assert Enum.member?(res, follower_one)
+ assert Enum.member?(res, follower_two)
+ refute Enum.member?(res, not_follower)
end
test "gets all friends (followed users) for a given user" do
@@ -229,7 +226,9 @@ defmodule Pleroma.UserTest do
followed_one = User.get_by_ap_id(followed_one.ap_id)
followed_two = User.get_by_ap_id(followed_two.ap_id)
- assert res == [followed_one, followed_two]
+ assert Enum.member?(res, followed_one)
+ assert Enum.member?(res, followed_two)
+ refute Enum.member?(res, not_followed)
end
end
@@ -274,5 +273,28 @@ defmodule Pleroma.UserTest do
assert user.info["follower_count"] == 1
end
end
+
+ describe "blocks" do
+ test "it blocks people" do
+ user = insert(:user)
+ blocked_user = insert(:user)
+
+ refute User.blocks?(user, blocked_user)
+
+ {:ok, user} = User.block(user, blocked_user)
+
+ assert User.blocks?(user, blocked_user)
+ end
+
+ test "it unblocks users" do
+ user = insert(:user)
+ blocked_user = insert(:user)
+
+ {:ok, user} = User.block(user, blocked_user)
+ {:ok, user} = User.unblock(user, blocked_user)
+
+ refute User.blocks?(user, blocked_user)
+ end
+ end
end
diff --git a/test/web/activity_pub/activity_pub_test.exs b/test/web/activity_pub/activity_pub_test.exs
index a088e97be..a02740d5d 100644
--- a/test/web/activity_pub/activity_pub_test.exs
+++ b/test/web/activity_pub/activity_pub_test.exs
@@ -73,13 +73,40 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do
{:ok, activity_two} = ActivityBuilder.insert(%{"type" => "Create", "context" => "2hu"})
{:ok, _activity_three} = ActivityBuilder.insert(%{"type" => "Create", "context" => "3hu"})
{:ok, _activity_four} = ActivityBuilder.insert(%{"type" => "Announce", "context" => "2hu"})
+ activity_five = insert(:note_activity)
+ user = insert(:user)
- activities = ActivityPub.fetch_activities_for_context("2hu")
+ {:ok, user} = User.block(user, %{ap_id: activity_five.data["actor"]})
+ activities = ActivityPub.fetch_activities_for_context("2hu", %{"blocking_user" => user})
assert activities == [activity_two, activity]
end
end
+ test "doesn't return blocked activities" do
+ activity_one = insert(:note_activity)
+ activity_two = insert(:note_activity)
+ user = insert(:user)
+ {:ok, user} = User.block(user, %{ap_id: activity_one.data["actor"]})
+
+ activities = ActivityPub.fetch_activities([], %{"blocking_user" => user})
+
+ assert Enum.member?(activities, activity_two)
+ refute Enum.member?(activities, activity_one)
+
+ {:ok, user} = User.unblock(user, %{ap_id: activity_one.data["actor"]})
+
+ activities = ActivityPub.fetch_activities([], %{"blocking_user" => user})
+
+ assert Enum.member?(activities, activity_two)
+ assert Enum.member?(activities, activity_one)
+
+ activities = ActivityPub.fetch_activities([], %{"blocking_user" => nil})
+
+ assert Enum.member?(activities, activity_two)
+ assert Enum.member?(activities, activity_one)
+ end
+
describe "public fetch activities" do
test "retrieves public activities" do
%{public: public} = ActivityBuilder.public_and_non_public
diff --git a/test/web/mastodon_api/account_view_test.exs b/test/web/mastodon_api/account_view_test.exs
index aa74ed966..c62cb4f36 100644
--- a/test/web/mastodon_api/account_view_test.exs
+++ b/test/web/mastodon_api/account_view_test.exs
@@ -51,12 +51,13 @@ defmodule Pleroma.Web.MastodonAPI.AccountViewTest do
other_user = insert(:user)
{:ok, user} = User.follow(user, other_user)
+ {:ok, user} = User.block(user, other_user)
expected = %{
id: other_user.id,
following: true,
followed_by: false,
- blocking: false,
+ blocking: true,
muting: false,
requested: false,
domain_blocking: false
diff --git a/test/web/mastodon_api/mastodon_api_controller_test.exs b/test/web/mastodon_api/mastodon_api_controller_test.exs
index cf09bc4b8..d118026eb 100644
--- a/test/web/mastodon_api/mastodon_api_controller_test.exs
+++ b/test/web/mastodon_api/mastodon_api_controller_test.exs
@@ -291,11 +291,43 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do
assert id == other_user.id
end
- test "unimplemented block/mute endpoints" do
+ test "blocking / unblocking a user", %{conn: conn} do
user = insert(:user)
other_user = insert(:user)
- ["block", "unblock", "mute", "unmute"]
+ conn = conn
+ |> assign(:user, user)
+ |> post("/api/v1/accounts/#{other_user.id}/block")
+
+ assert %{"id" => id, "blocking" => true} = json_response(conn, 200)
+
+ user = Repo.get(User, user.id)
+ conn = build_conn()
+ |> assign(:user, user)
+ |> post("/api/v1/accounts/#{other_user.id}/unblock")
+
+ assert %{"id" => id, "blocking" => false} = json_response(conn, 200)
+ end
+
+ test "getting a list of blocks", %{conn: conn} do
+ user = insert(:user)
+ other_user = insert(:user)
+
+ {:ok, user} = User.block(user, other_user)
+
+ conn = conn
+ |> assign(:user, user)
+ |> get("/api/v1/blocks")
+
+ other_user_id = other_user.id
+ assert [%{"id" => ^other_user_id}] = json_response(conn, 200)
+ end
+
+ test "unimplemented mute endpoints" do
+ user = insert(:user)
+ other_user = insert(:user)
+
+ ["mute", "unmute"]
|> Enum.each(fn(endpoint) ->
conn = build_conn()
|> assign(:user, user)