2018-12-23 12:11:29 -08:00
|
|
|
# Pleroma: A lightweight social networking server
|
|
|
|
# Copyright © 2017-2018 Pleroma Authors <https://pleroma.social/>
|
|
|
|
# SPDX-License-Identifier: AGPL-3.0-only
|
|
|
|
|
2018-04-29 06:02:46 -07:00
|
|
|
defmodule Pleroma.ListTest do
|
2018-12-11 04:31:52 -08:00
|
|
|
alias Pleroma.Repo
|
2018-04-29 06:02:46 -07:00
|
|
|
use Pleroma.DataCase
|
|
|
|
|
|
|
|
import Pleroma.Factory
|
|
|
|
|
|
|
|
test "creating a list" do
|
|
|
|
user = insert(:user)
|
|
|
|
{:ok, %Pleroma.List{} = list} = Pleroma.List.create("title", user)
|
|
|
|
%Pleroma.List{title: title} = Pleroma.List.get(list.id, user)
|
|
|
|
assert title == "title"
|
|
|
|
end
|
|
|
|
|
|
|
|
test "getting a list not belonging to the user" do
|
|
|
|
user = insert(:user)
|
|
|
|
other_user = insert(:user)
|
|
|
|
{:ok, %Pleroma.List{} = list} = Pleroma.List.create("title", user)
|
|
|
|
ret = Pleroma.List.get(list.id, other_user)
|
|
|
|
assert is_nil(ret)
|
|
|
|
end
|
|
|
|
|
|
|
|
test "adding an user to a list" do
|
|
|
|
user = insert(:user)
|
|
|
|
other_user = insert(:user)
|
|
|
|
{:ok, list} = Pleroma.List.create("title", user)
|
|
|
|
{:ok, %{following: following}} = Pleroma.List.follow(list, other_user)
|
|
|
|
assert [other_user.follower_address] == following
|
|
|
|
end
|
|
|
|
|
|
|
|
test "removing an user from a list" do
|
|
|
|
user = insert(:user)
|
|
|
|
other_user = insert(:user)
|
|
|
|
{:ok, list} = Pleroma.List.create("title", user)
|
2018-12-11 04:31:52 -08:00
|
|
|
{:ok, %{following: _following}} = Pleroma.List.follow(list, other_user)
|
2018-04-29 06:02:46 -07:00
|
|
|
{:ok, %{following: following}} = Pleroma.List.unfollow(list, other_user)
|
|
|
|
assert [] == following
|
|
|
|
end
|
|
|
|
|
|
|
|
test "renaming a list" do
|
|
|
|
user = insert(:user)
|
|
|
|
{:ok, list} = Pleroma.List.create("title", user)
|
|
|
|
{:ok, %{title: title}} = Pleroma.List.rename(list, "new")
|
|
|
|
assert "new" == title
|
|
|
|
end
|
|
|
|
|
|
|
|
test "deleting a list" do
|
|
|
|
user = insert(:user)
|
|
|
|
{:ok, list} = Pleroma.List.create("title", user)
|
|
|
|
{:ok, list} = Pleroma.List.delete(list)
|
|
|
|
assert is_nil(Repo.get(Pleroma.List, list.id))
|
|
|
|
end
|
|
|
|
|
|
|
|
test "getting users in a list" do
|
|
|
|
user = insert(:user)
|
|
|
|
other_user = insert(:user)
|
|
|
|
third_user = insert(:user)
|
|
|
|
{:ok, list} = Pleroma.List.create("title", user)
|
|
|
|
{:ok, list} = Pleroma.List.follow(list, other_user)
|
|
|
|
{:ok, list} = Pleroma.List.follow(list, third_user)
|
|
|
|
{:ok, following} = Pleroma.List.get_following(list)
|
|
|
|
assert other_user in following
|
|
|
|
assert third_user in following
|
|
|
|
end
|
|
|
|
|
|
|
|
test "getting all lists by an user" do
|
|
|
|
user = insert(:user)
|
|
|
|
other_user = insert(:user)
|
|
|
|
{:ok, list_one} = Pleroma.List.create("title", user)
|
|
|
|
{:ok, list_two} = Pleroma.List.create("other title", user)
|
|
|
|
{:ok, list_three} = Pleroma.List.create("third title", other_user)
|
|
|
|
lists = Pleroma.List.for_user(user, %{})
|
|
|
|
assert list_one in lists
|
|
|
|
assert list_two in lists
|
|
|
|
refute list_three in lists
|
|
|
|
end
|
2018-05-30 06:33:37 -07:00
|
|
|
|
|
|
|
test "getting all lists the user is a member of" do
|
|
|
|
user = insert(:user)
|
|
|
|
other_user = insert(:user)
|
|
|
|
{:ok, list_one} = Pleroma.List.create("title", user)
|
|
|
|
{:ok, list_two} = Pleroma.List.create("other title", user)
|
|
|
|
{:ok, list_three} = Pleroma.List.create("third title", other_user)
|
|
|
|
{:ok, list_one} = Pleroma.List.follow(list_one, other_user)
|
|
|
|
{:ok, list_two} = Pleroma.List.follow(list_two, other_user)
|
|
|
|
{:ok, list_three} = Pleroma.List.follow(list_three, user)
|
|
|
|
|
|
|
|
lists = Pleroma.List.get_lists_from_activity(%Pleroma.Activity{actor: other_user.ap_id})
|
|
|
|
assert list_one in lists
|
|
|
|
assert list_two in lists
|
|
|
|
refute list_three in lists
|
|
|
|
end
|
2018-10-19 05:24:15 -07:00
|
|
|
|
2018-10-20 03:03:45 -07:00
|
|
|
test "getting own lists a given user belongs to" do
|
2018-10-19 05:24:15 -07:00
|
|
|
owner = insert(:user)
|
|
|
|
not_owner = insert(:user)
|
|
|
|
member_1 = insert(:user)
|
|
|
|
member_2 = insert(:user)
|
2018-10-20 03:03:45 -07:00
|
|
|
{:ok, owned_list} = Pleroma.List.create("owned", owner)
|
|
|
|
{:ok, not_owned_list} = Pleroma.List.create("not owned", not_owner)
|
|
|
|
{:ok, owned_list} = Pleroma.List.follow(owned_list, member_1)
|
|
|
|
{:ok, owned_list} = Pleroma.List.follow(owned_list, member_2)
|
|
|
|
{:ok, not_owned_list} = Pleroma.List.follow(not_owned_list, member_1)
|
|
|
|
{:ok, not_owned_list} = Pleroma.List.follow(not_owned_list, member_2)
|
2018-10-19 05:24:15 -07:00
|
|
|
|
|
|
|
lists_1 = Pleroma.List.get_lists_account_belongs(owner, member_1.id)
|
2018-10-20 03:03:45 -07:00
|
|
|
assert owned_list in lists_1
|
|
|
|
refute not_owned_list in lists_1
|
2018-10-19 05:24:15 -07:00
|
|
|
lists_2 = Pleroma.List.get_lists_account_belongs(owner, member_2.id)
|
2018-10-20 03:03:45 -07:00
|
|
|
assert owned_list in lists_2
|
|
|
|
refute not_owned_list in lists_2
|
2018-10-19 05:24:15 -07:00
|
|
|
end
|
2019-05-14 06:12:47 -07:00
|
|
|
|
|
|
|
test "get ap_id by user nickname and list id" do
|
|
|
|
nickname = "foo"
|
|
|
|
list_id = 42
|
|
|
|
|
|
|
|
expected = Pleroma.Web.Endpoint.url() <> "/users/#{nickname}/lists/#{list_id}"
|
|
|
|
|
|
|
|
assert Pleroma.List.ap_id(%Pleroma.User{nickname: nickname}, list_id) == expected
|
|
|
|
assert Pleroma.List.ap_id({nickname, list_id}) == expected
|
|
|
|
end
|
|
|
|
|
|
|
|
test "get by ap_id" do
|
|
|
|
user = insert(:user)
|
|
|
|
{:ok, list} = Pleroma.List.create("foo", user)
|
|
|
|
ap_id = Pleroma.List.ap_id(user, list.id)
|
|
|
|
|
|
|
|
assert Pleroma.List.get_by_ap_id(ap_id) == list
|
|
|
|
end
|
|
|
|
|
|
|
|
test "memberships" do
|
|
|
|
user = insert(:user)
|
|
|
|
member = insert(:user)
|
|
|
|
{:ok, list} = Pleroma.List.create("foo", user)
|
|
|
|
{:ok, list} = Pleroma.List.follow(list, member)
|
|
|
|
|
|
|
|
list_ap_id = Pleroma.List.ap_id(user, list.id)
|
|
|
|
|
|
|
|
assert Pleroma.List.memberships(member) == [list_ap_id]
|
|
|
|
end
|
2018-04-29 06:02:46 -07:00
|
|
|
end
|