40 lines
1.3 KiB
Elixir
40 lines
1.3 KiB
Elixir
|
defmodule HostasWeb.Auth.TokenControllerTest do
|
||
|
use HostasWeb.ConnCase
|
||
|
|
||
|
# For testing with Ecto
|
||
|
alias Hostas.Repo
|
||
|
|
||
|
alias Hostas.Denizen
|
||
|
|
||
|
@denizen_data %{handle: "testuser", name: "Test User", password: "password"}
|
||
|
|
||
|
defp create_denizen, do: Repo.insert!(Denizen.changeset(%Denizen{}, @denizen_data))
|
||
|
|
||
|
describe "token create" do
|
||
|
test "creates a token", %{conn: conn} do
|
||
|
create_denizen()
|
||
|
|
||
|
conn = post(conn, ~p"/hostapi/auth/token", %{handle: "testuser", password: "password"})
|
||
|
assert Map.has_key?(json_response(conn, 201), "token")
|
||
|
assert Map.has_key?(json_response(conn, 201), "expires")
|
||
|
end
|
||
|
|
||
|
test "fails due to password mismatch", %{conn: conn} do
|
||
|
create_denizen()
|
||
|
|
||
|
conn = post(conn, ~p"/hostapi/auth/token", %{handle: "testuser", password: "incorrect"})
|
||
|
assert json_response(conn, 401)["error"] == "Password mismatch"
|
||
|
end
|
||
|
|
||
|
test "fails due to non-existant denizen", %{conn: conn} do
|
||
|
conn = post(conn, ~p"/hostapi/auth/token", %{handle: "testuser", password: "password"})
|
||
|
assert json_response(conn, 404)["error"] == "No user with handle testuser"
|
||
|
end
|
||
|
|
||
|
test "fails due to missing fields", %{conn: conn} do
|
||
|
conn = post(conn, ~p"/hostapi/auth/token", %{password: "password"})
|
||
|
assert json_response(conn, 422)["error"] == "Missing required parameters"
|
||
|
end
|
||
|
end
|
||
|
end
|