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
35 lines
1.0 KiB
Elixir
35 lines
1.0 KiB
Elixir
defmodule Chessh.Auth.PublicKeyAuthenticatorTest do
|
|
use ExUnit.Case
|
|
alias Chessh.{Key, Repo, Player}
|
|
|
|
@valid_user %{username: "logan", password: "password", github_id: 2}
|
|
@valid_key %{
|
|
name: "The Gamer Machine",
|
|
key: "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJ/2LOJGGEd/dhFgRxJ5MMv0jJw4s4pA8qmMbZyulN44"
|
|
}
|
|
|
|
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, _key} =
|
|
Repo.insert(
|
|
Key.changeset(%Key{}, @valid_key)
|
|
|> Ecto.Changeset.put_assoc(:player, player)
|
|
)
|
|
|
|
:ok
|
|
end
|
|
|
|
test "User can sign in with their ssh key from raw string" do
|
|
assert Chessh.Auth.KeyAuthenticator.authenticate(@valid_user.username, @valid_key.key)
|
|
end
|
|
|
|
test "User can sign in with erlang decoded ssh key" do
|
|
[key] = :ssh_file.decode(@valid_key.key, :openssh_key)
|
|
assert Chessh.Auth.KeyAuthenticator.authenticate(@valid_user.username, key)
|
|
end
|
|
end
|