Skip to content

release/1.1.0#20

Merged
Sean-mn merged 22 commits intomainfrom
release/1.1.0
Mar 11, 2026
Merged

release/1.1.0#20
Sean-mn merged 22 commits intomainfrom
release/1.1.0

Conversation

@Sean-mn
Copy link
Contributor

@Sean-mn Sean-mn commented Mar 11, 2026

📚작업 내용

  • xUnit + Moq 기반 단위 테스트 추가 (Domain, UseCase 전 계층 커버)
  • GitHub Actions CI 워크플로 추가 (빌드 및 테스트 자동화)
  • Steam WebApiKey를 Azure Key Vault로 연동 (패밀리 쉐어링 차단 포함)
  • 글로벌 예외 핸들러 추가 및 예외 메시지 구분 처리
  • SteamId 타입을 long에서 ulong으로 통일
  • CacheKey를 Application 레이어로 이동 및 중복 메서드 제거
  • Claude Code 커스텀 커맨드 추가 (build, commit, migrate, pr, test)
  • .gitignore 정리 및 IDE 설정 파일 추적 해제

◀️참고 사항

단위 테스트는 Domain 엔티티(Room, User)와 UseCase(Auth, Room) 전 계층을 커버하며, CI에서 PR 시 자동 실행됩니다. Azure Key Vault 연동으로 Steam WebApiKey가 환경 변수 대신 Key Vault에서 주입됩니다.

✅체크리스트

[ ]안에 x를 작성하면 체크박스를 체크할 수 있습니다.

  • 현재 의도하고자 하는 기능이 정상적으로 작동하나요?
  • 변경한 기능이 다른 기능을 깨뜨리지 않나요?

추후 필요한 체크리스트는 업데이트 될 예정입니다.

Sean-mn and others added 22 commits March 8, 2026 15:36
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
refactor: 로그인 로직 리팩토링
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- DCI(Describe-Context-It) 패턴으로 단위 테스트 작성
- UseCase 테스트: LoginUseCase, LogoutUseCase, CreateRoomUseCase, JoinRoomUseCase, GetRoomUseCase, GetAllRoomUseCase
- Domain 테스트: Room, User 엔티티 도메인 로직 검증
- fix: GetAllRoomUseCase에서 RoomSummary 생성 시 RoomCode/RoomName 순서 오류 수정

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
feature: 단위 테스트 코드 작성
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
feature : Steam WebApiKey Azure Key Vault 연동 및 패밀리 쉐어링 차단
feat: Claude Code 커스텀 커맨드 추가
@gemini-code-assist
Copy link

Summary of Changes

Hello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

이 풀 리퀘스트는 애플리케이션의 안정성, 보안 및 개발자 경험을 크게 향상시키는 데 중점을 둡니다. 자동화된 테스트와 CI를 통합하고, Azure Key Vault를 사용하여 민감한 API 키의 보안을 강화하며, 오류 처리 로직을 개선했습니다. 또한, 새로운 사용자 정의 명령어를 추가하여 개발 워크플로우를 간소화하고, 저장소 구성을 정리했습니다.

Highlights

  • 단위 테스트 추가: xUnit과 Moq를 기반으로 Domain 및 UseCase 계층 전반에 걸쳐 단위 테스트를 추가했습니다.
  • GitHub Actions CI 워크플로: 빌드 및 테스트 자동화를 위한 GitHub Actions CI 워크플로를 추가했습니다.
  • Azure Key Vault 연동: Steam WebApiKey를 Azure Key Vault와 연동하여 보안을 강화하고, 패밀리 쉐어링 계정의 접근을 차단했습니다.
  • 글로벌 예외 핸들러: 글로벌 예외 핸들러를 추가하여 예외 메시지를 구분하고 적절한 HTTP 상태 코드를 반환하도록 처리했습니다.
  • SteamId 타입 통일: SteamId 타입을 long에서 ulong으로 통일하여 데이터 일관성을 확보했습니다.
  • CacheKey 리팩토링: CacheKey를 Application 레이어로 이동하고 중복 메서드를 제거하여 구조를 개선했습니다.
  • Claude Code 커스텀 커맨드: 빌드, 커밋, 마이그레이션, PR 생성, 테스트 실행을 위한 Claude Code 커스텀 커맨드를 추가했습니다.
  • .gitignore 정리: .gitignore 파일을 정리하고 IDE 설정 파일 추적을 해제했습니다.
