- Add CredentialService for managing broker credentials - Implement credential CLI commands (create, list, get, update, delete) - Add postgres repository support for credential operations - Add comprehensive test coverage for credential CLI - Update docs/batches/index.md and docs/srs/index.md with BAT-005 - Update docs/project-structure.md to reflect credential service
2.4 KiB
2.4 KiB
BAT-005 Verification
- Status: passed
- Batch: BAT-005
- Profile: batch-lite
- Verified: 2026-05-03
REQ Coverage
REQ-015: CLI credential 명령 그룹 구현 (브로커 인증 정보 관리)
| AC # | 기준 | 검증 방법 | 결과 |
|---|---|---|---|
| AC-1 | alice 사용자 + 유효 enc key → credential set 실행 시 broker_credentials 레코드 생성(upsert) |
test_cli_credential_set_creates_record |
✅ passed |
| AC-2 | credential list 출력에 broker, account_ref, credential_version 포함 / encrypted_payload 미포함 |
test_cli_credential_list_hides_payload |
✅ passed |
| AC-3 | 존재하지 않는 username → exit code 1 + 에러 메시지 | test_cli_credential_set_with_unknown_user_exits_error |
✅ passed |
| AC-4 | credential remove --force 후 list에서 사라짐 |
test_cli_credential_remove_deletes_record |
✅ passed |
| AC-5 | CREDENTIAL_ENCRYPTION_KEY 미설정 → exit code 1 + 에러 메시지 포함 | test_cli_credential_set_requires_encryption_key |
✅ passed |
Test Evidence
실행 명령
python -m pytest tests/test_cli.py -q
결과
49 passed in 1.49s
- 신규 테스트 5개 모두 passed
- 기존 테스트 44개 regression 없음
신규 테스트 목록
| 테스트 | AC |
|---|---|
test_cli_credential_set_creates_record |
AC-1 |
test_cli_credential_list_hides_payload |
AC-2 |
test_cli_credential_set_with_unknown_user_exits_error |
AC-3 |
test_cli_credential_remove_deletes_record |
AC-4 |
test_cli_credential_set_requires_encryption_key |
AC-5 |
Implementation Summary
| 파일 | 변경 내용 |
|---|---|
app/cli/commands/credential.py |
신규 생성 — credential_app, set/list/remove 명령 |
app/cli/main.py |
credential_app import 및 app.add_typer(credential_app, name="credential") 등록 |
app/repositories/postgres.py |
delete_broker_credential(user_id, broker) -> bool 메서드 추가 |
tests/test_cli.py |
FakeRepo.upsert/list/get/delete_broker_credential, 신규 테스트 5개 추가 |
docs/project-structure.md |
CLI 명령 그룹 목록에 credential 추가 |
Baseline Document Sync
docs/project-structure.md:app/cli/섹션에credential명령 그룹 추가 완료- 구조/런타임 흐름/인터페이스 계약 변경 없음 →
runtime-flows.md,interface-contract.md갱신 불필요
Residual Risk
- 없음