Skip to content

[Refactor] 비공개 방 비밀번호 입력 검증시 반환값 수정#146

Merged
hd0rable merged 10 commits intodevelopfrom
refactor/private-room-password-response
Aug 5, 2025
Merged

[Refactor] 비공개 방 비밀번호 입력 검증시 반환값 수정#146
hd0rable merged 10 commits intodevelopfrom
refactor/private-room-password-response

Conversation

@hd0rable
Copy link
Member

@hd0rable hd0rable commented Aug 5, 2025

#️⃣ 연관된 이슈

closes #143

📝 작업 내용

  • 비공개 방 비밀번호 입력 시에 기존에 비밀번호 불일치시, 발생했던 예외로직을 없애고 matched라는 boolean 값으로 비밀번호 일치여부를 반환하도록 수정하였습니다.
  • 또한 누락되었던 roomId도 추가되었습니다

📸 스크린샷

💬 리뷰 요구사항

브랜치 이름에 깜박하고 이슈번호를 못적었습니닷 ㅜㅜ..

📌 PR 진행 시 이러한 점들을 참고해 주세요

* P1 : 꼭 반영해 주세요 (Request Changes) - 이슈가 발생하거나 취약점이 발견되는 케이스 등
* P2 : 반영을 적극적으로 고려해 주시면 좋을 것 같아요 (Comment)
* P3 : 이런 방법도 있을 것 같아요~ 등의 사소한 의견입니다 (Chore)

Summary by CodeRabbit

  • 신규 기능

    • 비밀번호 검증 결과를 포함하는 응답 객체(RoomVerifyPasswordResponse)를 도입하여, 방 비밀번호 일치 여부와 방 ID를 확인할 수 있습니다.
  • 버그 수정

    • 비밀번호 불일치 시에도 200 OK 응답과 함께 일치 여부를 반환하도록 변경되었습니다.
  • 테스트

    • 비밀번호 검증 관련 테스트가 새로운 응답 구조와 동작 방식에 맞게 수정되었습니다.

@coderabbitai
Copy link

coderabbitai bot commented Aug 5, 2025

Walkthrough

비공개 방 비밀번호 검증 API의 반환값이 예외 발생 방식에서 일치 여부와 roomId를 포함하는 응답 객체 반환 방식으로 변경되었습니다. 이에 따라 예외 코드 및 관련 상수, 테스트 코드, 서비스 및 도메인 로직, Swagger 문서 설명이 일관되게 수정되었습니다.

Changes

Cohort / File(s) Change Summary
ErrorCode 및 Swagger 설명 정리
src/main/java/konkuk/thip/common/exception/code/ErrorCode.java, src/main/java/konkuk/thip/common/swagger/SwaggerResponseDescription.java
ROOM_PASSWORD_MISMATCH 에러코드 및 Swagger 응답 설명에서 해당 코드 제거
컨트롤러 및 응답 타입 변경
src/main/java/konkuk/thip/room/adapter/in/web/RoomQueryController.java, src/main/java/konkuk/thip/room/adapter/in/web/response/RoomVerifyPasswordResponse.java
비밀번호 검증 API 반환 타입을 RoomVerifyPasswordResponse로 변경 및 새 응답 레코드 클래스 추가
유스케이스 및 서비스 계층 수정
src/main/java/konkuk/thip/room/application/port/in/RoomVerifyPasswordUseCase.java, src/main/java/konkuk/thip/room/application/service/RoomVerifyPasswordService.java
유스케이스 및 서비스의 반환값을 Void에서 RoomVerifyPasswordResponse로 변경, 로직 수정
도메인 로직 수정
src/main/java/konkuk/thip/room/domain/Room.java
비밀번호 검증 메서드가 예외 대신 boolean 반환하도록 변경
API/도메인 테스트 코드 수정
src/test/java/konkuk/thip/room/adapter/in/web/RoomVerifyPasswordAPITest.java, src/test/java/konkuk/thip/room/domain/RoomTest.java
실패 시 예외 발생 대신 검증 결과 boolean 및 응답 데이터 검증으로 테스트 수정

Sequence Diagram(s)

sequenceDiagram
    participant Client
    participant RoomQueryController
    participant RoomVerifyPasswordUseCase
    participant RoomVerifyPasswordService
    participant Room

    Client->>RoomQueryController: verifyRoomPassword(roomId, request)
    RoomQueryController->>RoomVerifyPasswordUseCase: verifyRoomPassword(query)
    RoomVerifyPasswordUseCase->>RoomVerifyPasswordService: verifyRoomPassword(query)
    RoomVerifyPasswordService->>Room: verifyPassword(rawPassword)
    Room-->>RoomVerifyPasswordService: boolean matched
    RoomVerifyPasswordService-->>RoomVerifyPasswordUseCase: RoomVerifyPasswordResponse(matched, roomId)
    RoomVerifyPasswordUseCase-->>RoomQueryController: RoomVerifyPasswordResponse
    RoomQueryController-->>Client: BaseResponse<RoomVerifyPasswordResponse>
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~15 minutes

