|
|
@ -2,13 +2,14 @@ package org.tbasket.test.pages
|
|
|
|
|
|
|
|
|
|
|
|
import io.getquill.jdbczio.Quill
|
|
|
|
import io.getquill.jdbczio.Quill
|
|
|
|
import io.getquill.{SnakeCase, SqliteZioJdbcContext}
|
|
|
|
import io.getquill.{SnakeCase, SqliteZioJdbcContext}
|
|
|
|
import org.tbasket.auth.Authentificator
|
|
|
|
import org.tbasket.auth.Authenticator
|
|
|
|
import org.tbasket.data.{Database, DatabaseContext}
|
|
|
|
import org.tbasket.data.{Database, DatabaseContext}
|
|
|
|
import org.tbasket.error.RegularException.InvalidRequest
|
|
|
|
import org.tbasket.error.RegularException.InvalidRequest
|
|
|
|
import org.tbasket.handler.HandlerUtils.parseAttribute
|
|
|
|
import org.tbasket.handler.HandlerUtils.parseAttribute
|
|
|
|
import org.tbasket.handler.LoginPageHandler
|
|
|
|
import org.tbasket.handler.LoginPageHandler
|
|
|
|
import org.tbasket.handler.LoginPageHandler.post
|
|
|
|
import org.tbasket.handler.LoginPageHandler.post
|
|
|
|
import org.tbasket.test.TestLayers
|
|
|
|
import org.tbasket.test.TestLayers
|
|
|
|
|
|
|
|
import org.tbasket.test.pages.LoginPageHandlerTests.test
|
|
|
|
import zio.*
|
|
|
|
import zio.*
|
|
|
|
import zio.http.netty.client.ConnectionPool
|
|
|
|
import zio.http.netty.client.ConnectionPool
|
|
|
|
import zio.http.*
|
|
|
|
import zio.http.*
|
|
|
@ -16,10 +17,11 @@ import zio.http.model.{HeaderNames, Headers}
|
|
|
|
import zio.http.model.Headers.Header
|
|
|
|
import zio.http.model.Headers.Header
|
|
|
|
import zio.json.*
|
|
|
|
import zio.json.*
|
|
|
|
import zio.json.ast.{Json, JsonCursor}
|
|
|
|
import zio.json.ast.{Json, JsonCursor}
|
|
|
|
import zio.test.{TestAspect, *}
|
|
|
|
import zio.test.*
|
|
|
|
import zio.test.Assertion.*
|
|
|
|
import zio.test.Assertion.*
|
|
|
|
|
|
|
|
|
|
|
|
object LoginPageHandlerTests extends ZIOSpecDefault {
|
|
|
|
object LoginPageHandlerTests extends ZIOSpecDefault {
|
|
|
|
|
|
|
|
|
|
|
|
import LoginPageHandler.post
|
|
|
|
import LoginPageHandler.post
|
|
|
|
import TestLayers.*
|
|
|
|
import TestLayers.*
|
|
|
|
|
|
|
|
|
|
|
@ -48,29 +50,38 @@ object LoginPageHandlerTests extends ZIOSpecDefault {
|
|
|
|
)
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
private def loginSpec = {
|
|
|
|
private def loginSpec = {
|
|
|
|
suite("login situation tests") (
|
|
|
|
suite("login situation tests")(
|
|
|
|
test("login with unknown account") {
|
|
|
|
test("login with unknown account") {
|
|
|
|
for
|
|
|
|
for
|
|
|
|
response <- post(Request.post(Body.fromString("""{"password":"123456","email":"maximebatista18@gmail.com"}"""), URL.empty))
|
|
|
|
response <- post(Request.post(Body.fromString("""{"password":"123456","email":"unknownaccount@gmail.com"}"""), URL.empty))
|
|
|
|
json <- getJsonBody(response)
|
|
|
|
json <- getJsonBody(response)
|
|
|
|
errorType <- parseAttribute(json, "error", JsonCursor.field("error").isString)
|
|
|
|
errorType <- parseAttribute(json, "error", JsonCursor.field("error").isString)
|
|
|
|
yield
|
|
|
|
yield
|
|
|
|
//assert that the response error is of type unauthorized and headers are Location: /register
|
|
|
|
//assert that the response error is of type unauthorized and headers are Location: /register
|
|
|
|
assert(errorType)(equalTo("unauthorized"))
|
|
|
|
assert(errorType)(equalTo("unauthorized"))
|
|
|
|
&& assert(response)(hasField("headers", _.headers, hasSameElements(Headers.location("/register"))))
|
|
|
|
&& assert(response)(hasField("headers", _.headers, hasSameElements(Headers.location("/register"))))
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
test("login with known account") {
|
|
|
|
|
|
|
|
for
|
|
|
|
|
|
|
|
response <- post(Request.post(Body.fromString("""{"password":"123456","email":"maximebatista18@gmail.com"}"""), URL.empty))
|
|
|
|
|
|
|
|
json <- getJsonBody(response)
|
|
|
|
|
|
|
|
//errorType <- parseAttribute(json, "error", JsonCursor.field("error").isString)
|
|
|
|
|
|
|
|
yield
|
|
|
|
|
|
|
|
assert(response)(hasField("headers", _.headers, exists(hasField("key", _.key, equalTo(HeaderNames.setCookie)))))
|
|
|
|
}
|
|
|
|
}
|
|
|
|
)
|
|
|
|
)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
override def spec = suite("/login page handler") (
|
|
|
|
override def spec = suite("/login page handler")(
|
|
|
|
requestsSpec,
|
|
|
|
requestsSpec,
|
|
|
|
loginSpec
|
|
|
|
loginSpec
|
|
|
|
).provide(
|
|
|
|
).provide(
|
|
|
|
db.datasourceLayer,
|
|
|
|
db.datasourceLayer,
|
|
|
|
db.contextLayer,
|
|
|
|
db.contextLayer,
|
|
|
|
auth,
|
|
|
|
auth,
|
|
|
|
ConnectionPool.fixed(1),
|
|
|
|
ConnectionPool.fixed(1),
|
|
|
|
Scope.default,
|
|
|
|
Scope.default,
|
|
|
|
ClientConfig.default,
|
|
|
|
ClientConfig.default,
|
|
|
|
Client.live)
|
|
|
|
Client.live)
|
|
|
|
}
|
|
|
|
}
|
|
|
|