Valider les resource entrente #91
@@ -1,5 +1,7 @@
|
|||||||
package integration
|
package integration
|
||||||
|
|
||||||
|
import fr.dcproject.common.utils.toUUID
|
||||||
|
import integration.steps.`when`.Validate
|
||||||
import integration.steps.`when`.`When I send a GET request`
|
import integration.steps.`when`.`When I send a GET request`
|
||||||
import integration.steps.`when`.`When I send a POST request`
|
import integration.steps.`when`.`When I send a POST request`
|
||||||
import integration.steps.`when`.`with body`
|
import integration.steps.`when`.`with body`
|
||||||
@@ -18,6 +20,7 @@ import integration.steps.then.`And the response should not contain`
|
|||||||
import integration.steps.then.`Then the response should be`
|
import integration.steps.then.`Then the response should be`
|
||||||
import integration.steps.then.`whish contains`
|
import integration.steps.then.`whish contains`
|
||||||
import integration.steps.then.and
|
import integration.steps.then.and
|
||||||
|
import io.ktor.http.HttpStatusCode.Companion.BadRequest
|
||||||
import io.ktor.http.HttpStatusCode.Companion.Forbidden
|
import io.ktor.http.HttpStatusCode.Companion.Forbidden
|
||||||
import io.ktor.http.HttpStatusCode.Companion.OK
|
import io.ktor.http.HttpStatusCode.Companion.OK
|
||||||
import org.junit.jupiter.api.Tag
|
import org.junit.jupiter.api.Tag
|
||||||
@@ -32,17 +35,24 @@ class `Article routes` : BaseTest() {
|
|||||||
fun `I can get article list`() {
|
fun `I can get article list`() {
|
||||||
withIntegrationApplication {
|
withIntegrationApplication {
|
||||||
`Given I have articles`(3)
|
`Given I have articles`(3)
|
||||||
`When I send a GET request`("/articles") `Then the response should be` OK and {
|
`Given I have article`(createdBy = "ddb17f17-e8ab-4ada-bdf7-bfd6b0f1b5ed".toUUID())
|
||||||
|
`When I send a GET request`("/articles?page=1&limit=10&sort=title&createdBy=ddb17f17-e8ab-4ada-bdf7-bfd6b0f1b5ed") `Then the response should be` OK and {
|
||||||
`And the response should not be null`()
|
`And the response should not be null`()
|
||||||
`And the response should contain pattern`("$.result[0].createdBy.name.firstName", "firstName.+")
|
`And the response should contain pattern`("$.result[0].createdBy.name.firstName", "firstName.+")
|
||||||
`And the response should contain pattern`("$.result[1].createdBy.name.firstName", "firstName.+")
|
`And the response should not contain`("$.result[1]")
|
||||||
`And the response should contain pattern`("$.result[2].createdBy.name.firstName", "firstName.+")
|
`And the response should contain list`("$.result", 1)
|
||||||
`And the response should not contain`("$.result[3]")
|
|
||||||
`And the response should contain list`("$.result", 3)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `I cannot get article list`() {
|
||||||
|
withIntegrationApplication {
|
||||||
|
`Given I have articles`(3)
|
||||||
|
`When I send a GET request`("/articles?page=1&limit=10&sort=title&createdBy=hello", Validate.ALL - Validate.REQUEST_PARAM) `Then the response should be` BadRequest
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `I can get articles filtered by workgroup`() {
|
fun `I can get articles filtered by workgroup`() {
|
||||||
withIntegrationApplication {
|
withIntegrationApplication {
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import fr.dcproject.component.article.database.ArticleForUpdate
|
|||||||
import fr.dcproject.component.article.database.ArticleForView
|
import fr.dcproject.component.article.database.ArticleForView
|
||||||
import fr.dcproject.component.article.database.ArticleRepository
|
import fr.dcproject.component.article.database.ArticleRepository
|
||||||
import fr.dcproject.component.citizen.database.CitizenI.Name
|
import fr.dcproject.component.citizen.database.CitizenI.Name
|
||||||
|
import fr.dcproject.component.citizen.database.CitizenRef
|
||||||
import fr.dcproject.component.workgroup.database.WorkgroupRef
|
import fr.dcproject.component.workgroup.database.WorkgroupRef
|
||||||
import io.ktor.server.testing.TestApplicationEngine
|
import io.ktor.server.testing.TestApplicationEngine
|
||||||
import org.koin.core.context.GlobalContext
|
import org.koin.core.context.GlobalContext
|
||||||
@@ -16,7 +17,15 @@ fun TestApplicationEngine.`Given I have article`(
|
|||||||
workgroup: WorkgroupRef? = null,
|
workgroup: WorkgroupRef? = null,
|
||||||
createdBy: Name? = null
|
createdBy: Name? = null
|
||||||
) {
|
) {
|
||||||
createArticle(id?.toUUID(), workgroup, createdBy)
|
createArticle(id?.toUUID(), workgroup, createCitizen(name = createdBy))
|
||||||
|
}
|
||||||
|
|
||||||
|
fun TestApplicationEngine.`Given I have article`(
|
||||||
|
id: String? = null,
|
||||||
|
workgroup: WorkgroupRef? = null,
|
||||||
|
createdBy: UUID
|
||||||
|
) {
|
||||||
|
createArticle(id?.toUUID(), workgroup, createCitizen(id = createdBy))
|
||||||
}
|
}
|
||||||
|
|
||||||
fun TestApplicationEngine.`Given I have articles`(
|
fun TestApplicationEngine.`Given I have articles`(
|
||||||
@@ -35,18 +44,16 @@ fun TestApplicationEngine.`Given I have article created by workgroup`(
|
|||||||
fun createArticle(
|
fun createArticle(
|
||||||
id: UUID? = null,
|
id: UUID? = null,
|
||||||
workgroup: WorkgroupRef? = null,
|
workgroup: WorkgroupRef? = null,
|
||||||
createdBy: Name? = null
|
createdBy: CitizenRef = createCitizen()
|
||||||
): ArticleForView {
|
): ArticleForView {
|
||||||
val articleRepository: ArticleRepository by lazy { GlobalContext.get().koin.get() }
|
val articleRepository: ArticleRepository by lazy { GlobalContext.get().koin.get() }
|
||||||
|
|
||||||
val citizen = createCitizen(createdBy)
|
|
||||||
|
|
||||||
val article = ArticleForUpdate(
|
val article = ArticleForUpdate(
|
||||||
id = id ?: UUID.randomUUID(),
|
id = id ?: UUID.randomUUID(),
|
||||||
title = LoremIpsum().getTitle(3),
|
title = LoremIpsum().getTitle(3),
|
||||||
content = LoremIpsum().getParagraphs(1, 2),
|
content = LoremIpsum().getParagraphs(1, 2),
|
||||||
description = LoremIpsum().getParagraphs(1, 2),
|
description = LoremIpsum().getParagraphs(1, 2),
|
||||||
createdBy = citizen,
|
createdBy = createdBy,
|
||||||
workgroup = workgroup,
|
workgroup = workgroup,
|
||||||
versionId = UUID.randomUUID()
|
versionId = UUID.randomUUID()
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -36,16 +36,17 @@ fun TestApplicationEngine.`Given I have citizen`(
|
|||||||
return repo.insertWithUser(citizen)?.also { callback(it) }
|
return repo.insertWithUser(citizen)?.also { callback(it) }
|
||||||
}
|
}
|
||||||
|
|
||||||
fun createCitizen(createdBy: CitizenI.Name? = null): Citizen {
|
fun createCitizen(name: CitizenI.Name? = null, id: UUID = UUID.randomUUID()): Citizen {
|
||||||
val citizenRepository: CitizenRepository by lazy { GlobalContext.get().koin.get() }
|
val citizenRepository: CitizenRepository by lazy { GlobalContext.get().koin.get() }
|
||||||
|
|
||||||
return if (createdBy != null) {
|
return if (name != null) {
|
||||||
citizenRepository.findByName(createdBy) ?: error("Citizen not exist")
|
citizenRepository.findByName(name) ?: error("Citizen not exist")
|
||||||
} else {
|
} else {
|
||||||
val first = "firstName" + UUID.randomUUID().toString()
|
val first = "firstName" + UUID.randomUUID().toString()
|
||||||
val last = "lastName" + UUID.randomUUID().toString()
|
val last = "lastName" + UUID.randomUUID().toString()
|
||||||
val username = ("username" + UUID.randomUUID().toString())
|
val username = ("username" + UUID.randomUUID().toString())
|
||||||
CitizenForCreate(
|
CitizenForCreate(
|
||||||
|
id = id,
|
||||||
birthday = DateTime.now(),
|
birthday = DateTime.now(),
|
||||||
name = CitizenI.Name(
|
name = CitizenI.Name(
|
||||||
first,
|
first,
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ fun TestApplicationCall.valid(validate: BitMaskI): TestApplicationCall {
|
|||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
|
|
||||||
fun TestApplicationEngine.`When I send a GET request`(uri: String? = null, validate: Validate = Validate.ALL, setup: (TestApplicationRequest.() -> Unit)? = null): TestApplicationCall {
|
fun TestApplicationEngine.`When I send a GET request`(uri: String? = null, validate: BitMaskI = Validate.ALL, setup: (TestApplicationRequest.() -> Unit)? = null): TestApplicationCall {
|
||||||
return handleRequest(true) {
|
return handleRequest(true) {
|
||||||
method = HttpMethod.Get
|
method = HttpMethod.Get
|
||||||
if (uri != null) {
|
if (uri != null) {
|
||||||
@@ -74,7 +74,7 @@ fun TestApplicationEngine.`When I send a PUT request`(uri: String? = null, valid
|
|||||||
}.valid(validate)
|
}.valid(validate)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun TestApplicationEngine.`When I send a DELETE request`(uri: String? = null, validate: Validate = Validate.ALL, setup: (TestApplicationRequest.() -> String?)? = null): TestApplicationCall {
|
fun TestApplicationEngine.`When I send a DELETE request`(uri: String? = null, validate: BitMaskI = Validate.ALL, setup: (TestApplicationRequest.() -> String?)? = null): TestApplicationCall {
|
||||||
return handleRequest(true) {
|
return handleRequest(true) {
|
||||||
method = HttpMethod.Delete
|
method = HttpMethod.Delete
|
||||||
if (uri != null) {
|
if (uri != null) {
|
||||||
|
|||||||
Reference in New Issue
Block a user