From d03b5853729bdce2143341d863c3d40631eb02b0 Mon Sep 17 00:00:00 2001 From: Fabrice Lecomte Date: Sat, 20 Mar 2021 00:54:01 +0100 Subject: [PATCH] Improve BitMaskI --- .../kotlin/fr/dcproject/common/BitMaskEnum.kt | 1 + src/test/kotlin/integration/Citizen routes.kt | 2 +- src/test/kotlin/integration/Register routes.kt | 2 +- src/test/kotlin/integration/steps/when/request.kt | 15 +++++++++------ 4 files changed, 12 insertions(+), 8 deletions(-) diff --git a/src/main/kotlin/fr/dcproject/common/BitMaskEnum.kt b/src/main/kotlin/fr/dcproject/common/BitMaskEnum.kt index 9bc6c48..bad07bb 100644 --- a/src/main/kotlin/fr/dcproject/common/BitMaskEnum.kt +++ b/src/main/kotlin/fr/dcproject/common/BitMaskEnum.kt @@ -5,6 +5,7 @@ interface BitMaskI { infix operator fun contains(which: BitMaskI): Boolean = bit and which.bit == which.bit infix operator fun plus(mask: BitMaskI): BitMaskI = BitMask(mask.bit and this.bit) + infix operator fun minus(mask: BitMaskI): BitMaskI = BitMask(this.bit - mask.bit) } class BitMask(override val bit: Long) : BitMaskI diff --git a/src/test/kotlin/integration/Citizen routes.kt b/src/test/kotlin/integration/Citizen routes.kt index 9e268fa..21679a5 100644 --- a/src/test/kotlin/integration/Citizen routes.kt +++ b/src/test/kotlin/integration/Citizen routes.kt @@ -80,7 +80,7 @@ class `Citizen routes` : BaseTest() { fun `I cannot change my password if request is bad formatted`() { withIntegrationApplication { `Given I have citizen`("Louis", "Breguet", id = "6cf2a19d-d15d-4ee5-b2a9-907afd26b525") - `When I send a PUT request`("/citizens/6cf2a19d-d15d-4ee5-b2a9-907afd26b525/password/change", Validate.RESPONSE_BODY) { + `When I send a PUT request`("/citizens/6cf2a19d-d15d-4ee5-b2a9-907afd26b525/password/change", Validate.ALL - Validate.RESPONSE_BODY) { `authenticated as`("Louis", "Breguet") `with body`(""" { diff --git a/src/test/kotlin/integration/Register routes.kt b/src/test/kotlin/integration/Register routes.kt index 293f8fe..b69d9c0 100644 --- a/src/test/kotlin/integration/Register routes.kt +++ b/src/test/kotlin/integration/Register routes.kt @@ -43,7 +43,7 @@ class `Register routes` : BaseTest() { @Test fun `I cannot register if no username was sent`() { withIntegrationApplication { - `When I send a POST request`("/register", Validate.RESPONSE_BODY) { + `When I send a POST request`("/register", Validate.ALL - Validate.RESPONSE_BODY) { `with body`(""" { "name": {"firstName":"George2", "lastName":"MICHEL2"}, diff --git a/src/test/kotlin/integration/steps/when/request.kt b/src/test/kotlin/integration/steps/when/request.kt index 94ba744..b09e19b 100644 --- a/src/test/kotlin/integration/steps/when/request.kt +++ b/src/test/kotlin/integration/steps/when/request.kt @@ -16,12 +16,15 @@ import io.ktor.server.testing.setBody enum class Validate(override val bit: Long) : BitMaskI { REQUEST_BODY(1), REQUEST_PARAM(2), - REQUEST(3), - RESPONSE_BODY(4), - ALL(7); + REQUEST_HEADER(4), + REQUEST(1 + 2 + 4), + RESPONSE_BODY(8), + RESPONSE_HEADER(16), + RESPONSE(8 + 16), + ALL((1 + 2 + 4) + (8 + 16)); } -fun TestApplicationCall.valid(validate: Validate): TestApplicationCall { +fun TestApplicationCall.valid(validate: BitMaskI): TestApplicationCall { if (Validate.RESPONSE_BODY in validate) { response.`And the schema response body must be valid`() } @@ -48,7 +51,7 @@ fun TestApplicationEngine.`When I send a GET request`(uri: String? = null, valid }.valid(validate) } -fun TestApplicationEngine.`When I send a POST request`(uri: String? = null, validate: Validate = Validate.ALL, setup: (TestApplicationRequest.() -> Unit)? = null): TestApplicationCall { +fun TestApplicationEngine.`When I send a POST request`(uri: String? = null, validate: BitMaskI = Validate.ALL, setup: (TestApplicationRequest.() -> Unit)? = null): TestApplicationCall { return handleRequest(true) { method = HttpMethod.Post if (uri != null) { @@ -60,7 +63,7 @@ fun TestApplicationEngine.`When I send a POST request`(uri: String? = null, vali }.valid(validate) } -fun TestApplicationEngine.`When I send a PUT request`(uri: String? = null, validate: Validate = Validate.ALL, setup: (TestApplicationRequest.() -> Unit)? = null): TestApplicationCall { +fun TestApplicationEngine.`When I send a PUT request`(uri: String? = null, validate: BitMaskI = Validate.ALL, setup: (TestApplicationRequest.() -> Unit)? = null): TestApplicationCall { return handleRequest(true) { method = HttpMethod.Put if (uri != null) {