Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@ import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest
import org.springframework.http.MediaType
import org.springframework.restdocs.ManualRestDocumentation
import org.springframework.restdocs.mockmvc.MockMvcRestDocumentation
import org.springframework.restdocs.mockmvc.MockMvcRestDocumentation.document
import org.springframework.restdocs.mockmvc.RestDocumentationRequestBuilders.post
import org.springframework.test.web.servlet.result.MockMvcResultMatchers.status
import org.springframework.test.web.servlet.setup.MockMvcBuilders
Expand Down Expand Up @@ -65,13 +64,11 @@ class AppleLoginControllerTest : BehaviorSpec({
.param("code", code)
.param("clientToken", clientToken)
).andExpect(status().isOk)
.andDo(
document(
"apple-login",
requestParameters(
"code" parameterTypeOf STRING parameterMeans "애플에서 제공해주는 인증 코드",
"clientToken" parameterTypeOf STRING parameterMeans "FCM Token"
)
.andDocument(
"apple-login",
requestParameters(
"code" parameterTypeOf STRING parameterMeans "애플에서 제공해주는 인증 코드",
"clientToken" parameterTypeOf STRING parameterMeans "FCM Token"
)
).andReturn()

Expand All @@ -91,15 +88,13 @@ class AppleLoginControllerTest : BehaviorSpec({
.content(refreshTokenRequest.toRequest())
.contentType(MediaType.APPLICATION_JSON)
).andExpect(status().isOk)
.andDo(
document(
"apple-relogin",
requestFields(
"refreshToken" typeOf STRING means "Apple의 RefreshToken"
),
responseFields(
"idToken" typeOf STRING means "Apple의 JWT Token"
)
.andDocument(
"apple-relogin",
requestFields(
"refreshToken" typeOf STRING means "Apple의 RefreshToken"
),
responseFields(
"idToken" typeOf STRING means "Apple의 JWT Token"
)
).andReturn()

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule
import com.fasterxml.jackson.module.kotlin.KotlinModule
import io.junseok.todeveloperdo.oauth.apple.service.AppleMemberService
import io.junseok.todeveloperdo.util.ObjectMappers
import io.junseok.todeveloperdo.util.dsl.andDocument
import io.junseok.todeveloperdo.util.dsl.authorizationHeader
import io.junseok.todeveloperdo.util.setAuthorization
import io.kotest.core.spec.style.BehaviorSpec
Expand All @@ -13,7 +14,6 @@ import org.springframework.boot.test.autoconfigure.restdocs.AutoConfigureRestDoc
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest
import org.springframework.restdocs.ManualRestDocumentation
import org.springframework.restdocs.mockmvc.MockMvcRestDocumentation
import org.springframework.restdocs.mockmvc.MockMvcRestDocumentation.document
import org.springframework.restdocs.mockmvc.RestDocumentationRequestBuilders.post
import org.springframework.test.web.servlet.result.MockMvcResultMatchers.status
import org.springframework.test.web.servlet.setup.MockMvcBuilders
Expand Down Expand Up @@ -53,11 +53,9 @@ class AppleRevokeControllerTest : BehaviorSpec({
post(APPLE_REVOKE)
.setAuthorization()
).andExpect(status().isOk)
.andDo(
document(
"revoke-apple",
authorizationHeader()
)
.andDocument(
"revoke-apple",
authorizationHeader()
)

verify(exactly = 1) { appleMemberService.revoke("username") }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest
import org.springframework.http.MediaType
import org.springframework.restdocs.ManualRestDocumentation
import org.springframework.restdocs.mockmvc.MockMvcRestDocumentation
import org.springframework.restdocs.mockmvc.MockMvcRestDocumentation.document
import org.springframework.restdocs.mockmvc.RestDocumentationRequestBuilders.get
import org.springframework.restdocs.mockmvc.RestDocumentationRequestBuilders.post
import org.springframework.test.web.servlet.result.MockMvcResultMatchers.status
Expand Down Expand Up @@ -65,22 +64,20 @@ class GitHubControllerTest : BehaviorSpec({
.content(gitHubRequest.toRequest())
.contentType(MediaType.APPLICATION_JSON)
).andExpect(status().isOk)
.andDo(
document(
"github-repo-create",
authorizationHeader(),
requestFields(
"repoName" typeOf STRING means "레포 이름",
"description" typeOf STRING means "레포 설명 글",
"isPrivate" typeOf BOOLEAN means "레포 공개 유무(true면 비공개)"
),
responseFields(
"id" typeOf NUMBER means "레포 고유 ID",
"name" typeOf STRING means "레포 이름",
"full_name" typeOf STRING means "owner/repo-name 형식의 전체 이름",
"owner" typeOf OBJECT means "Owner객체",
"owner.login" typeOf STRING means "깃허브 사용자"
)
.andDocument(
"github-repo-create",
authorizationHeader(),
requestFields(
"repoName" typeOf STRING means "레포 이름",
"description" typeOf STRING means "레포 설명 글",
"isPrivate" typeOf BOOLEAN means "레포 공개 유무(true면 비공개)"
),
responseFields(
"id" typeOf NUMBER means "레포 고유 ID",
"name" typeOf STRING means "레포 이름",
"full_name" typeOf STRING means "owner/repo-name 형식의 전체 이름",
"owner" typeOf OBJECT means "Owner객체",
"owner.login" typeOf STRING means "깃허브 사용자"
)
).andReturn()

Expand All @@ -97,12 +94,11 @@ class GitHubControllerTest : BehaviorSpec({
get(GITHUB_PATH + "check")
.setAuthorization()
).andExpect(status().isOk)
.andDo(
document(
"check-git-link",
authorizationHeader()
)
.andDocument(
"check-git-link",
authorizationHeader()
)

verify(exactly = 1) { gitHubService.checkGitLink("username") }
}
}
Expand All @@ -120,17 +116,16 @@ class GitHubControllerTest : BehaviorSpec({
.content(payload.toRequest())
.contentType(MediaType.APPLICATION_JSON)
).andExpect(status().isOk)
.andDo(
document(
"setting-git-webhook",
requestFields(
"key" typeOf STRING means "페이로드 내 key 값"
),
requestHeaders(
"X-GitHub-Event" headerTypeOf STRING means "Github 이벤트 종류"
)
.andDocument(
"setting-git-webhook",
requestFields(
"key" typeOf STRING means "페이로드 내 key 값"
),
requestHeaders(
"X-GitHub-Event" headerTypeOf STRING means "Github 이벤트 종류"
)
)

verify(exactly = 1) { gitHubService.webhookProcess(payload, event) }
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import io.junseok.todeveloperdo.oauth.git.service.GitHubOAuthService
import io.junseok.todeveloperdo.oauth.git.service.createGitTokenResponse
import io.junseok.todeveloperdo.util.ObjectMappers
import io.junseok.todeveloperdo.util.dsl.STRING
import io.junseok.todeveloperdo.util.dsl.andDocument
import io.junseok.todeveloperdo.util.dsl.parameterTypeOf
import io.junseok.todeveloperdo.util.dsl.requestParameters
import io.kotest.core.spec.style.BehaviorSpec
Expand All @@ -17,7 +18,6 @@ import org.springframework.boot.test.autoconfigure.restdocs.AutoConfigureRestDoc
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest
import org.springframework.restdocs.ManualRestDocumentation
import org.springframework.restdocs.mockmvc.MockMvcRestDocumentation
import org.springframework.restdocs.mockmvc.MockMvcRestDocumentation.document
import org.springframework.restdocs.mockmvc.RestDocumentationRequestBuilders.get
import org.springframework.test.web.servlet.result.MockMvcResultMatchers.header
import org.springframework.test.web.servlet.result.MockMvcResultMatchers.status
Expand Down Expand Up @@ -69,13 +69,10 @@ class LoginControllerTest : BehaviorSpec({
startsWith("https://github.com/login/oauth/authorize")
)
)

.andDo(
document(
"redirect-to-github",
requestParameters(
"appleId" parameterTypeOf STRING parameterMeans "애플 ID"
)
.andDocument(
"redirect-to-github",
requestParameters(
"appleId" parameterTypeOf STRING parameterMeans "애플 ID"
)
)
}
Expand All @@ -86,26 +83,30 @@ class LoginControllerTest : BehaviorSpec({
val tokenResponse = createGitTokenResponse()
val code = "code"
val appleId = "appleId"
every { gitHubOAuthService.processGitHubOAuth(code,appleId) } returns tokenResponse
every { gitHubOAuthService.processGitHubOAuth(code, appleId) } returns tokenResponse

When("GET /login/oauth2/code/github 요청") {
Then("딥링크로 리디렉션되고 토큰이 포함된다") {
mockMvc.perform(
get("/login/oauth2/code/github")
.param("code",code)
.param("state",appleId)
) .andExpect(status().is3xxRedirection)
.andExpect(header().string("Location", "myapp://callback?token=${tokenResponse.token}"))
.andDo(
document(
"callback-from-github",
requestParameters(
"code" parameterTypeOf STRING parameterMeans "GitHub에서 전달된 인증 코드",
"state" parameterTypeOf STRING parameterMeans "초기 로그인 시 전달한 Apple ID"
)
.param("code", code)
.param("state", appleId)
).andExpect(status().is3xxRedirection)
.andExpect(
header().string(
"Location",
"myapp://callback?token=${tokenResponse.token}"
)
)
.andDocument(
"callback-from-github",
requestParameters(
"code" parameterTypeOf STRING parameterMeans "GitHub에서 전달된 인증 코드",
"state" parameterTypeOf STRING parameterMeans "초기 로그인 시 전달한 Apple ID"
)
)
verify(exactly = 1) { gitHubOAuthService.processGitHubOAuth(code,appleId) }

verify(exactly = 1) { gitHubOAuthService.processGitHubOAuth(code, appleId) }
}
}
}
Expand Down
Loading
Loading