aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/mix/tasks/pleroma/user_test.exs6
-rw-r--r--test/pleroma/repo/migrations/fix_legacy_tags_test.exs28
-rw-r--r--test/pleroma/tag_test.exs94
-rw-r--r--test/pleroma/user_test.exs26
-rw-r--r--test/pleroma/web/activity_pub/mrf/tag_policy_test.exs20
-rw-r--r--test/pleroma/web/admin_api/controllers/admin_api_controller_test.exs92
-rw-r--r--test/pleroma/web/admin_api/controllers/tag_controller_test.exs (renamed from test/web/admin_api/controllers/tag_controller_test.exs)30
-rw-r--r--test/pleroma/web/admin_api/search_test.exs9
8 files changed, 151 insertions, 154 deletions
diff --git a/test/mix/tasks/pleroma/user_test.exs b/test/mix/tasks/pleroma/user_test.exs
index a2178bbd1..baf4ac29d 100644
--- a/test/mix/tasks/pleroma/user_test.exs
+++ b/test/mix/tasks/pleroma/user_test.exs
@@ -548,7 +548,7 @@ defmodule Mix.Tasks.Pleroma.UserTest do
:ok = Mix.Tasks.Pleroma.User.run(["tag", user.nickname, "pleroma"])
user = User.get_cached_by_nickname(user.nickname)
- assert "pleroma" in user.tags
+ assert "pleroma" in Enum.map(user.tags, & &1.name)
end
test "it prints an error message when user is not exist" do
@@ -561,8 +561,8 @@ defmodule Mix.Tasks.Pleroma.UserTest do
describe "untagging" do
test "it deletes tags from a user" do
- user = insert(:user, tags: ["pleroma"])
- assert "pleroma" in user.tags
+ user = insert(:user, tags: [build(:tag, name: "pleroma")])
+ assert "pleroma" in Enum.map(user.tags, & &1.name)
:ok = Mix.Tasks.Pleroma.User.run(["untag", user.nickname, "pleroma"])
diff --git a/test/pleroma/repo/migrations/fix_legacy_tags_test.exs b/test/pleroma/repo/migrations/fix_legacy_tags_test.exs
deleted file mode 100644
index 0a1d1d0bb..000000000
--- a/test/pleroma/repo/migrations/fix_legacy_tags_test.exs
+++ /dev/null
@@ -1,28 +0,0 @@
-# Pleroma: A lightweight social networking server
-# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
-# SPDX-License-Identifier: AGPL-3.0-only
-
-defmodule Pleroma.Repo.Migrations.FixLegacyTagsTest do
- alias Pleroma.User
- use Pleroma.DataCase, async: true
- import Pleroma.Factory
- import Pleroma.Tests.Helpers
-
- setup_all do: require_migration("20200802170532_fix_legacy_tags")
-
- test "change/0 converts legacy user tags into correct values", %{migration: migration} do
- user = insert(:user, tags: ["force_nsfw", "force_unlisted", "verified"])
- user2 = insert(:user)
-
- assert :ok == migration.change()
-
- fixed_user = User.get_by_id(user.id)
- fixed_user2 = User.get_by_id(user2.id)
-
- assert fixed_user.tags == ["mrf_tag:media-force-nsfw", "mrf_tag:force-unlisted", "verified"]
- assert fixed_user2.tags == []
-
- # user2 should not have been updated
- assert fixed_user2.updated_at == fixed_user2.inserted_at
- end
-end
diff --git a/test/pleroma/tag_test.exs b/test/pleroma/tag_test.exs
new file mode 100644
index 000000000..97b64db86
--- /dev/null
+++ b/test/pleroma/tag_test.exs
@@ -0,0 +1,94 @@
+# Pleroma: A lightweight social networking server
+# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
+# SPDX-License-Identifier: AGPL-3.0-only
+
+defmodule Pleroma.TagTest do
+ use Pleroma.DataCase
+
+ import Pleroma.Factory
+
+ alias Pleroma.Tag
+
+ describe "upsert/1" do
+ test "create new normalize tag" do
+ Tag.upsert(" verify \n")
+
+ assert [tag] = Pleroma.Repo.all(Tag)
+ assert tag.name == "verify"
+ end
+
+ test "create new tag" do
+ Tag.upsert("verify")
+
+ assert [tag] = Pleroma.Repo.all(Tag)
+ assert tag.name == "verify"
+ end
+
+ test "do nothing when tag exists" do
+ insert(:tag, name: "verify")
+ Tag.upsert("verify")
+
+ assert [tag] = Pleroma.Repo.all(Tag)
+ assert tag.name == "verify"
+ end
+ end
+
+ describe "upsert_tags/1" do
+ test "create new normalize tags" do
+ Tag.upsert_tags([" verify \n", "bot", "unconfirmed "])
+
+ assert tags = Pleroma.Repo.all(Tag)
+ assert Enum.sort(Enum.map(tags, & &1.name)) == ["bot", "unconfirmed", "verify"]
+ end
+
+ test "do nothing when tag exists" do
+ insert(:tag, name: "verify")
+
+ Tag.upsert_tags([" verify \n", "bot", "unconfirmed "])
+
+ assert tags = Pleroma.Repo.all(Tag)
+ assert Enum.sort(Enum.map(tags, & &1.name)) == ["bot", "unconfirmed", "verify"]
+ end
+ end
+
+ describe "get_tag_ids/1" do
+ test "returns tags by name" do
+ verify_tag = insert(:tag, name: "verify")
+ bot_tag = insert(:tag, name: "bot")
+ unconfirmed_tag = insert(:tag, name: "unconfirmed")
+
+ tag_ids = Tag.get_tag_ids(["bot", "verify"])
+ assert verify_tag.id in tag_ids
+ assert bot_tag.id in tag_ids
+ refute unconfirmed_tag.id in tag_ids
+ end
+ end
+
+ describe "list_tags/0" do
+ test "returns all users tags + mrf tags" do
+ insert(:tag, name: "verify")
+ insert(:tag, name: "bot")
+ insert(:tag, name: "unconfirmed")
+ insert(:tag, name: "mrf_tag:media-strip")
+
+ assert Enum.sort(Tag.list_tags()) == [
+ "bot",
+ "mrf_tag:disable-any-subscription",
+ "mrf_tag:disable-remote-subscription",
+ "mrf_tag:force-unlisted",
+ "mrf_tag:media-force-nsfw",
+ "mrf_tag:media-strip",
+ "mrf_tag:sandbox",
+ "unconfirmed",
+ "verify"
+ ]
+ end
+ end
+
+ describe "normalize_tags/1" do
+ test "returns normalize tags" do
+ assert ["verify", "bot"] == Tag.normalize_tags([" verify \n", "\n bot "])
+ assert ["verify"] == Tag.normalize_tags(" verify \n")
+ end
+ end
+end
diff --git a/test/pleroma/user_test.exs b/test/pleroma/user_test.exs
index 6f5bcab57..e0f66a74b 100644
--- a/test/pleroma/user_test.exs
+++ b/test/pleroma/user_test.exs
@@ -133,15 +133,19 @@ defmodule Pleroma.UserTest do
describe "when tags are nil" do
test "tagging a user" do
- user = insert(:user, %{tags: nil})
+ insert(:tag, name: "cool")
+ insert(:tag, name: "dude")
+ user = insert(:user, %{tags: []})
+
user = User.tag(user, ["cool", "dude"])
+ user_tags = Enum.map(user.tags, & &1.name)
- assert "cool" in user.tags
- assert "dude" in user.tags
+ assert "cool" in user_tags
+ assert "dude" in user_tags
end
test "untagging a user" do
- user = insert(:user, %{tags: nil})
+ user = insert(:user, %{tags: []})
user = User.untag(user, ["cool", "dude"])
assert user.tags == []
@@ -1606,6 +1610,8 @@ defmodule Pleroma.UserTest do
end
test "delete/1 purges a user when they wouldn't be fully deleted" do
+ _tag = insert(:tag, name: "verify")
+
user =
insert(:user, %{
bio: "eyy lmao",
@@ -1614,7 +1620,7 @@ defmodule Pleroma.UserTest do
keys: "RSA begin buplic key",
public_key: "--PRIVATE KEYE--",
avatar: %{"a" => "b"},
- tags: ["qqqqq"],
+ # tags: ["qqqqq"],
banner: %{"a" => "b"},
background: %{"a" => "b"},
note_count: 9,
@@ -1641,9 +1647,17 @@ defmodule Pleroma.UserTest do
also_known_as: ["https://lol.olo/users/loll"]
})
+ user = User.tag(user, "verify")
+ assert Enum.map(user.tags, & &1.name) == ["verify"]
+ assert Repo.aggregate(from(ut in "users_tags"), :count, :user_id) == 1
{:ok, job} = User.delete(user)
{:ok, _} = ObanHelpers.perform(job)
- user = User.get_by_id(user.id)
+
+ user =
+ User.get_by_id(user.id)
+ |> Repo.preload([:tags])
+
+ assert Repo.aggregate(from(ut in "users_tags"), :count, :user_id) == 0
assert %User{
bio: "",
diff --git a/test/pleroma/web/activity_pub/mrf/tag_policy_test.exs b/test/pleroma/web/activity_pub/mrf/tag_policy_test.exs
index faaadff79..7b1486365 100644
--- a/test/pleroma/web/activity_pub/mrf/tag_policy_test.exs
+++ b/test/pleroma/web/activity_pub/mrf/tag_policy_test.exs
@@ -11,7 +11,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.TagPolicyTest do
describe "mrf_tag:disable-any-subscription" do
test "rejects message" do
- actor = insert(:user, tags: ["mrf_tag:disable-any-subscription"])
+ actor = insert(:user, tags: [build(:tag, name: "mrf_tag:disable-any-subscription")])
message = %{"object" => actor.ap_id, "type" => "Follow", "actor" => actor.ap_id}
assert {:reject, _} = TagPolicy.filter(message)
end
@@ -19,15 +19,17 @@ defmodule Pleroma.Web.ActivityPub.MRF.TagPolicyTest do
describe "mrf_tag:disable-remote-subscription" do
test "rejects non-local follow requests" do
- actor = insert(:user, tags: ["mrf_tag:disable-remote-subscription"])
- follower = insert(:user, tags: ["mrf_tag:disable-remote-subscription"], local: false)
+ tag = insert(:tag, name: "mrf_tag:disable-remote-subscription")
+ actor = insert(:user, tags: [tag])
+ follower = insert(:user, tags: [tag], local: false)
message = %{"object" => actor.ap_id, "type" => "Follow", "actor" => follower.ap_id}
assert {:reject, _} = TagPolicy.filter(message)
end
test "allows non-local follow requests" do
- actor = insert(:user, tags: ["mrf_tag:disable-remote-subscription"])
- follower = insert(:user, tags: ["mrf_tag:disable-remote-subscription"], local: true)
+ tag = insert(:tag, name: "mrf_tag:disable-remote-subscription")
+ actor = insert(:user, tags: [tag])
+ follower = insert(:user, tags: [tag], local: true)
message = %{"object" => actor.ap_id, "type" => "Follow", "actor" => follower.ap_id}
assert {:ok, _message} = TagPolicy.filter(message)
end
@@ -35,7 +37,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.TagPolicyTest do
describe "mrf_tag:sandbox" do
test "removes from public timelines" do
- actor = insert(:user, tags: ["mrf_tag:sandbox"])
+ actor = insert(:user, tags: [build(:tag, name: "mrf_tag:sandbox")])
message = %{
"actor" => actor.ap_id,
@@ -59,7 +61,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.TagPolicyTest do
describe "mrf_tag:force-unlisted" do
test "removes from the federated timeline" do
- actor = insert(:user, tags: ["mrf_tag:force-unlisted"])
+ actor = insert(:user, tags: [build(:tag, name: "mrf_tag:force-unlisted")])
message = %{
"actor" => actor.ap_id,
@@ -83,7 +85,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.TagPolicyTest do
describe "mrf_tag:media-strip" do
test "removes attachments" do
- actor = insert(:user, tags: ["mrf_tag:media-strip"])
+ actor = insert(:user, tags: [build(:tag, name: "mrf_tag:media-strip")])
message = %{
"actor" => actor.ap_id,
@@ -103,7 +105,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.TagPolicyTest do
describe "mrf_tag:media-force-nsfw" do
test "Mark as sensitive on presence of attachments" do
- actor = insert(:user, tags: ["mrf_tag:media-force-nsfw"])
+ actor = insert(:user, tags: [build(:tag, name: "mrf_tag:media-force-nsfw")])
message = %{
"actor" => actor.ap_id,
diff --git a/test/pleroma/web/admin_api/controllers/admin_api_controller_test.exs b/test/pleroma/web/admin_api/controllers/admin_api_controller_test.exs
index 8cd9f939b..bf67218f8 100644
--- a/test/pleroma/web/admin_api/controllers/admin_api_controller_test.exs
+++ b/test/pleroma/web/admin_api/controllers/admin_api_controller_test.exs
@@ -90,98 +90,6 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do
end
end
- describe "PUT /api/pleroma/admin/users/tag" do
- setup %{conn: conn} do
- user1 = insert(:user, %{tags: ["x"]})
- user2 = insert(:user, %{tags: ["y"]})
- user3 = insert(:user, %{tags: ["unchanged"]})
-
- conn =
- conn
- |> put_req_header("accept", "application/json")
- |> put(
- "/api/pleroma/admin/users/tag?nicknames[]=#{user1.nickname}&nicknames[]=" <>
- "#{user2.nickname}&tags[]=foo&tags[]=bar"
- )
-
- %{conn: conn, user1: user1, user2: user2, user3: user3}
- end
-
- test "it appends specified tags to users with specified nicknames", %{
- conn: conn,
- admin: admin,
- user1: user1,
- user2: user2
- } do
- assert empty_json_response(conn)
- assert User.get_cached_by_id(user1.id).tags == ["x", "foo", "bar"]
- assert User.get_cached_by_id(user2.id).tags == ["y", "foo", "bar"]
-
- log_entry = Repo.one(ModerationLog)
-
- users =
- [user1.nickname, user2.nickname]
- |> Enum.map(&"@#{&1}")
- |> Enum.join(", ")
-
- tags = ["foo", "bar"] |> Enum.join(", ")
-
- assert ModerationLog.get_log_entry_message(log_entry) ==
- "@#{admin.nickname} added tags: #{tags} to users: #{users}"
- end
-
- test "it does not modify tags of not specified users", %{conn: conn, user3: user3} do
- assert empty_json_response(conn)
- assert User.get_cached_by_id(user3.id).tags == ["unchanged"]
- end
- end
-
- describe "DELETE /api/pleroma/admin/users/tag" do
- setup %{conn: conn} do
- user1 = insert(:user, %{tags: ["x"]})
- user2 = insert(:user, %{tags: ["y", "z"]})
- user3 = insert(:user, %{tags: ["unchanged"]})
-
- conn =
- conn
- |> put_req_header("accept", "application/json")
- |> delete(
- "/api/pleroma/admin/users/tag?nicknames[]=#{user1.nickname}&nicknames[]=" <>
- "#{user2.nickname}&tags[]=x&tags[]=z"
- )
-
- %{conn: conn, user1: user1, user2: user2, user3: user3}
- end
-
- test "it removes specified tags from users with specified nicknames", %{
- conn: conn,
- admin: admin,
- user1: user1,
- user2: user2
- } do
- assert empty_json_response(conn)
- assert User.get_cached_by_id(user1.id).tags == []
- assert User.get_cached_by_id(user2.id).tags == ["y"]
-
- log_entry = Repo.one(ModerationLog)
-
- users =
- [user1.nickname, user2.nickname]
- |> Enum.map(&"@#{&1}")
- |> Enum.join(", ")
-
- tags = ["x", "z"] |> Enum.join(", ")
-
- assert ModerationLog.get_log_entry_message(log_entry) ==
- "@#{admin.nickname} removed tags: #{tags} from users: #{users}"
- end
-
- test "it does not modify tags of not specified users", %{conn: conn, user3: user3} do
- assert empty_json_response(conn)
- assert User.get_cached_by_id(user3.id).tags == ["unchanged"]
- end
- end
-
describe "/api/pleroma/admin/users/:nickname/permission_group" do
test "GET is giving user_info", %{admin: admin, conn: conn} do
conn =
diff --git a/test/web/admin_api/controllers/tag_controller_test.exs b/test/pleroma/web/admin_api/controllers/tag_controller_test.exs
index 88eeafac0..1ead1ca76 100644
--- a/test/web/admin_api/controllers/tag_controller_test.exs
+++ b/test/pleroma/web/admin_api/controllers/tag_controller_test.exs
@@ -58,9 +58,9 @@ defmodule Pleroma.Web.AdminAPI.TagControllerTest do
describe "PUT /api/pleroma/admin/users/tag" do
setup %{conn: conn} do
- user1 = insert(:user, %{tags: ["x"]})
- user2 = insert(:user, %{tags: ["y"]})
- user3 = insert(:user, %{tags: ["unchanged"]})
+ user1 = insert(:user, %{tags: [build(:tag, name: "x")]})
+ user2 = insert(:user, %{tags: [build(:tag, name: "y")]})
+ user3 = insert(:user, %{tags: [build(:tag, name: "unchanged")]})
conn =
conn
@@ -80,8 +80,10 @@ defmodule Pleroma.Web.AdminAPI.TagControllerTest do
user2: user2
} do
assert empty_json_response(conn)
- assert User.get_cached_by_id(user1.id).tags == ["x", "foo", "bar"]
- assert User.get_cached_by_id(user2.id).tags == ["y", "foo", "bar"]
+ {:ok, tags} = Repo.get_assoc(User.get_cached_by_id(user1.id), :tags)
+ assert Enum.map(tags, & &1.name) == ["x", "foo", "bar"]
+ {:ok, tags} = Repo.get_assoc(User.get_cached_by_id(user2.id), :tags)
+ assert Enum.map(tags, & &1.name) == ["y", "foo", "bar"]
log_entry = Repo.one(ModerationLog)
@@ -98,15 +100,16 @@ defmodule Pleroma.Web.AdminAPI.TagControllerTest do
test "it does not modify tags of not specified users", %{conn: conn, user3: user3} do
assert empty_json_response(conn)
- assert User.get_cached_by_id(user3.id).tags == ["unchanged"]
+ {:ok, tags} = Repo.get_assoc(User.get_cached_by_id(user3.id), :tags)
+ assert Enum.map(tags, & &1.name) == ["unchanged"]
end
end
describe "DELETE /api/pleroma/admin/users/tag" do
setup %{conn: conn} do
- user1 = insert(:user, %{tags: ["x"]})
- user2 = insert(:user, %{tags: ["y", "z"]})
- user3 = insert(:user, %{tags: ["unchanged"]})
+ user1 = insert(:user, %{tags: [build(:tag, name: "x")]})
+ user2 = insert(:user, %{tags: [build(:tag, name: "y"), build(:tag, name: "z")]})
+ user3 = insert(:user, %{tags: [build(:tag, name: "unchanged")]})
conn =
conn
@@ -126,8 +129,10 @@ defmodule Pleroma.Web.AdminAPI.TagControllerTest do
user2: user2
} do
assert empty_json_response(conn)
- assert User.get_cached_by_id(user1.id).tags == []
- assert User.get_cached_by_id(user2.id).tags == ["y"]
+ {:ok, tags} = Repo.get_assoc(User.get_cached_by_id(user1.id), :tags)
+ assert tags == []
+ {:ok, tags} = Repo.get_assoc(User.get_cached_by_id(user2.id), :tags)
+ assert Enum.map(tags, & &1.name) == ["y"]
log_entry = Repo.one(ModerationLog)
@@ -144,7 +149,8 @@ defmodule Pleroma.Web.AdminAPI.TagControllerTest do
test "it does not modify tags of not specified users", %{conn: conn, user3: user3} do
assert empty_json_response(conn)
- assert User.get_cached_by_id(user3.id).tags == ["unchanged"]
+ {:ok, tags} = Repo.get_assoc(User.get_cached_by_id(user3.id), :tags)
+ assert Enum.map(tags, & &1.name) == ["unchanged"]
end
end
end
diff --git a/test/pleroma/web/admin_api/search_test.exs b/test/pleroma/web/admin_api/search_test.exs
index b8eeec65b..40e0007e8 100644
--- a/test/pleroma/web/admin_api/search_test.exs
+++ b/test/pleroma/web/admin_api/search_test.exs
@@ -130,17 +130,18 @@ defmodule Pleroma.Web.AdminAPI.SearchTest do
end
test "it returns users with tags" do
- user1 = insert(:user, tags: ["first"])
- user2 = insert(:user, tags: ["second"])
+ user1 = insert(:user, tags: [build(:tag, name: "first")])
+ user2 = insert(:user, tags: [build(:tag, name: "second")])
insert(:user)
insert(:user)
{:ok, _results, total} = Search.user()
{:ok, users, count} = Search.user(%{tags: ["first", "second"]})
+
assert total == 4
assert count == 2
- assert user1 in users
- assert user2 in users
+ assert user1.id in collect_ids(users)
+ assert user2.id in collect_ids(users)
end
test "it returns users by actor_types" do