1
0
mirror of https://github.com/danbee/chess synced 2025-03-04 08:39:06 +00:00
chess/test/chess/auth_test.exs
2018-02-02 10:31:04 -05:00

77 lines
2.4 KiB
Elixir

defmodule Chess.AuthTest do
use Chess.DataCase
alias Chess.Auth
describe "users" do
alias Chess.Auth.User
@valid_attrs %{password: "some password", username: "some username"}
@update_attrs %{password: "some updated password", username: "some updated username"}
@invalid_attrs %{password: nil, username: nil}
def user_fixture(attrs \\ %{}) do
{:ok, user} =
attrs
|> Enum.into(@valid_attrs)
|> Auth.create_user()
user
end
test "list_users/0 returns all users" do
user = user_fixture()
assert Auth.list_users() == [user]
end
test "get_user!/1 returns the user with given id" do
user = user_fixture()
assert Auth.get_user!(user.id) == user
end
test "create_user/1 with valid data creates a user" do
assert {:ok, %User{} = user} = Auth.create_user(@valid_attrs)
assert user.username == "some username"
end
test "create_user/1 with invalid data returns error changeset" do
assert {:error, %Ecto.Changeset{}} = Auth.create_user(@invalid_attrs)
end
test "update_user/2 with valid data updates the user" do
user = user_fixture()
assert {:ok, user} = Auth.update_user(user, @update_attrs)
assert %User{} = user
assert user.username == "some updated username"
end
test "update_user/2 with invalid data returns error changeset" do
user = user_fixture()
assert {:error, %Ecto.Changeset{}} = Auth.update_user(user, @invalid_attrs)
assert user == Auth.get_user!(user.id)
end
test "delete_user/1 deletes the user" do
user = user_fixture()
assert {:ok, %User{}} = Auth.delete_user(user)
assert_raise Ecto.NoResultsError, fn -> Auth.get_user!(user.id) end
end
test "change_user/1 returns a user changeset" do
user = user_fixture()
assert %Ecto.Changeset{} = Auth.change_user(user)
end
test "authenticate_user/1 returns false on incorrect password " do
user_fixture(username: "link", password: "eyeofsheikah")
assert {:error, message} = Auth.authenticate_user("link", "shadowtemple")
assert message == "invalid password"
end
test "authenticate_user/1 returns true on correct password " do
user = user_fixture(username: "link", password: "eyeofsheikah")
assert {:ok, ^user} = Auth.authenticate_user("link", "eyeofsheikah")
end
end
end