logo

pleroma

My custom branche(s) on git.pleroma.social/pleroma/pleroma
commit: 118c572006dd96e6718035e5859aa339aa254476
parent: 373753e595de96a0492edfc6cc180c3e47696a55
Author: Roger Braun <roger@rogerbraun.net>
Date:   Wed, 10 May 2017 10:16:20 +0200

Use changeset for remote user creation.

Diffstat:

Mlib/pleroma/user.ex7++++---
Mlib/pleroma/web/ostatus/ostatus.ex6++----
Mtest/user_test.exs7+++++--
3 files changed, 11 insertions(+), 9 deletions(-)

diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex @@ -63,13 +63,14 @@ defmodule Pleroma.User do @email_regex ~r/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/ def remote_user_creation(params) do - changeset = %User{} - |> cast(params, [:bio, :name, :ap_id, :nickname, :info]) - |> validate_required([:bio, :name, :ap_id, :nickname]) + %User{} + |> cast(params, [:bio, :name, :ap_id, :nickname, :info, :avatar]) + |> validate_required([:name, :ap_id, :nickname]) |> unique_constraint(:nickname) |> validate_format(:nickname, @email_regex) |> validate_length(:bio, max: 1000) |> validate_length(:name, max: 100) + |> put_change(:local, false) end def register_changeset(struct, params \\ %{}) do diff --git a/lib/pleroma/web/ostatus/ostatus.ex b/lib/pleroma/web/ostatus/ostatus.ex @@ -211,16 +211,14 @@ defmodule Pleroma.Web.OStatus do def make_user(uri) do with {:ok, info} <- gather_user_info(uri) do data = %{ - local: false, name: info["name"], nickname: info["nickname"] <> "@" <> info["host"], ap_id: info["uri"], info: info, avatar: info["avatar"] } - # TODO: Make remote user changeset - # SHould enforce fqn nickname - Repo.insert(Ecto.Changeset.change(%User{}, data)) + cs = User.remote_user_creation(data) + Repo.insert(cs) end end diff --git a/test/user_test.exs b/test/user_test.exs @@ -146,7 +146,8 @@ defmodule Pleroma.UserTest do name: "Someone", nickname: "a@b.de", ap_id: "http...", - info: %{ some: "info" } + info: %{some: "info"}, + avatar: %{some: "avatar"} } test "it confirms validity" do @@ -156,11 +157,13 @@ defmodule Pleroma.UserTest do test "it enforces the fqn format for nicknames" do cs = User.remote_user_creation(%{@valid_remote | nickname: "bla"}) + assert cs.changes.local == false + assert cs.changes.avatar refute cs.valid? end test "it has required fields" do - [:bio, :name, :nickname, :ap_id] + [:name, :nickname, :ap_id] |> Enum.each(fn (field) -> cs = User.remote_user_creation(Map.delete(@valid_remote, field)) refute cs.valid?