Skip to content

Commit e7c8d9d

Browse files
authored
feature/유저회원가입-documentation
feature/유저회원가입-documentation
2 parents ebd8a11 + 45a7997 commit e7c8d9d

File tree

6 files changed

+104
-7
lines changed

6 files changed

+104
-7
lines changed

authentication-service/src/test/kotlin/com/expedia/authentication/acceptance/user/UserAcceptanceTest.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ internal class UserAcceptanceTest: AcceptanceTest() {
77

88
@Test
99
fun `회원 가입을 한다`() {
10-
val response = `회원 생성 요청`("[email protected]", "jungho")
10+
val response = `회원 생성 요청`()
1111
`회원이 생성 됨`(response)
1212
}
1313
}

authentication-service/src/test/kotlin/com/expedia/authentication/acceptance/user/UserSteps.kt

+3-6
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.expedia.authentication.acceptance.user
22

3+
import com.expedia.authentication.payload.createUserPayloads
34
import io.restassured.RestAssured
45
import io.restassured.response.ExtractableResponse
56
import io.restassured.response.Response
@@ -8,15 +9,11 @@ import org.springframework.http.HttpStatus
89
import org.springframework.http.MediaType
910

1011

11-
internal fun `회원 생성 요청`(email: String, password: String): ExtractableResponse<Response> {
12-
val params: MutableMap<String, String> = HashMap()
13-
params["email"] = email
14-
params["password"] = password
15-
12+
internal fun `회원 생성 요청`(): ExtractableResponse<Response> {
1613
return RestAssured
1714
.given().log().all()
1815
.contentType(MediaType.APPLICATION_JSON_VALUE)
19-
.body(params)
16+
.body(createUserPayloads())
2017
.`when`().post("/users")
2118
.then().log().all().extract()
2219
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package com.expedia.authentication.documentation
2+
3+
import io.restassured.RestAssured
4+
import io.restassured.builder.RequestSpecBuilder
5+
import io.restassured.specification.RequestSpecification
6+
import org.junit.jupiter.api.extension.ExtendWith
7+
import org.springframework.boot.test.context.SpringBootTest
8+
import org.springframework.boot.web.server.LocalServerPort
9+
import org.springframework.restdocs.RestDocumentationContextProvider
10+
import org.springframework.restdocs.RestDocumentationExtension
11+
import org.springframework.restdocs.operation.preprocess.Preprocessors.prettyPrint
12+
import org.springframework.restdocs.restassured3.RestAssuredRestDocumentation.documentationConfiguration
13+
14+
15+
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
16+
@ExtendWith(RestDocumentationExtension::class)
17+
internal class Documentation {
18+
19+
@LocalServerPort
20+
lateinit var port: String
21+
22+
protected lateinit var spec: RequestSpecification
23+
24+
fun setUp(documentation: RestDocumentationContextProvider) {
25+
RestAssured.port = port.toInt()
26+
this.spec = RequestSpecBuilder()
27+
.addFilter(documentationConfiguration(documentation)
28+
.operationPreprocessors()
29+
.withRequestDefaults(prettyPrint())
30+
.withResponseDefaults(prettyPrint()))
31+
.build()
32+
}
33+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package com.expedia.authentication.documentation.user
2+
3+
import org.springframework.http.HttpHeaders
4+
import org.springframework.http.MediaType
5+
import org.springframework.restdocs.headers.HeaderDocumentation.headerWithName
6+
import org.springframework.restdocs.headers.HeaderDocumentation.requestHeaders
7+
import org.springframework.restdocs.payload.PayloadDocumentation.fieldWithPath
8+
import org.springframework.restdocs.payload.PayloadDocumentation.responseFields
9+
import org.springframework.restdocs.restassured3.RestAssuredRestDocumentation.document
10+
import org.springframework.restdocs.restassured3.RestDocumentationFilter
11+
12+
class DocumentationFilter {
13+
companion object {
14+
fun `회원 생성`(): RestDocumentationFilter {
15+
return document("createUser",
16+
requestHeaders(
17+
headerWithName(HttpHeaders.CONTENT_TYPE).description(MediaType.APPLICATION_JSON_VALUE)
18+
),
19+
responseFields(
20+
fieldWithPath("email").description("이메일"),
21+
fieldWithPath("password").description("패스워드"),
22+
)
23+
)
24+
}
25+
}
26+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package com.expedia.authentication.documentation.user
2+
3+
import com.expedia.authentication.documentation.Documentation
4+
import com.expedia.authentication.payload.createUserPayloads
5+
import io.restassured.RestAssured
6+
import io.restassured.response.ExtractableResponse
7+
import io.restassured.response.Response
8+
import io.restassured.specification.RequestSpecification
9+
import org.assertj.core.api.Assertions.assertThat
10+
import org.junit.jupiter.api.Test
11+
import org.springframework.http.HttpStatus
12+
import org.springframework.http.MediaType
13+
14+
internal class UserDocumentation: Documentation() {
15+
16+
@Test
17+
fun `회원 가입을 한다`() {
18+
val response = `회원 생성 요청`(spec)
19+
`회원이 생성 됨`(response)
20+
}
21+
}
22+
23+
internal fun `회원 생성 요청`(spec: RequestSpecification): ExtractableResponse<Response> {
24+
return RestAssured
25+
.given(spec).log().all()
26+
.filter(DocumentationFilter.`회원 생성`())
27+
.contentType(MediaType.APPLICATION_JSON_VALUE)
28+
.body(createUserPayloads())
29+
.`when`().post("/users")
30+
.then().log().all().extract()
31+
}
32+
33+
internal fun `회원이 생성 됨`(response: ExtractableResponse<Response>) =
34+
assertThat(response.statusCode()).isEqualTo(HttpStatus.CREATED.value())
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package com.expedia.authentication.payload
2+
3+
fun createUserPayloads() {
4+
val params: MutableMap<String, String> = HashMap()
5+
params["email"] = "[email protected]"
6+
params["password"] = "1234"
7+
}

0 commit comments

Comments
 (0)