chessh/test/auth/pubkey_test.exs

35 lines
1.0 KiB
Elixir
Raw Normal View History

2022-12-19 22:45:01 -05:00
defmodule Chessh.Auth.PublicKeyAuthenticatorTest do
use ExUnit.Case
2022-12-28 01:50:22 -05:00
alias Chessh.{Key, Repo, Player}
2022-12-19 22:45:01 -05:00
2023-01-31 16:01:35 -05:00
@valid_user %{username: "logan", password: "password", discord_id: "2"}
2022-12-19 22:45:01 -05:00
@valid_key %{
name: "The Gamer Machine",
key: "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJ/2LOJGGEd/dhFgRxJ5MMv0jJw4s4pA8qmMbZyulN44"
}
2022-12-28 01:50:22 -05:00
setup_all do
2022-12-29 19:49:42 -05:00
Ecto.Adapters.SQL.Sandbox.checkout(Repo)
Ecto.Adapters.SQL.Sandbox.mode(Repo, {:shared, self()})
2022-12-19 22:45:01 -05:00
{: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