generated from pricelees/issue-pr-template
[#34] 회원 / 인증 도메인 재정의 #43
@ -7,8 +7,12 @@ import io.swagger.v3.oas.annotations.tags.Tag
|
||||
import jakarta.validation.Valid
|
||||
import org.springframework.http.ResponseEntity
|
||||
import org.springframework.web.bind.annotation.RequestBody
|
||||
import roomescape.auth.web.support.CurrentUser
|
||||
import roomescape.auth.web.support.Public
|
||||
import roomescape.auth.web.support.UserOnly
|
||||
import roomescape.common.dto.CurrentUserContext
|
||||
import roomescape.common.dto.response.CommonApiResponse
|
||||
import roomescape.member.web.UserContactRetrieveResponse
|
||||
import roomescape.member.web.UserCreateRequest
|
||||
import roomescape.member.web.UserCreateResponse
|
||||
|
||||
@ -27,4 +31,18 @@ interface UserAPI {
|
||||
fun signup(
|
||||
@Valid @RequestBody request: UserCreateRequest
|
||||
): ResponseEntity<CommonApiResponse<UserCreateResponse>>
|
||||
|
||||
@UserOnly
|
||||
@Operation(summary = "회원 가입")
|
||||
@ApiResponses(
|
||||
ApiResponse(
|
||||
responseCode = "200",
|
||||
description = "성공",
|
||||
useReturnTypeSchema = true
|
||||
)
|
||||
)
|
||||
fun findContact(
|
||||
@CurrentUser user: CurrentUserContext
|
||||
): ResponseEntity<CommonApiResponse<UserContactRetrieveResponse>>
|
||||
|
||||
}
|
||||
|
||||
@ -2,9 +2,12 @@ package roomescape.member.web
|
||||
|
||||
import jakarta.validation.Valid
|
||||
import org.springframework.http.ResponseEntity
|
||||
import org.springframework.web.bind.annotation.GetMapping
|
||||
import org.springframework.web.bind.annotation.PostMapping
|
||||
import org.springframework.web.bind.annotation.RequestBody
|
||||
import org.springframework.web.bind.annotation.RestController
|
||||
import roomescape.auth.web.support.CurrentUser
|
||||
import roomescape.common.dto.CurrentUserContext
|
||||
import roomescape.common.dto.response.CommonApiResponse
|
||||
import roomescape.member.business.UserService
|
||||
import roomescape.member.docs.UserAPI
|
||||
@ -22,4 +25,13 @@ class UserController(
|
||||
|
||||
return ResponseEntity.ok(CommonApiResponse(response))
|
||||
}
|
||||
|
||||
@GetMapping("/users/contact")
|
||||
override fun findContact(
|
||||
@CurrentUser user: CurrentUserContext
|
||||
): ResponseEntity<CommonApiResponse<UserContactRetrieveResponse>> {
|
||||
val response = userService.findContactById(user.id)
|
||||
|
||||
return ResponseEntity.ok(CommonApiResponse(response))
|
||||
}
|
||||
}
|
||||
|
||||
@ -8,8 +8,10 @@ import io.restassured.module.kotlin.extensions.Then
|
||||
import io.restassured.module.kotlin.extensions.When
|
||||
import org.hamcrest.CoreMatchers.equalTo
|
||||
import org.springframework.data.repository.findByIdOrNull
|
||||
import org.springframework.http.HttpMethod
|
||||
import org.springframework.http.HttpStatus
|
||||
import org.springframework.http.MediaType
|
||||
import roomescape.auth.exception.AuthErrorCode
|
||||
import roomescape.common.exception.CommonErrorCode
|
||||
import roomescape.member.business.SIGNUP
|
||||
import roomescape.member.exception.UserErrorCode
|
||||
@ -18,6 +20,7 @@ import roomescape.member.web.MIN_PASSWORD_LENGTH
|
||||
import roomescape.member.web.UserCreateRequest
|
||||
import roomescape.supports.FunSpecSpringbootTest
|
||||
import roomescape.supports.UserFixture
|
||||
import roomescape.supports.runExceptionTest
|
||||
import roomescape.supports.runTest
|
||||
|
||||
class UserApiTest(
|
||||
@ -127,6 +130,47 @@ class UserApiTest(
|
||||
test("빈 전화번호") { runCommonTest(commonRequest.copy(phone = "")) }
|
||||
}
|
||||
}
|
||||
|
||||
context("회원의 연락처 정보를 조회한다.") {
|
||||
val endpoint = "/users/contact"
|
||||
|
||||
context("권한이 없으면 접근할 수 없다.") {
|
||||
test("비회원") {
|
||||
runExceptionTest(
|
||||
method = HttpMethod.GET,
|
||||
endpoint = endpoint,
|
||||
expectedErrorCode = AuthErrorCode.TOKEN_NOT_FOUND
|
||||
)
|
||||
}
|
||||
|
||||
test("관리자") {
|
||||
runExceptionTest(
|
||||
token = authUtil.defaultAdminLogin(),
|
||||
method = HttpMethod.GET,
|
||||
endpoint = endpoint,
|
||||
expectedErrorCode = AuthErrorCode.ACCESS_DENIED
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
test("정상 응답") {
|
||||
val user = authUtil.defaultUser()
|
||||
val token = authUtil.userLogin(user)
|
||||
|
||||
runTest(
|
||||
token = token,
|
||||
on = {
|
||||
get(endpoint)
|
||||
},
|
||||
expect = {
|
||||
statusCode(HttpStatus.OK.value())
|
||||
body("data.id", equalTo(user.id))
|
||||
body("data.name", equalTo(user.name))
|
||||
body("data.phone", equalTo(user.phone))
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun signup(request: UserCreateRequest): UserEntity {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user