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
|
||||
import Ecto.Changeset
|
||||
alias Comeonin.Argon2
|
||||
alias Chess.Repo
|
||||
|
||||
schema "users" do
|
||||
field :password, :string, virtual: true
|
||||
@ -18,6 +19,7 @@ defmodule Chess.Auth.User do
|
||||
struct
|
||||
|> cast(params, [:username, :password])
|
||||
|> validate_required([:username, :password])
|
||||
|> unsafe_validate_unique(:username, Repo)
|
||||
|> hash_password()
|
||||
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