aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEgor Kislitsyn <egor@kislitsyn.com>2019-08-26 18:59:57 +0700
committerEgor Kislitsyn <egor@kislitsyn.com>2019-08-26 18:59:57 +0700
commit3b1b631c2aedc8e359c296b11237fa4f6edd31e5 (patch)
tree15f71ab3a05676869abcd4692cdedeaa2b9ff56a
parent6dc24422dc403663f6385272f071e2223c24b2ce (diff)
downloadpleroma-3b1b631c2aedc8e359c296b11237fa4f6edd31e5.tar.gz
Add validation in Pleroma.List.create/2
-rw-r--r--lib/pleroma/list.ex22
-rw-r--r--test/list_test.exs7
2 files changed, 20 insertions, 9 deletions
diff --git a/lib/pleroma/list.ex b/lib/pleroma/list.ex
index 1d320206e..c572380c2 100644
--- a/lib/pleroma/list.ex
+++ b/lib/pleroma/list.ex
@@ -109,15 +109,19 @@ defmodule Pleroma.List do
end
def create(title, %User{} = creator) do
- list = %Pleroma.List{user_id: creator.id, title: title}
-
- Repo.transaction(fn ->
- list = Repo.insert!(list)
-
- list
- |> change(ap_id: "#{creator.ap_id}/lists/#{list.id}")
- |> Repo.update!()
- end)
+ changeset = title_changeset(%Pleroma.List{user_id: creator.id}, %{title: title})
+
+ if changeset.valid? do
+ Repo.transaction(fn ->
+ list = Repo.insert!(changeset)
+
+ list
+ |> change(ap_id: "#{creator.ap_id}/lists/#{list.id}")
+ |> Repo.update!()
+ end)
+ else
+ {:error, changeset}
+ end
end
def follow(%Pleroma.List{following: following} = list, %User{} = followed) do
diff --git a/test/list_test.exs b/test/list_test.exs
index f39033d02..8efba75ea 100644
--- a/test/list_test.exs
+++ b/test/list_test.exs
@@ -15,6 +15,13 @@ defmodule Pleroma.ListTest do
assert title == "title"
end
+ test "validates title" do
+ user = insert(:user)
+
+ assert {:error, changeset} = Pleroma.List.create("", user)
+ assert changeset.errors == [title: {"can't be blank", [validation: :required]}]
+ end
+
test "getting a list not belonging to the user" do
user = insert(:user)
other_user = insert(:user)