Skip to content

Commit a97a396

Browse files
committed
Make sure we check password before continue
1 parent fef0567 commit a97a396

4 files changed

Lines changed: 22 additions & 5 deletions

File tree

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.mptsix.todaydiary.data.request
22

33
data class PasswordChangeRequest(
4+
var previousPassword: String,
45
var userPassword: String // 바꾸고 싶은 비밀번호
56
)

src/main/kotlin/com/mptsix/todaydiary/service/UserService.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -119,9 +119,11 @@ class UserService(
119119
}
120120

121121
fun changePassword(userToken: String, passwordChangeRequest: PasswordChangeRequest) {
122-
val user: User = userRepository.findByUserId(getUserIdFromToken(userToken)).apply {
123-
userPassword = passwordChangeRequest.userPassword
122+
val user: User = userRepository.findByUserId(getUserIdFromToken(userToken))
123+
if (!passwordEncryptorService.isMatching(passwordChangeRequest.previousPassword, user.userPassword)) {
124+
throw ForbiddenException("Password is not correct!")
124125
}
126+
user.userPassword = passwordEncryptorService.encodePlainText(passwordChangeRequest.userPassword)
125127
userRepository.addUser(user)
126128
}
127129

src/test/kotlin/com/mptsix/todaydiary/controller/UserControllerTest.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,7 @@ internal class UserControllerTest {
185185
put("X-AUTH-TOKEN", listOf(loginToken))
186186
}
187187
val responseEntity: ResponseEntity<Unit> =
188-
restTemplate.exchange(url, HttpMethod.PUT, HttpEntity<PasswordChangeRequest>(PasswordChangeRequest("test"), httpHeaders))
188+
restTemplate.exchange(url, HttpMethod.PUT, HttpEntity<PasswordChangeRequest>(PasswordChangeRequest("test", "test"), httpHeaders))
189189

190190
assertThat(responseEntity.statusCode).isEqualTo(HttpStatus.NO_CONTENT)
191191
}

src/test/kotlin/com/mptsix/todaydiary/service/UserServiceTest.kt

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -323,10 +323,24 @@ internal class UserServiceTest {
323323
@Test
324324
fun is_changePassword_works_well() {
325325
val loginToken: String = loginUser()
326-
userService.changePassword(loginToken, PasswordChangeRequest("whatever"))
326+
val beforeUser: User = userRepository.findByUserId(mockUser.userId)
327+
userService.changePassword(loginToken, PasswordChangeRequest(mockUser.userPassword, "whatever"))
327328

328329
val user: User = userRepository.findByUserId(mockUser.userId)
329-
assertThat(user.userPassword).isEqualTo("whatever")
330+
assertThat(user.userPassword).isNotEqualTo("whatever")
331+
assertThat(user.userPassword).isNotEqualTo(beforeUser.userPassword)
332+
}
333+
334+
@Test
335+
fun is_changePassword_throws_forbidden() {
336+
val loginToken: String = loginUser()
337+
runCatching {
338+
userService.changePassword(loginToken, PasswordChangeRequest("mockUser.userPassword", "whatever"))
339+
}.onSuccess {
340+
fail("Password is wrong, but succeed?")
341+
}.onFailure {
342+
assertThat(it is ForbiddenException).isEqualTo(true)
343+
}
330344
}
331345

332346
@Test

0 commit comments

Comments
 (0)