Refactor cucumber steps

This commit is contained in:
2019-08-26 17:11:38 +02:00
parent 0e50921a0a
commit adba5a5aad
4 changed files with 49 additions and 39 deletions

View File

@@ -14,8 +14,9 @@ import org.koin.test.KoinTest
import org.koin.test.get import org.koin.test.get
import org.koin.test.inject import org.koin.test.inject
import java.util.* import java.util.*
import java.util.concurrent.CompletionException
import kotlin.random.Random import kotlin.random.Random
import fr.dcproject.repository.User as UserRepository import fr.dcproject.repository.Citizen as CitizenRepository
class KtorServerAuthSteps: En, KoinTest { class KtorServerAuthSteps: En, KoinTest {
private val requester: Requester by inject() private val requester: Requester by inject()
@@ -38,19 +39,53 @@ class KtorServerAuthSteps: En, KoinTest {
.selectOne(citizen) .selectOne(citizen)
} }
Given("I am authenticated as an user") { Given("I am authenticated as {word} {word} with id {string}") { firstName: String, lastName: String, id: String ->
val id = UUID.randomUUID()
val jwtAsString: String = JWT.create() val jwtAsString: String = JWT.create()
.withIssuer("dc-project.fr") .withIssuer("dc-project.fr")
.withClaim("id", id.toString()) .withClaim("id", id)
.sign(Algorithm.HMAC512(JwtConfig.secret)) .sign(Algorithm.HMAC512(JwtConfig.secret))
val user = User(id = id, username = "user", plainPassword = "azerty") val user = User(
get<UserRepository>().insert(user) id = UUID.fromString(id),
username = "$firstName-$lastName".toLowerCase(),
plainPassword = "azerty"
)
val citizen = Citizen(
id = UUID.fromString(id),
name = Citizen.Name(firstName, lastName),
birthday = DateTime.now(),
user = user
)
try {
get<CitizenRepository>().insertWithUser(citizen)
} catch (e: CompletionException) {
// Nothing
}
KtorServerContext.defaultServer.addPreRequestSetup { KtorServerContext.defaultServer.addPreRequestSetup {
addHeader(HttpHeaders.Authorization, "Bearer $jwtAsString") addHeader(HttpHeaders.Authorization, "Bearer $jwtAsString")
} }
} }
Given("I have citizen {word} {word} with id {string}") { firstName: String, lastName: String, id: String ->
val user = User(
id = UUID.randomUUID(),
username = "$firstName-$lastName".toLowerCase(),
plainPassword = "azerty"
)
val citizen = Citizen(
id = UUID.fromString(id),
name = Citizen.Name(firstName, lastName),
birthday = DateTime.now(),
user = user
)
try {
get<CitizenRepository>().insertWithUser(citizen)
} catch (e: CompletionException) {
// Nothing
}
}
} }
} }

View File

