Skip to content

[BE]: Vitest 기반 테스트 인프라 도입 및 핵심 모듈 단위 테스트 추가 - #164

Merged
geunu97 merged 5 commits into
mainfrom
staging
Aug 30, 2026
Merged

[BE]: Vitest 기반 테스트 인프라 도입 및 핵심 모듈 단위 테스트 추가#164
geunu97 merged 5 commits into
mainfrom
staging

Conversation

@geunu97

@geunu97 geunu97 commented Aug 30, 2026

Copy link
Copy Markdown
Member

📋 요약

백엔드(NestJS)에 Vitest 기반 테스트 인프라를 처음으로 도입하고, 주문·인증 핵심 로직에 대한 단위 테스트 119개를 추가합니다. staging/main으로 향하는 PR에서 이 테스트를 자동 실행하는 GitHub Actions 워크플로우도 함께 추가합니다.

✨ 주요 변경사항

  • [BE] Vitest + unplugin-swc(NestJS 데코레이터 메타데이터 보존) + vitest-mock-extended(Prisma mock) 테스트 인프라 구성
  • [BE] 주문 상태전이 규칙(order-status-transition.util), 자동화 배치 판단 로직(order-datetime.util) 단위 테스트
  • [BE] 주문 생성 시 클라이언트 총수량/총금액 변조 방지 검증(order-create.service) 단위 테스트
  • [BE] JWT 발급·검증(jwt.util, jwt.strategy), 인가 가드(auth.guard) 단위 테스트
  • [BE] 카카오/구글/애플 OAuth 로그인(외부 API는 axios/jsonwebtoken mock 처리) 단위 테스트
  • [BE] 회원탈퇴 익명화 로직·Apple revoke·활성 주문 차단(auth-withdraw.service) 단위 테스트
  • [COMMON] .github/workflows/test-backend.yml 추가 — staging/main PR에서 apps/backend/** 변경 시 테스트 자동 실행

🧪 테스트 계획

  • 로컬에서 yarn workspace @picake/backend test 실행 — 119/119 통과 확인
  • yarn workspace @picake/backend build — 기존 빌드 영향 없음 확인
  • 이 PR 자체에서 Test Backend CI 워크플로우가 정상적으로 트리거·통과하는지 확인

📎 참고 사항

  • 이 PR에는 이전에 staging에 반영되어 있던 인프라 모니터링 워크플로우(monitor-infra.yml)와 iOS 심사 4차 반려 대응 기록 커밋도 함께 포함되어 있습니다(신규 작업 아님).
  • 브랜치 보호 규칙(머지 전 CI 필수 통과)은 아직 설정되어 있지 않아, 이번 PR에서 CI가 실패해도 머지 자체는 가능합니다 — 별도로 저장소 설정에서 켜는 것을 권장합니다.

🤖 Generated with Claude Code

https://claude.ai/code/session_01BBrpN6Agny3skLGBXgofpm

geunu97 and others added 3 commits August 30, 2026 20:05
4차 반려(2.1(a) 소셜 로그인 2FA + 1.5 Support URL) 원인 조사, Apple 회신 원문,
재심사 승인으로 iOS 앱스토어 배포 성공한 결과를 skill 문서에 반영.
staging/production EC2 상태를 매일 점검해 디스코드로 보내는 워크플로우
(main에는 PR #162/#163로 이미 반영됨)를 staging 브랜치에도 동기화.
주문 상태전이·자동화 판단 로직, 인증(JWT 발급·검증, 카카오/구글/애플 OAuth, 회원탈퇴),
주문 생성 검증(가격·수량 변조 방지) 등 핵심 비즈니스 로직에 대한 단위 테스트 119개를 추가하고,
staging/main으로 향하는 PR에서 이를 자동 실행하는 GitHub Actions 워크플로우를 추가합니다.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BBrpN6Agny3skLGBXgofpm
@geunu97 geunu97 self-assigned this Aug 30, 2026
geunu97 and others added 2 commits August 30, 2026 21:02
향후 프론트엔드 테스트 워크플로우(test-web-user.yml 등)가 추가될 때 job 이름이
동일하게 "test"로 겹치면 브랜치 보호 규칙의 필수 체크 항목이 모호해지므로 미리 구분합니다.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BBrpN6Agny3skLGBXgofpm
Node 20이 2026년 3월경 EOL(지원 종료)되어 더 이상 보안 패치를 받지 못하는 상태였고,
Vercel도 Node 20을 2026-10-01부로 deprecate 예정이라 업그레이드를 진행합니다.
Node 24는 현재 Active LTS로 Maintenance 종료가 2028-04-30까지라 22보다 더 긴
지원 기간을 확보할 수 있습니다.

- README.md: 요구 Node 버전 명시 갱신 (v20.19 → v24)
- CI: deploy-web.yml, test-backend.yml의 actions/setup-node를 24로 변경
- 각 워크스페이스(backend/web-user/web-seller/web-admin) package.json에
  engines.node 필드 추가 — Vercel 프로젝트 대시보드의 Node.js Version(20.x) 설정을
  git으로 관리되는 값으로 override (Vercel 공식 문서에 명시된 방법)
- backend/web-user의 @types/node를 24 라인으로 갱신
- 루트에 .nvmrc(24) 추가 — 이번에 겪었던 로컬 Node 버전 불일치 재발 방지
- docs/infra/aws EC2 프로비저닝 가이드의 Node 설치 버전을 24로 갱신 (문서만 갱신,
  실제 운영 중인 EC2 인스턴스의 Node는 별도로 수동 업그레이드 필요 — 아래 참고)
- 백엔드 테스트(119개)·빌드, web-user/web-seller/web-admin 빌드를 모두 Node 24
  환경에서 재검증 완료 (bcrypt/sharp/@swc/core 등 네이티브 모듈 재빌드 포함)

⚠️ 이 커밋은 리포지토리(CI·Vercel·문서) 범위만 다룹니다. staging/production EC2
인스턴스에 실제로 설치된 Node 20 자체는 이 커밋으로 바뀌지 않으며, SSH 접속 후
수동으로 Node 24 재설치 + 네이티브 의존성 재빌드 + PM2 재기동이 별도로 필요합니다.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BBrpN6Agny3skLGBXgofpm
@geunu97
geunu97 merged commit 130fa61 into main Aug 30, 2026
10 checks passed
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.

1 participant