Changelog
  • PushAndPull/.claude/commands/build.md
    • 서버 프로젝트 빌드 및 오류 보고를 위한 Claude Code 명령어를 추가했습니다.
  • PushAndPull/.claude/commands/commit.md
    • 프로젝트 커밋 규칙에 따라 Git 커밋을 생성하기 위한 Claude Code 명령어를 추가했습니다.
  • PushAndPull/.claude/commands/migrate.md
    • EF Core 마이그레이션을 추가하고 선택적으로 데이터베이스를 업데이트하기 위한 Claude Code 명령어를 추가했습니다.
  • PushAndPull/.claude/commands/pr.md
    • 개발 브랜치 변경 사항을 기반으로 PR 제목 및 본문을 생성하기 위한 Claude Code 명령어를 추가했습니다.
  • PushAndPull/.claude/commands/test.md
    • 모든 테스트를 실행하고 실패를 분석하기 위한 Claude Code 명령어를 추가했습니다.
  • PushAndPull/.claude/settings.json
    • Claude Code 명령어를 위한 새로운 설정 파일을 추가했습니다.
  • PushAndPull/.gitignore
    • Claude Code 임시 파일 및 IDE 관련 무시 패턴을 포함하도록 .gitignore 파일을 업데이트했습니다.
  • PushAndPull/.idea/.idea.PushAndPull/.idea/.gitignore
    • Rider 전용 .gitignore 파일을 제거했습니다.
  • PushAndPull/PushAndPull.sln
    • 새로운 'Tests' 프로젝트를 포함하고 x64/x86 빌드 구성을 추가하도록 솔루션 파일을 업데이트했습니다.
  • PushAndPull/Server/Api/Extension/ClaimsPrincipalExtensions.cs
    • 파일 이름을 변경하고 GetSteamId 메서드에서 Steam ID 타입을 long에서 ulong으로 변경했습니다.
  • PushAndPull/Server/Application/Cache/CacheKey.cs
    • 파일 이름을 변경하고 CacheKey 클래스를 Infrastructure에서 Application 레이어로 이동했습니다.
  • PushAndPull/Server/Application/Port/Input/ICreateRoomUseCase.cs
    • CreateRoomCommandHostSteamId 타입을 long에서 ulong으로 업데이트했습니다.
  • PushAndPull/Server/Application/Service/SessionService.cs
    • CacheKey 네임스페이스 변경을 반영하도록 import를 업데이트하고 중복된 RemoveSessionAsync 메서드를 제거했습니다.
  • PushAndPull/Server/Application/UseCase/Auth/LoginUseCase.cs
    • 새로운 예외와 함께 가족 공유 확인 로직을 추가하고, 사용자 업데이트 로직을 User 엔티티 메서드를 사용하도록 업데이트했습니다.
  • PushAndPull/Server/Application/UseCase/Room/GetAllRoomUseCase.cs
    • RoomSummary 생성자의 매개변수 순서를 재정렬했습니다.
  • PushAndPull/Server/Domain/Entity/Room.cs
    • Room 엔티티 및 생성자에서 HostSteamId 타입을 long에서 ulong으로 업데이트했습니다.
  • PushAndPull/Server/Domain/Entity/User.cs
    • NicknameLastLoginAt 속성을 private setter로 변경하고 UpdateNicknameUpdateLastLogin 메서드를 추가했습니다.
  • PushAndPull/Server/Domain/Exception/Auth/FamilySharingNotAllowedException.cs
    • 가족 공유가 허용되지 않을 때 발생하는 새로운 예외 클래스를 추가했습니다.
  • PushAndPull/Server/Infrastructure/Auth/SteamAuthTicketValidator.cs
    • Azure Key Vault 통합을 사용하도록 Steam WebApiKey 검색 로직을 수정했습니다.
  • PushAndPull/Server/Program.cs
    • 특정 인증 예외를 적절한 HTTP 상태 코드로 매핑하는 글로벌 예외 핸들러를 추가했습니다.
  • PushAndPull/Server/appsettings.json
    • Steam:WebApiKey 설정을 Key Vault 비밀 이름으로 참조하도록 업데이트했습니다.
  • PushAndPull/Tests/Domain/RoomTests.cs
    • 방 엔티티의 동작(참여, 가득 찬 방, 삭제 표시, 닫기, 생성)에 대한 단위 테스트를 추가했습니다.
  • PushAndPull/Tests/Domain/UserTests.cs
    • 사용자 엔티티의 동작(닉네임 업데이트, 마지막 로그인 업데이트)에 대한 단위 테스트를 추가했습니다.
  • PushAndPull/Tests/Tests.csproj
    • xUnit, Moq 및 프로젝트 참조를 포함하는 단위 테스트용 새 C# 프로젝트 파일을 추가했습니다.
  • PushAndPull/Tests/UseCase/Auth/LoginUseCaseTests.cs
    • 새 사용자 로그인 및 기존 사용자 로그인 시나리오를 다루는 LoginUseCase에 대한 단위 테스트를 추가했습니다.
  • PushAndPull/Tests/UseCase/Auth/LogoutUseCaseTests.cs
    • 세션 삭제를 확인하는 LogoutUseCase에 대한 단위 테스트를 추가했습니다.
  • PushAndPull/Tests/UseCase/Room/CreateRoomUseCaseTests.cs
    • 공개 및 비공개 방 생성 시나리오를 다루는 CreateRoomUseCase에 대한 단위 테스트를 추가했습니다.
  • PushAndPull/Tests/UseCase/Room/GetAllRoomUseCaseTests.cs
    • 여러 방 및 방이 없는 시나리오를 다루는 GetAllRoomUseCase에 대한 단위 테스트를 추가했습니다.
  • PushAndPull/Tests/UseCase/Room/GetRoomUseCaseTests.cs
    • 유효하지 않은 방 코드, 존재하지 않는 방, 존재하는 방 시나리오를 다루는 GetRoomUseCase에 대한 단위 테스트를 추가했습니다.
  • PushAndPull/Tests/UseCase/Room/JoinRoomUseCaseTests.cs
    • 존재하지 않는 방, 비활성 방, 잘못된 비밀번호, 성공적인 참여 시나리오를 다루는 JoinRoomUseCase에 대한 단위 테스트를 추가했습니다.
Ignored Files
  • Ignored by pattern: .github/workflows/** (1)
    • .github/workflows/test.yaml
Activity
  • 이 풀 리퀘스트에 대한 사용자 활동은 제공되지 않았습니다.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

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

Code Review

이번 PR은 프로젝트 품질을 크게 향상시키는 중요한 변경들을 담고 있습니다. 특히 xUnit과 Moq를 사용한 단위 테스트 추가는 코드의 안정성과 유지보수성을 높이는 데 큰 도움이 될 것입니다. 또한, Azure Key Vault를 연동하여 API 키를 안전하게 관리하고, 글로벌 예외 핸들러를 도입하여 오류 처리를 중앙화한 점도 매우 훌륭합니다. 전반적으로 코드베이스를 현대적이고 견고하게 만드는 좋은 변경이라고 생각합니다.

한 가지, 글로벌 예외 핸들러의 응답 방식을 개선하여 API 클라이언트의 편의성을 더욱 높일 수 있는 제안을 드립니다.

@Sean-mn Sean-mn merged commit e297e5b into main Mar 11, 2026
4 checks passed
@Sean-mn Sean-mn linked an issue Mar 11, 2026 that may be closed by this pull request
3 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feature] 테스트 코드 작성

1 participant