diff --git a/tests/src/org/tbasket/test/pages/LoginPageHandlerTests.scala b/tests/src/org/tbasket/test/pages/LoginPageHandlerTests.scala index 792aff1..5ba4df1 100644 --- a/tests/src/org/tbasket/test/pages/LoginPageHandlerTests.scala +++ b/tests/src/org/tbasket/test/pages/LoginPageHandlerTests.scala @@ -13,7 +13,7 @@ import org.tbasket.test.pages.LoginPageHandlerTests.test import zio.* import zio.http.netty.client.ConnectionPool import zio.http.* -import zio.http.model.{HeaderNames, Headers} +import zio.http.model.{HeaderNames, Headers, Status} import zio.http.model.Headers.{Header, empty} import zio.json.* import zio.json.ast.{Json, JsonCursor} @@ -44,7 +44,9 @@ object LoginPageHandlerTests extends ZIOSpecDefault { response <- post(Request.post(body, URL.empty)) json <- getJsonBody(response) errorType <- parseAttribute(json, "error", JsonCursor.field("error").isString) - yield assertTrue(errorType == "invalid request") + yield + assert(response)(hasField("status", _.status, equalTo(Status.Unauthorized))) + && assertTrue(errorType == "invalid request") } )) ) @@ -56,9 +58,12 @@ object LoginPageHandlerTests extends ZIOSpecDefault { response <- post(Request.post(Body.fromString("""{"password":"123456","email":"unknownaccount@gmail.com"}"""), URL.empty)) json <- getJsonBody(response) errorType <- parseAttribute(json, "error", JsonCursor.field("error").isString) + errorMsg <- parseAttribute(json, "msg", JsonCursor.field("msg").isString) yield //assert that the response error is of type unauthorized and headers are Location: /register - assert(errorType)(equalTo("unauthorized")) + assert(response)(hasField("status", _.status, equalTo(Status.Unauthorized))) + && assert(errorType)(equalTo("unauthorized")) + && assert(errorMsg)(equalTo("unknown user email")) && assert(response)(hasField("headers", _.headers, hasSameElements(Headers.location("/register")))) }, @@ -66,8 +71,21 @@ object LoginPageHandlerTests extends ZIOSpecDefault { for response <- post(Request.post(Body.fromString("""{"password":"123456","email":"maximebatista18@gmail.com"}"""), URL.empty)) yield - assert(response)(hasField("body", _.body, equalTo(Body.empty))) //TODO assert that the cookie name is JWT - assert(response)(hasField("headers", _.headers, exists(hasField("key", _.key, equalTo(HeaderNames.setCookie))))) + assert(response)(hasField("status", _.status, equalTo(Status.Found))) + && assert(response)(hasField("body", _.body, equalTo(Body.empty))) //TODO assert that the cookie name is JWT + && assert(response)(hasField("headers", _.headers, exists(hasField("key", _.key, equalTo(HeaderNames.setCookie))))) + }, + + test("login with known account wrong password") { + for + response <- post(Request.post(Body.fromString("""{"password":"this is a wrong password","email":"maximebatista18@gmail.com"}"""), URL.empty)) + json <- getJsonBody(response) + errorType <- parseAttribute(json, "error", JsonCursor.field("error").isString) + errorMsg <- parseAttribute(json, "msg", JsonCursor.field("msg").isString) + yield + assert(errorType)(equalTo("unauthorized")) + && assert(errorMsg)(equalTo("invalid password")) + && assert(response)(hasField("headers", _.headers, hasSameElements(Headers.location("/register")))) } ) }