Assessment against linked issues

Objective Addressed Explanation
비공개 방 비밀번호 입력 시 실패 할 경우 예외 대신 일치 여부 반환, roomId도 반환 (#143)

Assessment against linked issues: Out-of-scope changes

(해당 변경사항에서 요구사항과 무관한 변경은 발견되지 않았습니다.)

Possibly related PRs

Suggested labels

🛠️ feat

Suggested reviewers

  • buzz0331
  • seongjunnoh

Poem

🐰
비밀번호 검증, 예외는 안녕
이제는 응답에 결과를 담아
맞으면 true, 틀리면 false
roomId도 함께 전해주네
코드가 깔끔, 토끼도 방긋
리뷰어님, 오늘도 힘내세요!
🥕

Note

⚡️ Unit Test Generation is now available in beta!

Learn more here, or try it out under "Finishing Touches" below.

✨ Finishing Touches
  • 📝 Generate Docstrings
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch refactor/private-room-password-response

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai generate unit tests to generate unit tests for this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (1)
src/main/java/konkuk/thip/room/adapter/in/web/response/RoomVerifyPasswordResponse.java (1)

3-11: 응답 클래스 구조가 적절하지만 코드 스타일을 개선해주세요.

matchedroomId를 포함한 응답 구조가 API 개선 목적에 부합합니다. 다만 팩토리 메서드에서 매개변수 사이 공백이 누락되었습니다.

-    public static RoomVerifyPasswordResponse of(boolean matched,Long roomId) {
+    public static RoomVerifyPasswordResponse of(boolean matched, Long roomId) {
-        return new RoomVerifyPasswordResponse(matched,roomId);
+        return new RoomVerifyPasswordResponse(matched, roomId);
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 08af9ad and da56ddb.

📒 Files selected for processing (9)
  • src/main/java/konkuk/thip/common/exception/code/ErrorCode.java (0 hunks)
  • src/main/java/konkuk/thip/common/swagger/SwaggerResponseDescription.java (0 hunks)
  • src/main/java/konkuk/thip/room/adapter/in/web/RoomQueryController.java (1 hunks)
  • src/main/java/konkuk/thip/room/adapter/in/web/response/RoomVerifyPasswordResponse.java (1 hunks)
  • src/main/java/konkuk/thip/room/application/port/in/RoomVerifyPasswordUseCase.java (1 hunks)
  • src/main/java/konkuk/thip/room/application/service/RoomVerifyPasswordService.java (2 hunks)
  • src/main/java/konkuk/thip/room/domain/Room.java (2 hunks)
  • src/test/java/konkuk/thip/room/adapter/in/web/RoomVerifyPasswordAPITest.java (2 hunks)
  • src/test/java/konkuk/thip/room/domain/RoomTest.java (1 hunks)
💤 Files with no reviewable changes (2)
  • src/main/java/konkuk/thip/common/swagger/SwaggerResponseDescription.java
  • src/main/java/konkuk/thip/common/exception/code/ErrorCode.java
🧰 Additional context used
🧠 Learnings (3)
📓 Common learnings
Learnt from: seongjunnoh
PR: THIP-TextHip/THIP-Server#101
File: src/main/java/konkuk/thip/comment/application/service/CommentCreateService.java:36-39
Timestamp: 2025-07-26T06:09:00.850Z
Learning: THIP 프로젝트에서는 "사용자가 방에 속하는지 검증" 로직을 RoomParticipantPolicy 도메인 서비스로 캡슐화하여 재사용성을 높이고 비즈니스 로직의 중복을 방지하는 방식을 선호한다.
📚 Learning: room 도메인에서 startdate는 현재 날짜 이후여야 하는 도메인 규칙이 있어서, 테스트에서 만료된 상태를 시뮬레이션하려면 reflection을 사용해야 한다....
Learnt from: hd0rable
PR: THIP-TextHip/THIP-Server#57
File: src/test/java/konkuk/thip/room/domain/RoomTest.java:0-0
Timestamp: 2025-07-08T16:30:33.771Z
Learning: Room 도메인에서 startDate는 현재 날짜 이후여야 하는 도메인 규칙이 있어서, 테스트에서 만료된 상태를 시뮬레이션하려면 reflection을 사용해야 한다.

Applied to files:

  • src/test/java/konkuk/thip/room/adapter/in/web/RoomVerifyPasswordAPITest.java
  • src/test/java/konkuk/thip/room/domain/RoomTest.java
📚 Learning: thip 프로젝트에서는 "사용자가 방에 속하는지 검증" 로직을 roomparticipantpolicy 도메인 서비스로 캡슐화하여 재사용성을 높이고 비즈니스 로직의 중복을 방지하는 ...
Learnt from: seongjunnoh
PR: THIP-TextHip/THIP-Server#101
File: src/main/java/konkuk/thip/comment/application/service/CommentCreateService.java:36-39
Timestamp: 2025-07-26T06:09:00.850Z
Learning: THIP 프로젝트에서는 "사용자가 방에 속하는지 검증" 로직을 RoomParticipantPolicy 도메인 서비스로 캡슐화하여 재사용성을 높이고 비즈니스 로직의 중복을 방지하는 방식을 선호한다.

Applied to files:

  • src/main/java/konkuk/thip/room/domain/Room.java
  • src/test/java/konkuk/thip/room/domain/RoomTest.java
  • src/main/java/konkuk/thip/room/application/port/in/RoomVerifyPasswordUseCase.java
  • src/main/java/konkuk/thip/room/application/service/RoomVerifyPasswordService.java
🔇 Additional comments (9)
src/main/java/konkuk/thip/room/domain/Room.java (1)

119-130: 도메인 로직의 일관된 변경이 잘 이루어졌습니다.

verifyPassword 메서드가 예외 발생 방식에서 boolean 반환 방식으로 변경되어, API 응답 구조 개선 목적에 부합합니다. 비밀번호 검증 로직은 그대로 유지하면서 반환 방식만 변경된 점이 적절합니다.

src/main/java/konkuk/thip/room/application/port/in/RoomVerifyPasswordUseCase.java (1)

3-8: UseCase 인터페이스 변경이 적절합니다.

RoomVerifyPasswordResponse 반환으로 변경하여 비밀번호 일치 여부와 roomId를 함께 제공할 수 있게 되었습니다. 도메인 레벨 변경사항과 일관성을 유지합니다.

src/main/java/konkuk/thip/room/application/service/RoomVerifyPasswordService.java (1)

21-29: 서비스 레이어 구현이 올바르게 변경되었습니다.

도메인의 verifyPassword 메서드에서 반환된 boolean 값을 적절히 활용하여 RoomVerifyPasswordResponse 객체를 생성합니다. 예외 기반에서 응답 기반으로의 변경이 일관되게 적용되었습니다.

src/test/java/konkuk/thip/room/domain/RoomTest.java (2)

222-229: 테스트 코드가 변경된 도메인 로직을 정확히 반영합니다.

비밀번호 불일치 시 예외 발생 대신 false 반환을 검증하도록 변경되어, 도메인 메서드의 동작 변경과 일치합니다.


232-239: 성공 케이스 테스트도 적절히 수정되었습니다.

비밀번호 일치 시 true 반환을 검증하여 변경된 메서드 시그니처에 맞게 테스트가 업데이트되었습니다.

src/test/java/konkuk/thip/room/adapter/in/web/RoomVerifyPasswordAPITest.java (3)

145-147: 새로운 응답 구조에 맞게 잘 수정되었습니다.

비밀번호 검증 성공 시 data.matcheddata.roomId를 올바르게 검증하고 있습니다. 새로운 응답 구조에 맞는 적절한 테스트 검증 로직입니다.


151-151: 테스트 이름이 새로운 동작을 정확히 반영합니다.

비밀번호 불일치 시 400 에러 대신 200 OK로 matched=false를 반환하는 새로운 동작을 명확히 표현한 테스트명입니다.


163-166: 새로운 API 동작에 맞게 올바르게 수정되었습니다.

비밀번호 불일치 시 예외를 던지는 대신 200 OK와 함께 matched=false, roomId를 포함한 응답을 반환하는 새로운 동작을 정확히 테스트하고 있습니다. 이는 도메인 테스트에서 확인된 verifyPassword 메서드의 boolean 반환 변경과 일치합니다.

src/main/java/konkuk/thip/room/adapter/in/web/RoomQueryController.java (1)

55-55: 새로운 응답 구조에 맞게 적절히 수정되었습니다.

BaseResponse<Void>에서 BaseResponse<RoomVerifyPasswordResponse>로 변경하여 비밀번호 검증 결과와 roomId를 포함한 응답을 반환하도록 수정되었습니다. 이는 예외 기반에서 응답 기반으로 변경된 새로운 API 설계와 일치합니다.

Copy link
Contributor

@buzz0331 buzz0331 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

굿잡~

@hd0rable hd0rable merged commit 6974573 into develop Aug 5, 2025
1 check passed
@hd0rable hd0rable deleted the refactor/private-room-password-response branch August 6, 2025 02:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[THIP2025-207] [refactor] 비공개 방 비밀번호 입력 api 반환값 수정

2 participants