4666d7871a
* Github Oauth * A simple frontend * Add middleware proxy on dev * Forward proxy and rewrite path, add oauth to frontend, increase jwt expiry time to 12 hours * Some simple style changes * Add keys as user * Checkpoint - auth is broken * Fix auth and use player model, unrelated to this pr: flip board if dark * Close player session when password or key deleted or put * Add build script - this branch is quickly becoming cringe * Docker v2 - add migration and scripts, fix local storage and index that caused build issues * Ignore keys, proxy api correctly nginx * Finally nginx is resolved jesus christ * Remove max screen dimension limits cuz cringe * Cursor highlight * Add password form, some minor frontend changes as well * Remove cringe on home page * Move to 127.0.0.1 loopback in env * Add github id in player structs for tests
37 lines
983 B
Elixir
37 lines
983 B
Elixir
defmodule Chessh.Auth.PasswordAuthenticatorTest do
|
|
use ExUnit.Case
|
|
alias Chessh.{Player, Repo}
|
|
|
|
@valid_user %{username: "logan", password: "password", github_id: 1}
|
|
|
|
setup_all do
|
|
Ecto.Adapters.SQL.Sandbox.checkout(Repo)
|
|
Ecto.Adapters.SQL.Sandbox.mode(Repo, {:shared, self()})
|
|
|
|
{:ok, _player} = Repo.insert(Player.registration_changeset(%Player{}, @valid_user))
|
|
|
|
:ok
|
|
end
|
|
|
|
test "Password can authenticate a hashed password" do
|
|
assert Chessh.Auth.PasswordAuthenticator.authenticate(
|
|
@valid_user.username,
|
|
@valid_user.password
|
|
)
|
|
|
|
refute Chessh.Auth.PasswordAuthenticator.authenticate(
|
|
@valid_user.username,
|
|
"a_bad_password"
|
|
)
|
|
end
|
|
|
|
test "Password can authenticate a user instance" do
|
|
player = Repo.get_by(Player, username: "logan")
|
|
|
|
assert Chessh.Auth.PasswordAuthenticator.authenticate(
|
|
player,
|
|
@valid_user.password
|
|
)
|
|
end
|
|
end
|