Compare commits
18 Commits
refactorin
...
lint
| Author | SHA1 | Date | |
|---|---|---|---|
| 1be608e6b2 | |||
| b13cd5544c | |||
| 104f0fb3fc | |||
| b2f40ff421 | |||
| 09e81620a1 | |||
| fe953fc967 | |||
| 453fd2225c | |||
| 70fd54d831 | |||
| dcf7a2bc06 | |||
| 118af0170a | |||
| 0aa8089a9a | |||
| fef5f3b396 | |||
| 1838b90ac9 | |||
| 73fa2be91f | |||
| 52183abd08 | |||
| e19266d4cc | |||
| f458d7b674 | |||
| 29d4d6ec25 |
123
.github/workflows/tests.yml
vendored
Normal file
123
.github/workflows/tests.yml
vendored
Normal file
@@ -0,0 +1,123 @@
|
|||||||
|
# This workflow will build a Java project with Gradle
|
||||||
|
# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-gradle
|
||||||
|
|
||||||
|
name: Tests
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
branches:
|
||||||
|
- 'master'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- name: Set up JDK 11
|
||||||
|
uses: actions/setup-java@v1
|
||||||
|
with:
|
||||||
|
java-version: 11
|
||||||
|
|
||||||
|
- name: Cache Gradle packages
|
||||||
|
uses: actions/cache@v2
|
||||||
|
with:
|
||||||
|
path: |
|
||||||
|
~/.gradle/caches
|
||||||
|
~/.gradle/wrapper
|
||||||
|
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
|
||||||
|
restore-keys: |
|
||||||
|
${{ runner.os }}-gradle-
|
||||||
|
- name: Build
|
||||||
|
uses: eskatos/gradle-command-action@v1
|
||||||
|
with:
|
||||||
|
gradle-version: 6.8
|
||||||
|
arguments: build -x test -x ktlintKotlinScriptCheck -x ktlintTestSourceSetCheck -x ktlintMainSourceSetCheck -x detekt
|
||||||
|
- name: Cleanup Gradle Cache
|
||||||
|
# Remove some files from the Gradle cache, so they aren't cached by GitHub Actions.
|
||||||
|
# Restoring these files from a GitHub Actions cache might cause problems for future builds.
|
||||||
|
run: |
|
||||||
|
rm -f ~/.gradle/caches/modules-2/modules-2.lock
|
||||||
|
rm -f ~/.gradle/caches/modules-2/gc.properties
|
||||||
|
|
||||||
|
- name: processResources
|
||||||
|
uses: eskatos/gradle-command-action@v1
|
||||||
|
with:
|
||||||
|
gradle-version: 6.8
|
||||||
|
arguments: processResources
|
||||||
|
- name: processTestResources
|
||||||
|
uses: eskatos/gradle-command-action@v1
|
||||||
|
with:
|
||||||
|
gradle-version: 6.8
|
||||||
|
arguments: processResources
|
||||||
|
- uses: actions/upload-artifact@v2
|
||||||
|
with:
|
||||||
|
name: Build
|
||||||
|
path: build
|
||||||
|
|
||||||
|
testSql:
|
||||||
|
needs: build
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- name: Set up JDK 11
|
||||||
|
uses: actions/setup-java@v1
|
||||||
|
with:
|
||||||
|
java-version: 11
|
||||||
|
- uses: actions/download-artifact@v2
|
||||||
|
with:
|
||||||
|
name: Build
|
||||||
|
path: build
|
||||||
|
- name: TestSql
|
||||||
|
uses: eskatos/gradle-command-action@v1
|
||||||
|
with:
|
||||||
|
gradle-version: 6.8
|
||||||
|
arguments: testSql
|
||||||
|
|
||||||
|
test:
|
||||||
|
needs: build
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- name: Set up JDK 11
|
||||||
|
uses: actions/setup-java@v1
|
||||||
|
with:
|
||||||
|
java-version: 11
|
||||||
|
- uses: actions/download-artifact@v2
|
||||||
|
with:
|
||||||
|
name: Build
|
||||||
|
path: build
|
||||||
|
- name: Test
|
||||||
|
uses: eskatos/gradle-command-action@v1
|
||||||
|
with:
|
||||||
|
gradle-version: 6.8
|
||||||
|
arguments: test -x testSql
|
||||||
|
- name: Coverage
|
||||||
|
uses: eskatos/gradle-command-action@v1
|
||||||
|
with:
|
||||||
|
gradle-version: 6.8
|
||||||
|
arguments: coveralls
|
||||||
|
env:
|
||||||
|
COVERALLS_REPO_TOKEN: ${{ secrets.COVERALLS_REPO_TOKEN }}
|
||||||
|
|
||||||
|
lint:
|
||||||
|
needs: build
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- name: Set up JDK 11
|
||||||
|
uses: actions/setup-java@v1
|
||||||
|
with:
|
||||||
|
java-version: 11
|
||||||
|
- uses: actions/download-artifact@v2
|
||||||
|
with:
|
||||||
|
name: Build
|
||||||
|
path: build
|
||||||
|
- name: Lint
|
||||||
|
uses: eskatos/gradle-command-action@v1
|
||||||
|
with:
|
||||||
|
gradle-version: 6.8
|
||||||
|
arguments: ktlintCheck
|
||||||
2
.idea/dataSources.xml
generated
2
.idea/dataSources.xml
generated
@@ -11,7 +11,7 @@
|
|||||||
<driver-ref>postgresql</driver-ref>
|
<driver-ref>postgresql</driver-ref>
|
||||||
<synchronize>true</synchronize>
|
<synchronize>true</synchronize>
|
||||||
<jdbc-driver>org.postgresql.Driver</jdbc-driver>
|
<jdbc-driver>org.postgresql.Driver</jdbc-driver>
|
||||||
<jdbc-url>jdbc:postgresql://localhost:5433/test</jdbc-url>
|
<jdbc-url>jdbc:postgresql://localhost:15432/test</jdbc-url>
|
||||||
</data-source>
|
</data-source>
|
||||||
<data-source source="LOCAL" name="sonar@localhost" uuid="ee78beab-120d-4740-ad21-d4d9e2121d25">
|
<data-source source="LOCAL" name="sonar@localhost" uuid="ee78beab-120d-4740-ad21-d4d9e2121d25">
|
||||||
<driver-ref>postgresql</driver-ref>
|
<driver-ref>postgresql</driver-ref>
|
||||||
|
|||||||
@@ -1,6 +1,12 @@
|
|||||||
# DC Project
|
# DC Project
|
||||||
|
|
||||||
[Installation](./doc/installation)
|
[](https://www.codefactor.io/repository/github/flecomte/dc-project)
|
||||||
|
[](https://github.com/flecomte/dc-project/actions/workflows/tests.yml)
|
||||||
|
[](https://coveralls.io/github/flecomte/dc-project?branch=master)
|
||||||
|
[](https://www.codacy.com/gh/flecomte/dc-project/dashboard?utm_source=github.com&utm_medium=referral&utm_content=flecomte/dc-project&utm_campaign=Badge_Grade)
|
||||||
|
|
||||||
|
|
||||||
|
[Installation](./doc/installation/Installation.md)
|
||||||
|
|
||||||
### Run dockers
|
### Run dockers
|
||||||
```bash
|
```bash
|
||||||
|
|||||||
@@ -41,6 +41,7 @@ plugins {
|
|||||||
id("net.nemerosa.versioning") version "2.14.0"
|
id("net.nemerosa.versioning") version "2.14.0"
|
||||||
id("io.gitlab.arturbosch.detekt") version "1.16.0-RC1"
|
id("io.gitlab.arturbosch.detekt") version "1.16.0-RC1"
|
||||||
id("com.avast.gradle.docker-compose") version "0.14.0"
|
id("com.avast.gradle.docker-compose") version "0.14.0"
|
||||||
|
id("com.github.kt3k.coveralls") version "2.8.4"
|
||||||
}
|
}
|
||||||
|
|
||||||
application {
|
application {
|
||||||
@@ -56,10 +57,13 @@ buildscript {
|
|||||||
}
|
}
|
||||||
dependencies {
|
dependencies {
|
||||||
classpath("com.typesafe:config:1.4.1")
|
classpath("com.typesafe:config:1.4.1")
|
||||||
classpath("com.github.flecomte:postgres-json:2.1.1")
|
classpath("com.github.flecomte:postgres-json:2.1.2")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
tasks.distZip.configure { enabled = false }
|
||||||
|
tasks.distTar.configure { enabled = false }
|
||||||
|
|
||||||
tasks.withType<KotlinCompile> {
|
tasks.withType<KotlinCompile> {
|
||||||
kotlinOptions {
|
kotlinOptions {
|
||||||
jvmTarget = "11"
|
jvmTarget = "11"
|
||||||
@@ -71,7 +75,7 @@ val migration by tasks.registering {
|
|||||||
dependsOn(tasks.named("composeUp"))
|
dependsOn(tasks.named("composeUp"))
|
||||||
|
|
||||||
doLast {
|
doLast {
|
||||||
val config = ConfigFactory.parseFile(file("$buildDir/../src/main/resources/application.conf")).resolve()
|
val config = ConfigFactory.parseFile(file("$buildDir/resources/main/application.conf")).resolve()
|
||||||
val connection = Connection(
|
val connection = Connection(
|
||||||
host = config.getString("db.host"),
|
host = config.getString("db.host"),
|
||||||
port = config.getInt("db.port"),
|
port = config.getInt("db.port"),
|
||||||
@@ -81,8 +85,8 @@ val migration by tasks.registering {
|
|||||||
)
|
)
|
||||||
Migrations(
|
Migrations(
|
||||||
connection,
|
connection,
|
||||||
file("$buildDir/../src/main/resources/sql/migrations").toURI(),
|
file("$buildDir/resources/main/sql/migrations").toURI(),
|
||||||
file("$buildDir/../src/main/resources/sql/functions").toURI()
|
file("$buildDir/resources/main/sql/functions").toURI()
|
||||||
).run {
|
).run {
|
||||||
run()
|
run()
|
||||||
}
|
}
|
||||||
@@ -94,7 +98,7 @@ val migrationTest by tasks.registering {
|
|||||||
dependsOn(tasks.named("testComposeUp"))
|
dependsOn(tasks.named("testComposeUp"))
|
||||||
finalizedBy(tasks.named("testComposeDown"))
|
finalizedBy(tasks.named("testComposeDown"))
|
||||||
doLast {
|
doLast {
|
||||||
val config = ConfigFactory.parseFile(file("$buildDir/../src/test/resources/application-test.conf")).resolve()
|
val config = ConfigFactory.parseFile(file("$buildDir/resources/test/application-test.conf")).resolve()
|
||||||
val connection = Connection(
|
val connection = Connection(
|
||||||
host = config.getString("db.host"),
|
host = config.getString("db.host"),
|
||||||
port = config.getInt("db.port"),
|
port = config.getInt("db.port"),
|
||||||
@@ -104,8 +108,8 @@ val migrationTest by tasks.registering {
|
|||||||
)
|
)
|
||||||
Migrations(
|
Migrations(
|
||||||
connection,
|
connection,
|
||||||
file("$buildDir/../src/main/resources/sql/migrations").toURI(),
|
file("$buildDir/resources/main/sql/migrations").toURI(),
|
||||||
file("$buildDir/../src/main/resources/sql/functions").toURI()
|
file("$buildDir/resources/main/sql/functions").toURI()
|
||||||
).run {
|
).run {
|
||||||
run()
|
run()
|
||||||
connection.disconnect()
|
connection.disconnect()
|
||||||
@@ -115,11 +119,13 @@ val migrationTest by tasks.registering {
|
|||||||
|
|
||||||
val testSql by tasks.registering {
|
val testSql by tasks.registering {
|
||||||
group = "verification"
|
group = "verification"
|
||||||
|
dependsOn(tasks.named("processResources"))
|
||||||
|
dependsOn(tasks.named("processTestResources"))
|
||||||
dependsOn(tasks.named("testComposeUp"))
|
dependsOn(tasks.named("testComposeUp"))
|
||||||
finalizedBy(tasks.named("testComposeDown"))
|
finalizedBy(tasks.named("testComposeDown"))
|
||||||
|
|
||||||
doLast {
|
doLast {
|
||||||
val config = ConfigFactory.parseFile(file("$buildDir/../src/test/resources/application-test.conf")).resolve()
|
val config = ConfigFactory.parseFile(file("$buildDir/resources/test/application-test.conf")).resolve()
|
||||||
|
|
||||||
val connection = Connection(
|
val connection = Connection(
|
||||||
host = config.getString("db.host"),
|
host = config.getString("db.host"),
|
||||||
@@ -131,16 +137,14 @@ val testSql by tasks.registering {
|
|||||||
|
|
||||||
Migrations(
|
Migrations(
|
||||||
connection,
|
connection,
|
||||||
file("$buildDir/../src/main/resources/sql/migrations").toURI(),
|
file("$buildDir/resources/main/sql/migrations").toURI(),
|
||||||
file("$buildDir/../src/main/resources/sql/functions").toURI(),
|
file("$buildDir/resources/main/sql/functions").toURI(),
|
||||||
file("$buildDir/../src/test/sql/fixtures").toURI()
|
file("$buildDir/resources/test/sql/fixtures").toURI()
|
||||||
).run {
|
).run()
|
||||||
run()
|
|
||||||
}
|
|
||||||
|
|
||||||
Requester.RequesterFactory(
|
Requester.RequesterFactory(
|
||||||
connection = connection,
|
connection = connection,
|
||||||
queriesDirectory = file("$buildDir/../src/test/sql").toURI()
|
queriesDirectory = file("$buildDir/resources/test/sql").toURI()
|
||||||
).createRequester().run {
|
).createRequester().run {
|
||||||
getQueries().map {
|
getQueries().map {
|
||||||
try {
|
try {
|
||||||
@@ -194,6 +198,17 @@ tasks.test {
|
|||||||
finalizedBy(tasks.jacocoTestReport) // report is always generated after tests run
|
finalizedBy(tasks.jacocoTestReport) // report is always generated after tests run
|
||||||
}
|
}
|
||||||
|
|
||||||
|
coveralls {
|
||||||
|
sourceDirs.add("src/main/kotlin")
|
||||||
|
}
|
||||||
|
|
||||||
|
tasks.register("testAll") {
|
||||||
|
group = "verification"
|
||||||
|
dependsOn(testSql)
|
||||||
|
dependsOn(tasks.test)
|
||||||
|
dependsOn(tasks.ktlintCheck)
|
||||||
|
}
|
||||||
|
|
||||||
apply(plugin = "docker-compose")
|
apply(plugin = "docker-compose")
|
||||||
dockerCompose {
|
dockerCompose {
|
||||||
projectName = "dc-project"
|
projectName = "dc-project"
|
||||||
@@ -267,6 +282,7 @@ tasks.jacocoTestReport {
|
|||||||
|
|
||||||
detekt {
|
detekt {
|
||||||
buildUponDefaultConfig = true // preconfigure defaults
|
buildUponDefaultConfig = true // preconfigure defaults
|
||||||
|
ignoreFailures = true
|
||||||
// config = files("$projectDir/config/detekt.yml") // point to your custom config defining rules to run, overwriting default behavior
|
// config = files("$projectDir/config/detekt.yml") // point to your custom config defining rules to run, overwriting default behavior
|
||||||
// baseline = file("$projectDir/config/baseline.xml") // a way of suppressing issues before introducing detekt
|
// baseline = file("$projectDir/config/baseline.xml") // a way of suppressing issues before introducing detekt
|
||||||
|
|
||||||
@@ -281,6 +297,7 @@ detekt {
|
|||||||
tasks.withType<Detekt> {
|
tasks.withType<Detekt> {
|
||||||
// Target version of the generated JVM bytecode. It is used for type resolution.
|
// Target version of the generated JVM bytecode. It is used for type resolution.
|
||||||
this.jvmTarget = "11"
|
this.jvmTarget = "11"
|
||||||
|
ignoreFailures = true
|
||||||
}
|
}
|
||||||
|
|
||||||
val setMaxMapCount = tasks.create<Exec>("setMaxMapCount") {
|
val setMaxMapCount = tasks.create<Exec>("setMaxMapCount") {
|
||||||
@@ -293,7 +310,12 @@ val setMaxMapCount = tasks.create<Exec>("setMaxMapCount") {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
tasks.named("testComposeUp").configure { dependsOn(setMaxMapCount) }
|
|
||||||
|
tasks.named("testComposeUp").configure {
|
||||||
|
if (OperatingSystem.current().isWindows) {
|
||||||
|
dependsOn(setMaxMapCount)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
dependencyCheck {
|
dependencyCheck {
|
||||||
formats = listOf(ReportGenerator.Format.HTML, ReportGenerator.Format.XML)
|
formats = listOf(ReportGenerator.Format.HTML, ReportGenerator.Format.XML)
|
||||||
@@ -327,7 +349,7 @@ dependencies {
|
|||||||
implementation("net.pearx.kasechange:kasechange-jvm:1.3.0")
|
implementation("net.pearx.kasechange:kasechange-jvm:1.3.0")
|
||||||
implementation("com.auth0:java-jwt:3.12.0")
|
implementation("com.auth0:java-jwt:3.12.0")
|
||||||
implementation("com.github.jasync-sql:jasync-postgresql:1.1.6")
|
implementation("com.github.jasync-sql:jasync-postgresql:1.1.6")
|
||||||
implementation("com.github.flecomte:postgres-json:2.1.1")
|
implementation("com.github.flecomte:postgres-json:2.1.2")
|
||||||
implementation("com.sendgrid:sendgrid-java:4.7.1")
|
implementation("com.sendgrid:sendgrid-java:4.7.1")
|
||||||
implementation("io.lettuce:lettuce-core:5.3.6.RELEASE") // TODO update to 6.0.2
|
implementation("io.lettuce:lettuce-core:5.3.6.RELEASE") // TODO update to 6.0.2
|
||||||
implementation("com.rabbitmq:amqp-client:5.10.0")
|
implementation("com.rabbitmq:amqp-client:5.10.0")
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,22 +1,22 @@
|
|||||||
package integration
|
package integration
|
||||||
|
|
||||||
import integration.steps.then.`And have property`
|
|
||||||
import integration.steps.then.`And the response should contain pattern`
|
|
||||||
import integration.steps.then.`And the response should not be null`
|
|
||||||
import integration.steps.then.`Then the response should be`
|
|
||||||
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`
|
||||||
import integration.steps.then.`whish contains`
|
|
||||||
import integration.steps.then.and
|
|
||||||
import integration.steps.given.`Given I have article created by workgroup`
|
import integration.steps.given.`Given I have article created by workgroup`
|
||||||
import integration.steps.given.`Given I have article`
|
import integration.steps.given.`Given I have article`
|
||||||
import integration.steps.given.`Given I have articles`
|
import integration.steps.given.`Given I have articles`
|
||||||
import integration.steps.given.`Given I have citizen`
|
import integration.steps.given.`Given I have citizen`
|
||||||
import integration.steps.given.`Given I have workgroup`
|
import integration.steps.given.`Given I have workgroup`
|
||||||
import integration.steps.given.`authenticated as`
|
import integration.steps.given.`authenticated as`
|
||||||
|
import integration.steps.then.`And have property`
|
||||||
import integration.steps.then.`And the response should contain list`
|
import integration.steps.then.`And the response should contain list`
|
||||||
|
import integration.steps.then.`And the response should contain pattern`
|
||||||
|
import integration.steps.then.`And the response should not be null`
|
||||||
import integration.steps.then.`And the response should not contain`
|
import integration.steps.then.`And the response should not contain`
|
||||||
|
import integration.steps.then.`Then the response should be`
|
||||||
|
import integration.steps.then.`whish contains`
|
||||||
|
import integration.steps.then.and
|
||||||
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
|
||||||
import org.junit.jupiter.api.Tags
|
import org.junit.jupiter.api.Tags
|
||||||
@@ -84,7 +84,8 @@ class `Article routes` : BaseTest() {
|
|||||||
`Given I have citizen`("John", "Doe")
|
`Given I have citizen`("John", "Doe")
|
||||||
`When I send a POST request`("/articles") {
|
`When I send a POST request`("/articles") {
|
||||||
`authenticated as`("John", "Doe")
|
`authenticated as`("John", "Doe")
|
||||||
`with body`("""
|
`with body`(
|
||||||
|
"""
|
||||||
{
|
{
|
||||||
"versionId": "09c418b6-63ba-448b-b38b-502b41cd500e",
|
"versionId": "09c418b6-63ba-448b-b38b-502b41cd500e",
|
||||||
"title": "title2",
|
"title": "title2",
|
||||||
@@ -95,7 +96,8 @@ class `Article routes` : BaseTest() {
|
|||||||
"green"
|
"green"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
""")
|
"""
|
||||||
|
)
|
||||||
} `Then the response should be` OK and {
|
} `Then the response should be` OK and {
|
||||||
`And the response should not be null`()
|
`And the response should not be null`()
|
||||||
`And have property`("$.versionId") `whish contains` "09c418b6-63ba-448b-b38b-502b41cd500e"
|
`And have property`("$.versionId") `whish contains` "09c418b6-63ba-448b-b38b-502b41cd500e"
|
||||||
|
|||||||
@@ -1,16 +1,16 @@
|
|||||||
package integration
|
package integration
|
||||||
|
|
||||||
import integration.steps.`when`.Validate
|
import integration.steps.`when`.Validate
|
||||||
import integration.steps.then.`And have property`
|
|
||||||
import integration.steps.then.`And the response should not be null`
|
|
||||||
import integration.steps.then.`Then the response should be`
|
|
||||||
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 PUT request`
|
import integration.steps.`when`.`When I send a PUT request`
|
||||||
import integration.steps.`when`.`with body`
|
import integration.steps.`when`.`with body`
|
||||||
import integration.steps.then.`whish contains`
|
|
||||||
import integration.steps.then.and
|
|
||||||
import integration.steps.given.`Given I have citizen`
|
import integration.steps.given.`Given I have citizen`
|
||||||
import integration.steps.given.`authenticated as`
|
import integration.steps.given.`authenticated as`
|
||||||
|
import integration.steps.then.`And have property`
|
||||||
|
import integration.steps.then.`And the response should not be null`
|
||||||
|
import integration.steps.then.`Then the response should be`
|
||||||
|
import integration.steps.then.`whish contains`
|
||||||
|
import integration.steps.then.and
|
||||||
import io.ktor.http.HttpStatusCode.Companion.BadRequest
|
import io.ktor.http.HttpStatusCode.Companion.BadRequest
|
||||||
import io.ktor.http.HttpStatusCode.Companion.Created
|
import io.ktor.http.HttpStatusCode.Companion.Created
|
||||||
import io.ktor.http.HttpStatusCode.Companion.OK
|
import io.ktor.http.HttpStatusCode.Companion.OK
|
||||||
@@ -66,12 +66,14 @@ class `Citizen routes` : BaseTest() {
|
|||||||
`Given I have citizen`("Georges", "Charpak", id = "0c966522-4071-43e5-a3ca-cfff2557f2cf")
|
`Given I have citizen`("Georges", "Charpak", id = "0c966522-4071-43e5-a3ca-cfff2557f2cf")
|
||||||
`When I send a PUT request`("/citizens/0c966522-4071-43e5-a3ca-cfff2557f2cf/password/change") {
|
`When I send a PUT request`("/citizens/0c966522-4071-43e5-a3ca-cfff2557f2cf/password/change") {
|
||||||
`authenticated as`("Georges", "Charpak")
|
`authenticated as`("Georges", "Charpak")
|
||||||
`with body`("""
|
`with body`(
|
||||||
|
"""
|
||||||
{
|
{
|
||||||
"oldPassword": "azerty",
|
"oldPassword": "azerty",
|
||||||
"newPassword": "qwerty"
|
"newPassword": "qwerty"
|
||||||
}
|
}
|
||||||
""")
|
"""
|
||||||
|
)
|
||||||
} `Then the response should be` Created
|
} `Then the response should be` Created
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -82,12 +84,14 @@ class `Citizen routes` : BaseTest() {
|
|||||||
`Given I have citizen`("Louis", "Breguet", id = "6cf2a19d-d15d-4ee5-b2a9-907afd26b525")
|
`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.ALL - Validate.REQUEST_BODY) {
|
`When I send a PUT request`("/citizens/6cf2a19d-d15d-4ee5-b2a9-907afd26b525/password/change", Validate.ALL - Validate.REQUEST_BODY) {
|
||||||
`authenticated as`("Louis", "Breguet")
|
`authenticated as`("Louis", "Breguet")
|
||||||
`with body`("""
|
`with body`(
|
||||||
|
"""
|
||||||
{
|
{
|
||||||
"plup": "azerty",
|
"plup": "azerty",
|
||||||
"gloup": "qwerty"
|
"gloup": "qwerty"
|
||||||
}
|
}
|
||||||
""")
|
"""
|
||||||
|
)
|
||||||
} `Then the response should be` BadRequest
|
} `Then the response should be` BadRequest
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,18 +1,18 @@
|
|||||||
package integration
|
package integration
|
||||||
|
|
||||||
import fr.dcproject.component.citizen.database.CitizenI.Name
|
import fr.dcproject.component.citizen.database.CitizenI.Name
|
||||||
import integration.steps.then.`And the response should contain`
|
|
||||||
import integration.steps.then.`And the response should not be null`
|
|
||||||
import integration.steps.then.`Then the response should be`
|
|
||||||
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`.`When I send a PUT request`
|
import integration.steps.`when`.`When I send a PUT request`
|
||||||
import integration.steps.`when`.`with body`
|
import integration.steps.`when`.`with body`
|
||||||
import integration.steps.then.and
|
|
||||||
import integration.steps.given.`Given I have article`
|
import integration.steps.given.`Given I have article`
|
||||||
import integration.steps.given.`Given I have citizen`
|
import integration.steps.given.`Given I have citizen`
|
||||||
import integration.steps.given.`Given I have comment on article`
|
import integration.steps.given.`Given I have comment on article`
|
||||||
import integration.steps.given.`authenticated as`
|
import integration.steps.given.`authenticated as`
|
||||||
|
import integration.steps.then.`And the response should contain`
|
||||||
|
import integration.steps.then.`And the response should not be null`
|
||||||
|
import integration.steps.then.`Then the response should be`
|
||||||
|
import integration.steps.then.and
|
||||||
import io.ktor.http.HttpStatusCode.Companion.Created
|
import io.ktor.http.HttpStatusCode.Companion.Created
|
||||||
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
|
||||||
@@ -30,11 +30,13 @@ class `Comment articles routes` : BaseTest() {
|
|||||||
`Given I have article`(id = "aa16c635-28da-46f0-9a89-934eef88c7ca")
|
`Given I have article`(id = "aa16c635-28da-46f0-9a89-934eef88c7ca")
|
||||||
`When I send a POST request`("/articles/aa16c635-28da-46f0-9a89-934eef88c7ca/comments") {
|
`When I send a POST request`("/articles/aa16c635-28da-46f0-9a89-934eef88c7ca/comments") {
|
||||||
`authenticated as`("Michael", "Faraday")
|
`authenticated as`("Michael", "Faraday")
|
||||||
`with body`("""
|
`with body`(
|
||||||
|
"""
|
||||||
{
|
{
|
||||||
"content": "Hello mister"
|
"content": "Hello mister"
|
||||||
}
|
}
|
||||||
""")
|
"""
|
||||||
|
)
|
||||||
} `Then the response should be` Created and {
|
} `Then the response should be` Created and {
|
||||||
`And the response should not be null`()
|
`And the response should not be null`()
|
||||||
`And the response should contain`("$.target.id", "aa16c635-28da-46f0-9a89-934eef88c7ca")
|
`And the response should contain`("$.target.id", "aa16c635-28da-46f0-9a89-934eef88c7ca")
|
||||||
@@ -99,11 +101,13 @@ class `Comment articles routes` : BaseTest() {
|
|||||||
`Given I have comment on article`(article = "bb05e4a3-55a1-4088-85e7-8d8c23be29b1", createdBy = Name("Hubert", "Reeves"), id = "fd30d20f-656c-42c6-8955-f61c04537464")
|
`Given I have comment on article`(article = "bb05e4a3-55a1-4088-85e7-8d8c23be29b1", createdBy = Name("Hubert", "Reeves"), id = "fd30d20f-656c-42c6-8955-f61c04537464")
|
||||||
`When I send a PUT request`("/comments/fd30d20f-656c-42c6-8955-f61c04537464") {
|
`When I send a PUT request`("/comments/fd30d20f-656c-42c6-8955-f61c04537464") {
|
||||||
`authenticated as`("Hubert", "Reeves")
|
`authenticated as`("Hubert", "Reeves")
|
||||||
`with body`("""
|
`with body`(
|
||||||
|
"""
|
||||||
{
|
{
|
||||||
"content": "Hello boy"
|
"content": "Hello boy"
|
||||||
}
|
}
|
||||||
""")
|
"""
|
||||||
|
)
|
||||||
} `Then the response should be` OK and {
|
} `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`("$.content", "Hello boy")
|
`And the response should contain`("$.content", "Hello boy")
|
||||||
|
|||||||
@@ -1,18 +1,18 @@
|
|||||||
package integration
|
package integration
|
||||||
|
|
||||||
import fr.dcproject.component.citizen.database.CitizenI.Name
|
import fr.dcproject.component.citizen.database.CitizenI.Name
|
||||||
import integration.steps.then.`And the response should contain list`
|
|
||||||
import integration.steps.then.`And the response should contain`
|
|
||||||
import integration.steps.then.`And the response should not be null`
|
|
||||||
import integration.steps.then.`Then the response should be`
|
|
||||||
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`
|
||||||
import integration.steps.then.and
|
|
||||||
import integration.steps.given.`Given I have citizen`
|
import integration.steps.given.`Given I have citizen`
|
||||||
import integration.steps.given.`Given I have comment on constitution`
|
import integration.steps.given.`Given I have comment on constitution`
|
||||||
import integration.steps.given.`Given I have constitution`
|
import integration.steps.given.`Given I have constitution`
|
||||||
import integration.steps.given.`authenticated as`
|
import integration.steps.given.`authenticated as`
|
||||||
|
import integration.steps.then.`And the response should contain list`
|
||||||
|
import integration.steps.then.`And the response should contain`
|
||||||
|
import integration.steps.then.`And the response should not be null`
|
||||||
|
import integration.steps.then.`Then the response should be`
|
||||||
|
import integration.steps.then.and
|
||||||
import io.ktor.http.HttpStatusCode.Companion.Created
|
import io.ktor.http.HttpStatusCode.Companion.Created
|
||||||
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
|
||||||
@@ -30,11 +30,13 @@ class `Comment constitutions routes` : BaseTest() {
|
|||||||
`Given I have constitution`(id = "1707c287-a472-4a62-89f2-9e85030e915c")
|
`Given I have constitution`(id = "1707c287-a472-4a62-89f2-9e85030e915c")
|
||||||
`When I send a POST request`("/constitutions/1707c287-a472-4a62-89f2-9e85030e915c/comments") {
|
`When I send a POST request`("/constitutions/1707c287-a472-4a62-89f2-9e85030e915c/comments") {
|
||||||
`authenticated as`("Nicolas", "Copernic")
|
`authenticated as`("Nicolas", "Copernic")
|
||||||
`with body`("""
|
`with body`(
|
||||||
|
"""
|
||||||
{
|
{
|
||||||
"content": "Hello mister"
|
"content": "Hello mister"
|
||||||
}
|
}
|
||||||
""")
|
"""
|
||||||
|
)
|
||||||
} `Then the response should be` Created and {
|
} `Then the response should be` Created and {
|
||||||
`And the response should not be null`()
|
`And the response should not be null`()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,13 +1,13 @@
|
|||||||
package integration
|
package integration
|
||||||
|
|
||||||
import integration.steps.then.`And the response should not be null`
|
|
||||||
import integration.steps.then.`Then the response should be`
|
|
||||||
import integration.steps.`when`.`When I send a GET request`
|
import integration.steps.`when`.`When I send a GET request`
|
||||||
import integration.steps.then.and
|
|
||||||
import integration.steps.given.`Given I have article`
|
import integration.steps.given.`Given I have article`
|
||||||
import integration.steps.given.`Given I have citizen`
|
import integration.steps.given.`Given I have citizen`
|
||||||
import integration.steps.given.`Given I have comment on article`
|
import integration.steps.given.`Given I have comment on article`
|
||||||
import integration.steps.given.`authenticated as`
|
import integration.steps.given.`authenticated as`
|
||||||
|
import integration.steps.then.`And the response should not be null`
|
||||||
|
import integration.steps.then.`Then the response should be`
|
||||||
|
import integration.steps.then.and
|
||||||
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
|
||||||
import org.junit.jupiter.api.Tags
|
import org.junit.jupiter.api.Tags
|
||||||
|
|||||||
@@ -1,18 +1,18 @@
|
|||||||
package integration
|
package integration
|
||||||
|
|
||||||
import integration.steps.`when`.Validate
|
import integration.steps.`when`.Validate
|
||||||
import integration.steps.then.`And have property`
|
|
||||||
import integration.steps.then.`And the response should not be null`
|
|
||||||
import integration.steps.then.`Then the response should be`
|
|
||||||
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`
|
||||||
import integration.steps.then.`whish contains`
|
|
||||||
import integration.steps.then.and
|
|
||||||
import integration.steps.given.`Given I have citizen`
|
import integration.steps.given.`Given I have citizen`
|
||||||
import integration.steps.given.`Given I have constitution`
|
import integration.steps.given.`Given I have constitution`
|
||||||
import integration.steps.given.`Given I have constitutions`
|
import integration.steps.given.`Given I have constitutions`
|
||||||
import integration.steps.given.`authenticated as`
|
import integration.steps.given.`authenticated as`
|
||||||
|
import integration.steps.then.`And have property`
|
||||||
|
import integration.steps.then.`And the response should not be null`
|
||||||
|
import integration.steps.then.`Then the response should be`
|
||||||
|
import integration.steps.then.`whish contains`
|
||||||
|
import integration.steps.then.and
|
||||||
import io.ktor.http.HttpStatusCode.Companion.BadRequest
|
import io.ktor.http.HttpStatusCode.Companion.BadRequest
|
||||||
import io.ktor.http.HttpStatusCode.Companion.Created
|
import io.ktor.http.HttpStatusCode.Companion.Created
|
||||||
import io.ktor.http.HttpStatusCode.Companion.OK
|
import io.ktor.http.HttpStatusCode.Companion.OK
|
||||||
@@ -66,7 +66,8 @@ class `Constitution routes` : BaseTest() {
|
|||||||
`Given I have citizen`("Henri", "Poincaré")
|
`Given I have citizen`("Henri", "Poincaré")
|
||||||
`When I send a POST request`("/constitutions") {
|
`When I send a POST request`("/constitutions") {
|
||||||
`authenticated as`("Henri", "Poincaré")
|
`authenticated as`("Henri", "Poincaré")
|
||||||
`with body`("""
|
`with body`(
|
||||||
|
"""
|
||||||
{
|
{
|
||||||
"versionId":"15814bb6-8d90-4c6a-a456-c3939a8ec75e",
|
"versionId":"15814bb6-8d90-4c6a-a456-c3939a8ec75e",
|
||||||
"title":"Hello world!",
|
"title":"Hello world!",
|
||||||
@@ -77,7 +78,8 @@ class `Constitution routes` : BaseTest() {
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
""")
|
"""
|
||||||
|
)
|
||||||
} `Then the response should be` Created and {
|
} `Then the response should be` Created and {
|
||||||
`And the response should not be null`()
|
`And the response should not be null`()
|
||||||
`And have property`("$.versionId") `whish contains` "15814bb6-8d90-4c6a-a456-c3939a8ec75e"
|
`And have property`("$.versionId") `whish contains` "15814bb6-8d90-4c6a-a456-c3939a8ec75e"
|
||||||
@@ -92,7 +94,8 @@ class `Constitution routes` : BaseTest() {
|
|||||||
`Given I have citizen`("Henri", "Poincaré")
|
`Given I have citizen`("Henri", "Poincaré")
|
||||||
`When I send a POST request`("/constitutions", Validate.ALL - Validate.REQUEST_BODY) {
|
`When I send a POST request`("/constitutions", Validate.ALL - Validate.REQUEST_BODY) {
|
||||||
`authenticated as`("Henri", "Poincaré")
|
`authenticated as`("Henri", "Poincaré")
|
||||||
`with body`("""
|
`with body`(
|
||||||
|
"""
|
||||||
{
|
{
|
||||||
"versionId":"15814bb6-8d90-4c6a-a456-c3939a8ec75e",
|
"versionId":"15814bb6-8d90-4c6a-a456-c3939a8ec75e",
|
||||||
"title":"Hello world!",
|
"title":"Hello world!",
|
||||||
@@ -104,7 +107,8 @@ class `Constitution routes` : BaseTest() {
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
""")
|
"""
|
||||||
|
)
|
||||||
} `Then the response should be` BadRequest
|
} `Then the response should be` BadRequest
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,18 +1,18 @@
|
|||||||
package integration
|
package integration
|
||||||
|
|
||||||
import integration.steps.then.`And the response should be null`
|
|
||||||
import integration.steps.then.`And the response should contain`
|
|
||||||
import integration.steps.then.`And the response should not be null`
|
|
||||||
import integration.steps.then.`Then the response should be`
|
|
||||||
import integration.steps.`when`.`When I send a DELETE request`
|
import integration.steps.`when`.`When I send a DELETE request`
|
||||||
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.then.and
|
|
||||||
import integration.steps.given.`And follow article`
|
import integration.steps.given.`And follow article`
|
||||||
import integration.steps.given.`Given I have article`
|
import integration.steps.given.`Given I have article`
|
||||||
import integration.steps.given.`Given I have citizen`
|
import integration.steps.given.`Given I have citizen`
|
||||||
import integration.steps.given.`authenticated as`
|
import integration.steps.given.`authenticated as`
|
||||||
import integration.steps.given.`with no content`
|
import integration.steps.given.`with no content`
|
||||||
|
import integration.steps.then.`And the response should be null`
|
||||||
|
import integration.steps.then.`And the response should contain`
|
||||||
|
import integration.steps.then.`And the response should not be null`
|
||||||
|
import integration.steps.then.`Then the response should be`
|
||||||
|
import integration.steps.then.and
|
||||||
import io.ktor.http.HttpStatusCode.Companion.Created
|
import io.ktor.http.HttpStatusCode.Companion.Created
|
||||||
import io.ktor.http.HttpStatusCode.Companion.NoContent
|
import io.ktor.http.HttpStatusCode.Companion.NoContent
|
||||||
import io.ktor.http.HttpStatusCode.Companion.OK
|
import io.ktor.http.HttpStatusCode.Companion.OK
|
||||||
|
|||||||
@@ -1,18 +1,18 @@
|
|||||||
package integration
|
package integration
|
||||||
|
|
||||||
import integration.steps.then.`And the response should be null`
|
|
||||||
import integration.steps.then.`And the response should contain`
|
|
||||||
import integration.steps.then.`And the response should not be null`
|
|
||||||
import integration.steps.then.`Then the response should be`
|
|
||||||
import integration.steps.`when`.`When I send a DELETE request`
|
import integration.steps.`when`.`When I send a DELETE request`
|
||||||
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.then.and
|
|
||||||
import integration.steps.given.`And follow constitution`
|
import integration.steps.given.`And follow constitution`
|
||||||
import integration.steps.given.`Given I have citizen`
|
import integration.steps.given.`Given I have citizen`
|
||||||
import integration.steps.given.`Given I have constitution`
|
import integration.steps.given.`Given I have constitution`
|
||||||
import integration.steps.given.`authenticated as`
|
import integration.steps.given.`authenticated as`
|
||||||
import integration.steps.given.`with no content`
|
import integration.steps.given.`with no content`
|
||||||
|
import integration.steps.then.`And the response should be null`
|
||||||
|
import integration.steps.then.`And the response should contain`
|
||||||
|
import integration.steps.then.`And the response should not be null`
|
||||||
|
import integration.steps.then.`Then the response should be`
|
||||||
|
import integration.steps.then.and
|
||||||
import io.ktor.http.HttpStatusCode.Companion.Created
|
import io.ktor.http.HttpStatusCode.Companion.Created
|
||||||
import io.ktor.http.HttpStatusCode.Companion.NoContent
|
import io.ktor.http.HttpStatusCode.Companion.NoContent
|
||||||
import io.ktor.http.HttpStatusCode.Companion.OK
|
import io.ktor.http.HttpStatusCode.Companion.OK
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
package integration
|
package integration
|
||||||
|
|
||||||
import integration.steps.then.`And the response should not be null`
|
|
||||||
import integration.steps.then.`Then the response should be`
|
|
||||||
import integration.steps.then.`and should contains`
|
|
||||||
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`
|
||||||
import integration.steps.given.`Given I have citizen`
|
import integration.steps.given.`Given I have citizen`
|
||||||
import integration.steps.given.`authenticated as`
|
import integration.steps.given.`authenticated as`
|
||||||
|
import integration.steps.then.`And the response should not be null`
|
||||||
|
import integration.steps.then.`Then the response should be`
|
||||||
|
import integration.steps.then.`and should contains`
|
||||||
import integration.steps.then.and
|
import integration.steps.then.and
|
||||||
import io.ktor.http.HttpStatusCode.Companion.NoContent
|
import io.ktor.http.HttpStatusCode.Companion.NoContent
|
||||||
import io.ktor.http.HttpStatusCode.Companion.OK
|
import io.ktor.http.HttpStatusCode.Companion.OK
|
||||||
@@ -23,15 +23,17 @@ class `Login routes` : BaseTest() {
|
|||||||
withIntegrationApplication {
|
withIntegrationApplication {
|
||||||
`Given I have citizen`("Niels", "Bohr")
|
`Given I have citizen`("Niels", "Bohr")
|
||||||
`When I send a POST request`("/login") {
|
`When I send a POST request`("/login") {
|
||||||
`with body`("""
|
`with body`(
|
||||||
|
"""
|
||||||
{
|
{
|
||||||
"username": "niels-bohr",
|
"username": "niels-bohr",
|
||||||
"password": "azerty"
|
"password": "azerty"
|
||||||
}
|
}
|
||||||
""")
|
"""
|
||||||
|
)
|
||||||
} `Then the response should be` OK and {
|
} `Then the response should be` OK and {
|
||||||
`And the response should not be null`() `and should contains` "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9."
|
`And the response should not be null`() `and should contains` "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9."
|
||||||
//TODO valid requestBody
|
// TODO valid requestBody
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -42,12 +44,14 @@ class `Login routes` : BaseTest() {
|
|||||||
`Given I have citizen`("Leonhard", "Euler", "fabrice.lecomte.be@gmail.com", id = "c606110c-ff0e-4d09-a79e-74632d7bf7bd")
|
`Given I have citizen`("Leonhard", "Euler", "fabrice.lecomte.be@gmail.com", id = "c606110c-ff0e-4d09-a79e-74632d7bf7bd")
|
||||||
`When I send a POST request`("/auth/passwordless") {
|
`When I send a POST request`("/auth/passwordless") {
|
||||||
`authenticated as`("Leonhard", "Euler")
|
`authenticated as`("Leonhard", "Euler")
|
||||||
`with body`("""
|
`with body`(
|
||||||
|
"""
|
||||||
{
|
{
|
||||||
"url": "https://dc-project.fr/password/reset",
|
"url": "https://dc-project.fr/password/reset",
|
||||||
"email": "fabrice.lecomte.be@gmail.com"
|
"email": "fabrice.lecomte.be@gmail.com"
|
||||||
}
|
}
|
||||||
""")
|
"""
|
||||||
|
)
|
||||||
} `Then the response should be` NoContent
|
} `Then the response should be` NoContent
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,18 +1,18 @@
|
|||||||
package integration
|
package integration
|
||||||
|
|
||||||
import fr.dcproject.component.citizen.database.CitizenI.Name
|
import fr.dcproject.component.citizen.database.CitizenI.Name
|
||||||
import integration.steps.then.`And the response should contain list`
|
|
||||||
import integration.steps.then.`And the response should contain`
|
|
||||||
import integration.steps.then.`Then the response should be`
|
|
||||||
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 PUT request`
|
import integration.steps.`when`.`When I send a PUT request`
|
||||||
import integration.steps.`when`.`with body`
|
import integration.steps.`when`.`with body`
|
||||||
import integration.steps.then.and
|
|
||||||
import integration.steps.given.`Given I have an opinion choice`
|
import integration.steps.given.`Given I have an opinion choice`
|
||||||
import integration.steps.given.`Given I have article`
|
import integration.steps.given.`Given I have article`
|
||||||
import integration.steps.given.`Given I have citizen`
|
import integration.steps.given.`Given I have citizen`
|
||||||
import integration.steps.given.`Given I have opinion on article`
|
import integration.steps.given.`Given I have opinion on article`
|
||||||
import integration.steps.given.`authenticated as`
|
import integration.steps.given.`authenticated as`
|
||||||
|
import integration.steps.then.`And the response should contain list`
|
||||||
|
import integration.steps.then.`And the response should contain`
|
||||||
|
import integration.steps.then.`Then the response should be`
|
||||||
|
import integration.steps.then.and
|
||||||
import io.ktor.http.HttpStatusCode.Companion.Created
|
import io.ktor.http.HttpStatusCode.Companion.Created
|
||||||
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
|
||||||
@@ -55,13 +55,15 @@ class `Opinion routes` : BaseTest() {
|
|||||||
`Given I have article`(id = "9226c1a3-8091-c3fa-7d0d-c2e98c9bee7b", createdBy = Name("Isaac", "Newton"))
|
`Given I have article`(id = "9226c1a3-8091-c3fa-7d0d-c2e98c9bee7b", createdBy = Name("Isaac", "Newton"))
|
||||||
`When I send a PUT request`("/articles/9226c1a3-8091-c3fa-7d0d-c2e98c9bee7b/opinions") {
|
`When I send a PUT request`("/articles/9226c1a3-8091-c3fa-7d0d-c2e98c9bee7b/opinions") {
|
||||||
`authenticated as`("Isaac", "Newton")
|
`authenticated as`("Isaac", "Newton")
|
||||||
`with body`("""
|
`with body`(
|
||||||
|
"""
|
||||||
{
|
{
|
||||||
"ids": [
|
"ids": [
|
||||||
"0f4f1721-3136-44f1-9f31-1459f3317b15"
|
"0f4f1721-3136-44f1-9f31-1459f3317b15"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
""")
|
"""
|
||||||
|
)
|
||||||
} `Then the response should be` Created
|
} `Then the response should be` Created
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,7 +22,8 @@ class `Register routes` : BaseTest() {
|
|||||||
fun `I can register`() {
|
fun `I can register`() {
|
||||||
withIntegrationApplication {
|
withIntegrationApplication {
|
||||||
`When I send a POST request`("/register") {
|
`When I send a POST request`("/register") {
|
||||||
`with body`("""
|
`with body`(
|
||||||
|
"""
|
||||||
{
|
{
|
||||||
"name": {"firstName":"George", "lastName":"MICHEL"},
|
"name": {"firstName":"George", "lastName":"MICHEL"},
|
||||||
"birthday": "2001-01-01",
|
"birthday": "2001-01-01",
|
||||||
@@ -32,7 +33,8 @@ class `Register routes` : BaseTest() {
|
|||||||
},
|
},
|
||||||
"email": "george-junior@gmail.com"
|
"email": "george-junior@gmail.com"
|
||||||
}
|
}
|
||||||
""")
|
"""
|
||||||
|
)
|
||||||
} `Then the response should be` OK and {
|
} `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`("$.token", "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.")
|
`And the response should contain pattern`("$.token", "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.")
|
||||||
@@ -44,7 +46,8 @@ class `Register routes` : BaseTest() {
|
|||||||
fun `I cannot register if no username was sent`() {
|
fun `I cannot register if no username was sent`() {
|
||||||
withIntegrationApplication {
|
withIntegrationApplication {
|
||||||
`When I send a POST request`("/register", Validate.ALL - Validate.REQUEST_BODY) {
|
`When I send a POST request`("/register", Validate.ALL - Validate.REQUEST_BODY) {
|
||||||
`with body`("""
|
`with body`(
|
||||||
|
"""
|
||||||
{
|
{
|
||||||
"name": {"firstName":"George2", "lastName":"MICHEL2"},
|
"name": {"firstName":"George2", "lastName":"MICHEL2"},
|
||||||
"birthday": "2001-01-01",
|
"birthday": "2001-01-01",
|
||||||
@@ -53,7 +56,8 @@ class `Register routes` : BaseTest() {
|
|||||||
},
|
},
|
||||||
"email": "george-junior@gmail.com"
|
"email": "george-junior@gmail.com"
|
||||||
}
|
}
|
||||||
""")
|
"""
|
||||||
|
)
|
||||||
} `Then the response should be` BadRequest and {
|
} `Then the response should be` BadRequest and {
|
||||||
`And the response should be null`()
|
`And the response should be null`()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,9 @@
|
|||||||
package integration
|
package integration
|
||||||
|
|
||||||
import fr.dcproject.component.citizen.database.CitizenI.Name
|
import fr.dcproject.component.citizen.database.CitizenI.Name
|
||||||
import integration.steps.then.`And the response should contain`
|
|
||||||
import integration.steps.then.`Then the response should be`
|
|
||||||
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 PUT request`
|
import integration.steps.`when`.`When I send a PUT request`
|
||||||
import integration.steps.`when`.`with body`
|
import integration.steps.`when`.`with body`
|
||||||
import integration.steps.then.and
|
|
||||||
import integration.steps.given.`Given I have article`
|
import integration.steps.given.`Given I have article`
|
||||||
import integration.steps.given.`Given I have citizen`
|
import integration.steps.given.`Given I have citizen`
|
||||||
import integration.steps.given.`Given I have comment on article`
|
import integration.steps.given.`Given I have comment on article`
|
||||||
@@ -14,6 +11,9 @@ import integration.steps.given.`Given I have constitution`
|
|||||||
import integration.steps.given.`Given I have vote +1 on article`
|
import integration.steps.given.`Given I have vote +1 on article`
|
||||||
import integration.steps.given.`Given I have vote -1 on article`
|
import integration.steps.given.`Given I have vote -1 on article`
|
||||||
import integration.steps.given.`authenticated as`
|
import integration.steps.given.`authenticated as`
|
||||||
|
import integration.steps.then.`And the response should contain`
|
||||||
|
import integration.steps.then.`Then the response should be`
|
||||||
|
import integration.steps.then.and
|
||||||
import io.ktor.http.HttpStatusCode.Companion.Created
|
import io.ktor.http.HttpStatusCode.Companion.Created
|
||||||
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
|
||||||
@@ -31,11 +31,13 @@ class `Vote routes` : BaseTest() {
|
|||||||
`Given I have article`(id = "835c5101-ca39-4038-a4e6-da6ee62ca6d5")
|
`Given I have article`(id = "835c5101-ca39-4038-a4e6-da6ee62ca6d5")
|
||||||
`When I send a PUT request`("/articles/835c5101-ca39-4038-a4e6-da6ee62ca6d5/vote") {
|
`When I send a PUT request`("/articles/835c5101-ca39-4038-a4e6-da6ee62ca6d5/vote") {
|
||||||
`authenticated as`("Thalès", "Milet")
|
`authenticated as`("Thalès", "Milet")
|
||||||
`with body`("""
|
`with body`(
|
||||||
|
"""
|
||||||
{
|
{
|
||||||
"note": 1
|
"note": 1
|
||||||
}
|
}
|
||||||
""")
|
"""
|
||||||
|
)
|
||||||
} `Then the response should be` Created
|
} `Then the response should be` Created
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -47,11 +49,13 @@ class `Vote routes` : BaseTest() {
|
|||||||
`Given I have constitution`(id = "76e79c89-efc1-492d-9e8f-dc9717363a11")
|
`Given I have constitution`(id = "76e79c89-efc1-492d-9e8f-dc9717363a11")
|
||||||
`When I send a PUT request`("/constitutions/76e79c89-efc1-492d-9e8f-dc9717363a11/vote") {
|
`When I send a PUT request`("/constitutions/76e79c89-efc1-492d-9e8f-dc9717363a11/vote") {
|
||||||
`authenticated as`("Gregor", "Mendel")
|
`authenticated as`("Gregor", "Mendel")
|
||||||
`with body`("""
|
`with body`(
|
||||||
|
"""
|
||||||
{
|
{
|
||||||
"note": 1
|
"note": 1
|
||||||
}
|
}
|
||||||
""")
|
"""
|
||||||
|
)
|
||||||
} `Then the response should be` Created
|
} `Then the response should be` Created
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -102,11 +106,13 @@ class `Vote routes` : BaseTest() {
|
|||||||
)
|
)
|
||||||
`When I send a PUT request`("/comments/e793eccc-456b-4450-a292-46d592229b74/vote") {
|
`When I send a PUT request`("/comments/e793eccc-456b-4450-a292-46d592229b74/vote") {
|
||||||
`authenticated as`("Antoine", "Lavoisier")
|
`authenticated as`("Antoine", "Lavoisier")
|
||||||
`with body`("""
|
`with body`(
|
||||||
|
"""
|
||||||
{
|
{
|
||||||
"note": -1
|
"note": -1
|
||||||
}
|
}
|
||||||
""")
|
"""
|
||||||
|
)
|
||||||
} `Then the response should be` Created and {
|
} `Then the response should be` Created and {
|
||||||
`And the response should contain`("$.down", 1)
|
`And the response should contain`("$.down", 1)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,22 +1,22 @@
|
|||||||
package integration
|
package integration
|
||||||
|
|
||||||
import fr.dcproject.component.citizen.database.CitizenI.Name
|
import fr.dcproject.component.citizen.database.CitizenI.Name
|
||||||
import integration.steps.then.`And the response should be null`
|
|
||||||
import integration.steps.then.`And the response should contain list`
|
|
||||||
import integration.steps.then.`And the response should contain`
|
|
||||||
import integration.steps.then.`Then the response should be`
|
|
||||||
import integration.steps.`when`.`When I send a DELETE request`
|
import integration.steps.`when`.`When I send a DELETE request`
|
||||||
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`.`When I send a PUT request`
|
import integration.steps.`when`.`When I send a PUT request`
|
||||||
import integration.steps.`when`.`with body`
|
import integration.steps.`when`.`with body`
|
||||||
import integration.steps.then.and
|
|
||||||
import integration.steps.given.`Given I have citizen`
|
import integration.steps.given.`Given I have citizen`
|
||||||
import integration.steps.given.`Given I have workgroup`
|
import integration.steps.given.`Given I have workgroup`
|
||||||
import integration.steps.given.`With members`
|
import integration.steps.given.`With members`
|
||||||
import integration.steps.given.`authenticated as`
|
import integration.steps.given.`authenticated as`
|
||||||
import integration.steps.given.`with no content`
|
import integration.steps.given.`with no content`
|
||||||
import integration.steps.then.`And have property`
|
import integration.steps.then.`And have property`
|
||||||
|
import integration.steps.then.`And the response should be null`
|
||||||
|
import integration.steps.then.`And the response should contain list`
|
||||||
|
import integration.steps.then.`And the response should contain`
|
||||||
|
import integration.steps.then.`Then the response should be`
|
||||||
|
import integration.steps.then.and
|
||||||
import io.ktor.http.HttpStatusCode.Companion.Created
|
import io.ktor.http.HttpStatusCode.Companion.Created
|
||||||
import io.ktor.http.HttpStatusCode.Companion.NoContent
|
import io.ktor.http.HttpStatusCode.Companion.NoContent
|
||||||
import io.ktor.http.HttpStatusCode.Companion.NotFound
|
import io.ktor.http.HttpStatusCode.Companion.NotFound
|
||||||
@@ -68,14 +68,16 @@ class `Workgroup routes` : BaseTest() {
|
|||||||
`Given I have citizen`("Werner", "Heisenberg")
|
`Given I have citizen`("Werner", "Heisenberg")
|
||||||
`When I send a POST request`("/workgroups") {
|
`When I send a POST request`("/workgroups") {
|
||||||
`authenticated as`("Werner", "Heisenberg")
|
`authenticated as`("Werner", "Heisenberg")
|
||||||
`with body`("""
|
`with body`(
|
||||||
|
"""
|
||||||
{
|
{
|
||||||
"id":"f496d86d-6654-4068-91ff-90e1dbcc5f38",
|
"id":"f496d86d-6654-4068-91ff-90e1dbcc5f38",
|
||||||
"name":"Les Bouffons",
|
"name":"Les Bouffons",
|
||||||
"description":"La vie est belle",
|
"description":"La vie est belle",
|
||||||
"anonymous":false
|
"anonymous":false
|
||||||
}
|
}
|
||||||
""")
|
"""
|
||||||
|
)
|
||||||
} `Then the response should be` Created and {
|
} `Then the response should be` Created and {
|
||||||
`And the response should contain`("$.id", "f496d86d-6654-4068-91ff-90e1dbcc5f38")
|
`And the response should contain`("$.id", "f496d86d-6654-4068-91ff-90e1dbcc5f38")
|
||||||
`And the response should contain`("$.name", "Les Bouffons")
|
`And the response should contain`("$.name", "Les Bouffons")
|
||||||
@@ -103,12 +105,14 @@ class `Workgroup routes` : BaseTest() {
|
|||||||
}
|
}
|
||||||
`When I send a PUT request`("/workgroups/aa875a24-0050-4252-9130-d37391714e26") {
|
`When I send a PUT request`("/workgroups/aa875a24-0050-4252-9130-d37391714e26") {
|
||||||
`authenticated as`("John", "Wheeler")
|
`authenticated as`("John", "Wheeler")
|
||||||
`with body`("""
|
`with body`(
|
||||||
|
"""
|
||||||
{
|
{
|
||||||
"name":"La ratatouille",
|
"name":"La ratatouille",
|
||||||
"description":"Une petite souris"
|
"description":"Une petite souris"
|
||||||
}
|
}
|
||||||
""")
|
"""
|
||||||
|
)
|
||||||
} `Then the response should be` OK and {
|
} `Then the response should be` OK and {
|
||||||
`And the response should contain`("$.id", "aa875a24-0050-4252-9130-d37391714e26")
|
`And the response should contain`("$.id", "aa875a24-0050-4252-9130-d37391714e26")
|
||||||
`And the response should contain`("$.name", "La ratatouille")
|
`And the response should contain`("$.name", "La ratatouille")
|
||||||
@@ -171,7 +175,8 @@ class `Workgroup routes` : BaseTest() {
|
|||||||
`Given I have workgroup`("b0ea1922-3bc6-44e2-aa7c-40158998cfbb", createdBy = Name("Blaise", "Pascal"))
|
`Given I have workgroup`("b0ea1922-3bc6-44e2-aa7c-40158998cfbb", createdBy = Name("Blaise", "Pascal"))
|
||||||
`When I send a POST request`("/workgroups/b0ea1922-3bc6-44e2-aa7c-40158998cfbb/members") {
|
`When I send a POST request`("/workgroups/b0ea1922-3bc6-44e2-aa7c-40158998cfbb/members") {
|
||||||
`authenticated as`("Blaise", "Pascal")
|
`authenticated as`("Blaise", "Pascal")
|
||||||
`with body`("""
|
`with body`(
|
||||||
|
"""
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
"citizen": {"id":"6d883fe7-5fc0-4a50-8858-72230673eba4"},
|
"citizen": {"id":"6d883fe7-5fc0-4a50-8858-72230673eba4"},
|
||||||
@@ -182,7 +187,8 @@ class `Workgroup routes` : BaseTest() {
|
|||||||
"roles": ["MASTER"]
|
"roles": ["MASTER"]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
""")
|
"""
|
||||||
|
)
|
||||||
} `Then the response should be` Created
|
} `Then the response should be` Created
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -231,7 +237,8 @@ class `Workgroup routes` : BaseTest() {
|
|||||||
}
|
}
|
||||||
`When I send a PUT request`("/workgroups/784fe6bc-7635-4ae2-b080-3a4743b998bf/members") {
|
`When I send a PUT request`("/workgroups/784fe6bc-7635-4ae2-b080-3a4743b998bf/members") {
|
||||||
`authenticated as`("Leon", "Foucault")
|
`authenticated as`("Leon", "Foucault")
|
||||||
`with body`("""
|
`with body`(
|
||||||
|
"""
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
"citizen": {"id":"be3b0926-8628-4426-804a-75188a6eb315"},
|
"citizen": {"id":"be3b0926-8628-4426-804a-75188a6eb315"},
|
||||||
@@ -242,7 +249,8 @@ class `Workgroup routes` : BaseTest() {
|
|||||||
"roles": ["MASTER"]
|
"roles": ["MASTER"]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
""")
|
"""
|
||||||
|
)
|
||||||
} `Then the response should be` OK and {
|
} `Then the response should be` OK and {
|
||||||
`And the response should contain list`("$", 2, 2)
|
`And the response should contain list`("$", 2, 2)
|
||||||
`And the response should contain`("$.[0]citizen.id", "be3b0926-8628-4426-804a-75188a6eb315")
|
`And the response should contain`("$.[0]citizen.id", "be3b0926-8628-4426-804a-75188a6eb315")
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ fun Schema.validate(api: OpenApi3, toValidate: JsonNode) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun TestApplicationResponse.operation(route: String? = null, callback: Operation.(OpenApi3, String) -> Unit): Operation {
|
fun TestApplicationResponse.operation(route: String? = null, callback: Operation.(OpenApi3, String) -> Unit): Operation {
|
||||||
val filePath = "/openapi2.yaml"
|
val filePath = "/openapi.yaml"
|
||||||
return OpenApi3Parser().parse(File(filePath.getResource().toURI()), true).let { api: OpenApi3 ->
|
return OpenApi3Parser().parse(File(filePath.getResource().toURI()), true).let { api: OpenApi3 ->
|
||||||
val httpMethod = call.request.httpMethod
|
val httpMethod = call.request.httpMethod
|
||||||
val uri = route ?: "/" + Url(call.request.uri).encodedPath
|
val uri = route ?: "/" + Url(call.request.uri).encodedPath
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ import fr.dcproject.component.citizen.database.CitizenCreator
|
|||||||
import fr.dcproject.component.citizen.database.CitizenI
|
import fr.dcproject.component.citizen.database.CitizenI
|
||||||
import fr.dcproject.component.vote.VoteAccessControl
|
import fr.dcproject.component.vote.VoteAccessControl
|
||||||
import fr.dcproject.component.vote.database.VoteForUpdate
|
import fr.dcproject.component.vote.database.VoteForUpdate
|
||||||
|
import fr.dcproject.component.vote.database.VoteForView
|
||||||
import org.amshove.kluent.`should be`
|
import org.amshove.kluent.`should be`
|
||||||
import org.joda.time.DateTime
|
import org.joda.time.DateTime
|
||||||
import org.junit.jupiter.api.Tag
|
import org.junit.jupiter.api.Tag
|
||||||
@@ -20,7 +21,6 @@ import org.junit.jupiter.api.TestInstance
|
|||||||
import org.junit.jupiter.api.parallel.Execution
|
import org.junit.jupiter.api.parallel.Execution
|
||||||
import org.junit.jupiter.api.parallel.ExecutionMode.CONCURRENT
|
import org.junit.jupiter.api.parallel.ExecutionMode.CONCURRENT
|
||||||
import java.util.UUID
|
import java.util.UUID
|
||||||
import fr.dcproject.component.vote.database.VoteForView
|
|
||||||
|
|
||||||
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
|
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
|
||||||
@Execution(CONCURRENT)
|
@Execution(CONCURRENT)
|
||||||
|
|||||||
Reference in New Issue
Block a user