@@ -11,11 +11,7 @@ Feature: articles routes
| id | 9226c1a3-8091-c3fa-7d0d-c2e98c9bee7b | | id | 9226c1a3-8091-c3fa-7d0d-c2e98c9bee7b |
Scenario: The route for create article must response a 200 and return object Scenario: The route for create article must response a 200 and return object
Given I have citizen: Given I am authenticated as John Doe with id "64b7b379-2298-43ec-b428-ba134930cabd"
| id | 64b7b379-2298-43ec-b428-ba134930cabd |
| firstName | Jaque |
| lastName | Dupuis |
And I am authenticated as an user
When I send a POST request to "/articles" with body: When I send a POST request to "/articles" with body:
""" """
{ {

View File

@@ -11,10 +11,7 @@ Feature: constitution routes
| id | 0ca489a6-ef68-8bd5-2355-5793d4b3d66c | | id | 0ca489a6-ef68-8bd5-2355-5793d4b3d66c |
Scenario: The route for create constitution must response a 200 and return object Scenario: The route for create constitution must response a 200 and return object
Given I have citizen: Given I have citizen John Doe with id "64b7b379-2298-43ec-b428-ba134930cabd"
| id | 64b7b379-2298-43ec-b428-ba134930cabd |
| firstName | Jaque |
| lastName | Dupuis |
When I send a POST request to "/constitutions" with body: When I send a POST request to "/constitutions" with body:
""" """
{ {

View File

@@ -2,18 +2,12 @@ Feature: follow Article and Constitution
# Article # Article
Scenario: The route for follow article must response a 201 and return object Scenario: The route for follow article must response a 201 and return object
Given I have citizen: Given I have citizen John Doe with id "64b7b379-2298-43ec-b428-ba134930cabd"
| id | 64b7b379-2298-43ec-b428-ba134930cabd |
| firstName | Jaque |
| lastName | Dupuis |
When I send a POST request to "/articles/9226c1a3-8091-c3fa-7d0d-c2e98c9bee7b/follow" When I send a POST request to "/articles/9226c1a3-8091-c3fa-7d0d-c2e98c9bee7b/follow"
Then the response status code should be 201 Then the response status code should be 201
Scenario: The route for get follows of articles must response a 200 and return objects Scenario: The route for get follows of articles must response a 200 and return objects
Given I have citizen: Given I have citizen John Doe with id "64b7b379-2298-43ec-b428-ba134930cabd"
| id | 64b7b379-2298-43ec-b428-ba134930cabd |
| firstName | Jaque |
| lastName | Dupuis |
When I send a GET request to "/citizens/64b7b379-2298-43ec-b428-ba134930cabd/follows/articles" When I send a GET request to "/citizens/64b7b379-2298-43ec-b428-ba134930cabd/follows/articles"
Then the response status code should be 200 Then the response status code should be 200
And the response should contain object: And the response should contain object:
@@ -21,27 +15,18 @@ Feature: follow Article and Constitution
| limit | 50 | | limit | 50 |
Scenario: The route for unfollow article must response a 204 Scenario: The route for unfollow article must response a 204
Given I have citizen: Given I have citizen John Doe with id "64b7b379-2298-43ec-b428-ba134930cabd"
| id | 64b7b379-2298-43ec-b428-ba134930cabd |
| firstName | Jaque |
| lastName | Dupuis |
When I send a DELETE request to "/articles/9226c1a3-8091-c3fa-7d0d-c2e98c9bee7b/follow" When I send a DELETE request to "/articles/9226c1a3-8091-c3fa-7d0d-c2e98c9bee7b/follow"
Then the response status code should be 204 Then the response status code should be 204
# Constitution # Constitution
Scenario: The route for follow constitution must response a 201 and return object Scenario: The route for follow constitution must response a 201 and return object
Given I have citizen: Given I have citizen John Doe with id "64b7b379-2298-43ec-b428-ba134930cabd"
| id | 64b7b379-2298-43ec-b428-ba134930cabd |
| firstName | Jaque |
| lastName | Dupuis |
When I send a POST request to "/constitutions/72aa1ee1-4963-eb44-c9e0-5ce6e0f18f00/follow" When I send a POST request to "/constitutions/72aa1ee1-4963-eb44-c9e0-5ce6e0f18f00/follow"
Then the response status code should be 201 Then the response status code should be 201
Scenario: The route for get follows of constitutions must response a 200 and return objects Scenario: The route for get follows of constitutions must response a 200 and return objects
Given I have citizen: Given I have citizen John Doe with id "64b7b379-2298-43ec-b428-ba134930cabd"
| id | 64b7b379-2298-43ec-b428-ba134930cabd |
| firstName | Jaque |
| lastName | Dupuis |
When I send a GET request to "/citizens/64b7b379-2298-43ec-b428-ba134930cabd/follows/constitutions" When I send a GET request to "/citizens/64b7b379-2298-43ec-b428-ba134930cabd/follows/constitutions"
Then the response status code should be 200 Then the response status code should be 200
And the response should contain object: And the response should contain object:
@@ -49,9 +34,6 @@ Feature: follow Article and Constitution
| limit | 50 | | limit | 50 |
Scenario: The route for unfollow constitution must response a 204 Scenario: The route for unfollow constitution must response a 204
Given I have citizen: Given I have citizen John Doe with id "64b7b379-2298-43ec-b428-ba134930cabd"
| id | 64b7b379-2298-43ec-b428-ba134930cabd |
| firstName | Jaque |
| lastName | Dupuis |
When I send a DELETE request to "/constitutions/72aa1ee1-4963-eb44-c9e0-5ce6e0f18f00/follow" When I send a DELETE request to "/constitutions/72aa1ee1-4963-eb44-c9e0-5ce6e0f18f00/follow"
Then the response status code should be 204 Then the response status code should be 204