Something went wrong. Try again.
annot.at is a service for syncing static websites, such as blogs, to atproto and standard.site annot.at
Something went wrong. Try again.
1.6 kB · 57 lines
Elixir
at main
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758defmodule AnnotAtWeb.AuthControllerTest do use AnnotAtWeb.ConnCase, async: true use Mimic
alias AnnotAt.Accounts alias AnnotAt.Login
@did "did:plc:ewvi7nxzyoun6zhxrhs64oiz"
test "GET /oauth-client-metadata.json serves the client metadata", %{conn: conn} do conn = get(conn, ~p"/oauth-client-metadata.json") metadata = json_response(conn, 200)
assert ["http://localhost:4002/auth/callback"] == metadata["redirect_uris"] assert metadata["scope"] =~ "atproto" assert true == metadata["dpop_bound_access_tokens"] end
test "GET /auth/callback logs in and redirects dashboard", %{conn: conn} do user = create_user() expect(Login, :complete_login, fn _ -> {:ok, user} end)
conn = get(conn, "/auth/callback?code=c&state=s&iss=i") assert ~p"/dashboard" == redirected_to(conn) assert user.id == get_session(conn, :user_id) end
test "GET /auth/callback redirects to login on failure", %{conn: conn} do expect(Login, :complete_login, fn _ -> {:error, :invalid_state} end)
conn = get(conn, "/auth/callback?state=bad") assert ~p"/login" == redirected_to(conn) end
test "DELETE /logout clears the session", %{conn: conn} do user = create_user() stub(Login, :logout, fn _ -> :ok end)
conn = conn |> init_test_session(%{user_id: user.id}) |> delete(~p"/logout")
assert ~p"/" == redirected_to(conn) refute get_session(conn, :user_id) end
defp create_user do {:ok, user} = Accounts.upsert_user(%{ did: @did, handle: "johanna.cove.town" })
user endend