1
0
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:
Daniel Barber 2018-01-27 16:08:30 -05:00
parent e8de008466
commit dda4bf0c5a
Signed by: danbarber
GPG Key ID: 931D8112E0103DD8
2 changed files with 37 additions and 0 deletions

View File

@ -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

View 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