File tree Expand file tree Collapse file tree 6 files changed +104
-7
lines changed
authentication-service/src/test/kotlin/com/expedia/authentication Expand file tree Collapse file tree 6 files changed +104
-7
lines changed Original file line number Diff line number Diff 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}
Original file line number Diff line number Diff line change 11package com.expedia.authentication.acceptance.user
22
3+ import com.expedia.authentication.payload.createUserPayloads
34import io.restassured.RestAssured
45import io.restassured.response.ExtractableResponse
56import io.restassured.response.Response
@@ -8,15 +9,11 @@ import org.springframework.http.HttpStatus
89import 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 number Diff line number Diff line change 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 number Diff line number Diff line change 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 number Diff line number Diff line change 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 number Diff line number Diff line change 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+ }
You can’t perform that action at this time.
0 commit comments