|
|
|
@ -1,7 +1,6 @@
|
|
|
|
|
package org.tbasket.test.pages
|
|
|
|
|
|
|
|
|
|
import org.tbasket.endpoint.Endpoint.handle
|
|
|
|
|
import org.tbasket.handler.HandlerUtils.{parseAttribute, parseAttributeOpt}
|
|
|
|
|
import org.tbasket.test.TestUtils
|
|
|
|
|
import org.tbasket.test.TestUtils.*
|
|
|
|
|
import org.tbasket.test.pages.RegisterPageHandlerTests.test
|
|
|
|
@ -9,8 +8,8 @@ import zio.*
|
|
|
|
|
import zio.http.*
|
|
|
|
|
import zio.http.model.{HeaderNames, Headers, Status}
|
|
|
|
|
import zio.json.ast.JsonCursor
|
|
|
|
|
import zio.test.*
|
|
|
|
|
import zio.test.Assertion.*
|
|
|
|
|
import zio.test.{assert, *}
|
|
|
|
|
|
|
|
|
|
object RegisterPageHandlerTests extends TBasketPageSpec("/register") {
|
|
|
|
|
|
|
|
|
@ -26,7 +25,7 @@ object RegisterPageHandlerTests extends TBasketPageSpec("/register") {
|
|
|
|
|
for
|
|
|
|
|
response <- handle(Request.post(body, url))
|
|
|
|
|
json <- getJsonBody(response)
|
|
|
|
|
errorType <- parseAttribute(json, "error", JsonCursor.field("error").isString)
|
|
|
|
|
errorType <- parseAttribute(json, JsonCursor.field("error").isString)
|
|
|
|
|
yield
|
|
|
|
|
assert(response)(hasField("status", _.status, equalTo(Status.BadRequest)))
|
|
|
|
|
&& assertTrue(errorType.startsWith("invalid"))
|
|
|
|
@ -48,13 +47,49 @@ object RegisterPageHandlerTests extends TBasketPageSpec("/register") {
|
|
|
|
|
(for
|
|
|
|
|
resp <- handle(Request.post(makeFormBody("name" -> "tuaillon", "forename" -> "leo", "email" -> "leo.tuaillon@etu.uca.fr", "password" -> "bouhours"), url))
|
|
|
|
|
json <- getJsonBody(resp)
|
|
|
|
|
errorType <- parseAttributeOpt(json, "error", JsonCursor.field("error").isString)
|
|
|
|
|
errorType <- parseAttributeOpt(json, JsonCursor.field("error").isString)
|
|
|
|
|
|
|
|
|
|
yield
|
|
|
|
|
assert(resp)(hasField("status", _.status, equalTo(Status.NotAcceptable)))
|
|
|
|
|
&& assert(errorType)(isSome(equalTo("already registered")))
|
|
|
|
|
&& assert(resp)(hasField("headers", _.headers, contains(Headers.location("/login")))))
|
|
|
|
|
},
|
|
|
|
|
test("register bad email") {
|
|
|
|
|
for
|
|
|
|
|
resp <- handle(Request.post(makeFormBody("name" -> "tuaillon", "forename" -> "leo", "email" -> "leo.tuaillonbadmail", "password" -> "bouhours"), url))
|
|
|
|
|
json <- getJsonBody(resp)
|
|
|
|
|
errorType <- parseAttributeOpt(json, JsonCursor.field("error").isString)
|
|
|
|
|
yield
|
|
|
|
|
assert(resp)(hasField("status", _.status, equalTo(Status.ExpectationFailed)))
|
|
|
|
|
&& assert(errorType)(isSome(equalTo("invalid email")))
|
|
|
|
|
},
|
|
|
|
|
test("register bad password") {
|
|
|
|
|
for
|
|
|
|
|
resp <- handle(Request.post(makeFormBody("name" -> "tuaillon", "forename" -> "leo", "email" -> "leo.tuaillon@etu.uca.fr", "password" -> "1234"), url))
|
|
|
|
|
json <- getJsonBody(resp)
|
|
|
|
|
errorType <- parseAttributeOpt(json, JsonCursor.field("error").isString)
|
|
|
|
|
yield
|
|
|
|
|
assert(resp)(hasField("status", _.status, equalTo(Status.ExpectationFailed)))
|
|
|
|
|
&& assert(errorType)(isSome(equalTo("invalid password")))
|
|
|
|
|
},
|
|
|
|
|
test("register bad name") {
|
|
|
|
|
for
|
|
|
|
|
resp <- handle(Request.post(makeFormBody("name" -> "", "forename" -> "leo", "email" -> "leo.tuaillon@etu.uca.fr", "password" -> "bouhours"), url))
|
|
|
|
|
json <- getJsonBody(resp)
|
|
|
|
|
errorType <- parseAttributeOpt(json, JsonCursor.field("error").isString)
|
|
|
|
|
yield
|
|
|
|
|
assert(resp)(hasField("status", _.status, equalTo(Status.ExpectationFailed)))
|
|
|
|
|
&& assert(errorType)(isSome(equalTo("invalid name")))
|
|
|
|
|
},
|
|
|
|
|
test("register bad forename") {
|
|
|
|
|
for
|
|
|
|
|
resp <- handle(Request.post(makeFormBody("name" -> "tuaillon", "forename" -> "", "email" -> "leo.tuaillon@etu.uca.fr", "password" -> "bouhours"), url))
|
|
|
|
|
json <- getJsonBody(resp)
|
|
|
|
|
errorType <- parseAttributeOpt(json, JsonCursor.field("error").isString)
|
|
|
|
|
yield
|
|
|
|
|
assert(resp)(hasField("status", _.status, equalTo(Status.ExpectationFailed)))
|
|
|
|
|
&& assert(errorType)(isSome(equalTo("invalid forename")))
|
|
|
|
|
}
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
override def tspec = suite("/register page handler")(
|
|
|
|
|