File tree 6 files changed +104
-7
lines changed
authentication-service/src/test/kotlin/com/expedia/authentication
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() {
7
7
8
8
@Test
9
9
fun `회원 가입을 한다` () {
10
- val response
= `회원 생성 요청`(
" [email protected] " , " jungho " )
10
+ val response = `회원 생성 요청`()
11
11
`회원이 생성 됨`(response)
12
12
}
13
13
}
Original file line number Diff line number Diff line change 1
1
package com.expedia.authentication.acceptance.user
2
2
3
+ import com.expedia.authentication.payload.createUserPayloads
3
4
import io.restassured.RestAssured
4
5
import io.restassured.response.ExtractableResponse
5
6
import io.restassured.response.Response
@@ -8,15 +9,11 @@ import org.springframework.http.HttpStatus
8
9
import org.springframework.http.MediaType
9
10
10
11
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 > {
16
13
return RestAssured
17
14
.given().log().all()
18
15
.contentType(MediaType .APPLICATION_JSON_VALUE )
19
- .body(params )
16
+ .body(createUserPayloads() )
20
17
.`when `().post(" /users" )
21
18
.then().log().all().extract()
22
19
}
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