mirror of
https://github.com/danbee/chess
synced 2025-03-04 08:39:06 +00:00
Validate uniqueness of username
This commit is contained in:
parent
e8de008466
commit
dda4bf0c5a
@ -4,6 +4,7 @@ defmodule Chess.Auth.User do
|
|||||||
use Ecto.Schema
|
use Ecto.Schema
|
||||||
import Ecto.Changeset
|
import Ecto.Changeset
|
||||||
alias Comeonin.Argon2
|
alias Comeonin.Argon2
|
||||||
|
alias Chess.Repo
|
||||||
|
|
||||||
schema "users" do
|
schema "users" do
|
||||||
field :password, :string, virtual: true
|
field :password, :string, virtual: true
|
||||||
@ -18,6 +19,7 @@ defmodule Chess.Auth.User do
|
|||||||
struct
|
struct
|
||||||
|> cast(params, [:username, :password])
|
|> cast(params, [:username, :password])
|
||||||
|> validate_required([:username, :password])
|
|> validate_required([:username, :password])
|
||||||
|
|> unsafe_validate_unique(:username, Repo)
|
||||||
|> hash_password()
|
|> hash_password()
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
35
test/chess/auth/user_test.exs
Normal file
35
test/chess/auth/user_test.exs
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
defmodule Chess.UserTest do
|
||||||
|
use Chess.DataCase
|
||||||
|
|
||||||
|
describe "user" do
|
||||||
|
alias Chess.Auth.User
|
||||||
|
|
||||||
|
@valid_attrs %{username: "zelda", password: "password"}
|
||||||
|
@invalid_attrs %{}
|
||||||
|
|
||||||
|
test "changeset with valid attributes" do
|
||||||
|
changeset = User.changeset(%User{}, @valid_attrs)
|
||||||
|
assert changeset.valid?
|
||||||
|
end
|
||||||
|
|
||||||
|
test "changeset with invalid attributes" do
|
||||||
|
changeset = User.changeset(%User{}, @invalid_attrs)
|
||||||
|
refute changeset.valid?
|
||||||
|
end
|
||||||
|
|
||||||
|
test "username must be unique" do
|
||||||
|
create_user("zelda")
|
||||||
|
|
||||||
|
changeset = User.changeset(%User{}, @valid_attrs)
|
||||||
|
refute changeset.valid?
|
||||||
|
end
|
||||||
|
|
||||||
|
defp create_user(username) do
|
||||||
|
changeset = User.changeset(
|
||||||
|
%User{},
|
||||||
|
%{username: username, password: "password"}
|
||||||
|
)
|
||||||
|
Repo.insert!(changeset)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
Loading…
Reference in New Issue
Block a user