diff --git a/server/test/auth/login_test.gleam b/server/test/auth/login_test.gleam index 3d0d0f7..52a67b1 100644 --- a/server/test/auth/login_test.gleam +++ b/server/test/auth/login_test.gleam @@ -1,21 +1,25 @@ import gleam/http import gleam/http/response import gleam/json +import gleam/list +import server/auth import server/router import server/seed -import server_test -import shared/contract/login as login_contract +import server_test as testing +import shared/contract/login as contract import shared/session import wisp import wisp/simulate +const url = "/api/login" + pub fn login_test() -> Nil { - use ctx <- server_test.with_context() - let url = login_contract.url + use ctx <- testing.with_context() + let url = contract.url let body = - login_contract.RequestBody(email: seed.email, password: seed.password) - |> login_contract.request_to_json + contract.RequestBody(email: seed.email, password: seed.password) + |> contract.request_to_json let req = simulate.browser_request(http.Post, url) @@ -24,10 +28,11 @@ pub fn login_test() -> Nil { let resp = router.handle_request(req, ctx) assert resp.status == 200 - assert response.get_cookies(resp) != [] + let cookies = response.get_cookies(resp) + let assert Ok(_) = list.key_find(cookies, auth.token) let body = simulate.read_body(resp) - let body_decoder = login_contract.response_decoder() + let body_decoder = contract.response_decoder() let assert Ok(session) = json.parse(body, body_decoder) let assert session.Authenticated(returned) = session @@ -38,13 +43,13 @@ pub fn login_test() -> Nil { } pub fn login_with_non_existent_user_test() { - use ctx <- server_test.with_context() - let url = "/api/login" + use ctx <- testing.with_context() let email = wisp.random_string(12) <> "@dummy.com" + let password = seed.password let body = - login_contract.RequestBody(email:, password: seed.password) - |> login_contract.request_to_json + contract.RequestBody(email:, password:) + |> contract.request_to_json let req = simulate.browser_request(http.Post, url) @@ -55,12 +60,11 @@ pub fn login_with_non_existent_user_test() { } pub fn login_wrong_password_test() { - use ctx <- server_test.with_context() - let url = "/api/login" + use ctx <- testing.with_context() let body = - login_contract.RequestBody(email: seed.email, password: "wibble") - |> login_contract.request_to_json + contract.RequestBody(email: seed.email, password: "wibble") + |> contract.request_to_json let req = simulate.browser_request(http.Post, url)