Skip to content

[Fix] 프로젝트 명칭 형식 제한 문제 해결 #5 - #44

Merged
jjjjjk12 merged 1 commit into
mainfrom
fix/#5/project-name-format
Jun 30, 2026
Merged

[Fix] 프로젝트 명칭 형식 제한 문제 해결 #5#44
jjjjjk12 merged 1 commit into
mainfrom
fix/#5/project-name-format

Conversation

@callme-waffle

Copy link
Copy Markdown
Member

📌 변경 요약 (Summary)

이 PR에서 무엇을 변경했는지 간단히 설명해주세요.

  • 프로젝트 생성 요청 및 실제 프로젝트 생성 경로에서 프로젝트명을 영어 소문자, 숫자, -만 허용하도록 제한했습니다.
  • 관리자 직접 생성 API에서는 시스템 관리자 토큰 발급 전에 잘못된 프로젝트명을 차단하도록 수정했습니다.

🔗 관련 이슈 (Related Issue)

이 PR과 관련된 이슈를 작성해주세요.

Closes #5


🛠 작업 내용 / 작업 순서 (Implementation Details)

이번 작업에서 수행한 내용이나 작업 순서를 작성해주세요.

  1. GitHub 이슈 [Feat] 프로젝트 명칭형식 제한 #5 및 연결된 GitLab 기존 이슈 #125 내용을 확인
  2. 프로젝트 요청 생성 및 실제 프로젝트 생성 코드 경로 검토
  3. ProjectNameValidator 추가로 프로젝트명 검증 규칙 중앙화
  4. 사용자 프로젝트 요청 생성 시 저장 전에 프로젝트명 검증 적용
  5. 관리자 직접 생성 시 시스템 관리자 토큰 발급 전에 프로젝트명 검증 적용
  6. 실제 프로젝트 생성 직전에도 동일 검증 적용하여 승인/내부 생성 경로 방어
  7. Swagger DTO 설명 및 생성요청 예시를 새 규칙에 맞게 수정
  8. 단위 테스트 및 실제 백엔드 API 호출 기반 검증 수행

✨ 주요 변경 사항 (Key Changes)

  • 프로젝트명 허용 형식: ^[a-z0-9-]+$
  • 신규 에러코드 추가:
    • ACC-PROJECT-INVALID-PROJECT-NAME
  • 검증 적용 경로:
    • POST /api/v1/projects/request
    • POST /api/v1/admin/projects
    • 내부 실제 프로젝트 생성 경로 ProjectModule.createProject
  • 관리자 직접 생성 API에서 invalid 프로젝트명은 OpenStack 토큰 발급 및 Keystone project 생성 이전에 차단됩니다.

🧪 테스트 결과 (Test Results)

테스트 환경

  • 로컬 Spring Boot 애플리케이션: http://127.0.0.1:8080
  • 테스트 DB: aolda-issue1-mariadb MariaDB 컨테이너
  • 테스트 Redis: aolda-test-redis Redis 컨테이너
  • OpenStack 테스트 환경 연동
  • 인증 방식: Redis에 테스트용 SessionData를 직접 생성하고 acc-session-id 쿠키로 API 호출

테스트 방법

  1. 자동 테스트 실행

    • ./gradlew test --tests com.acc.local.service.modules.auth.ProjectModuleTest --tests com.acc.local.service.adapters.project.AdminProjectServiceAdapterTest
    • 결과: BUILD SUCCESSFUL
  2. 전체 자동 테스트 실행

    • ./gradlew test
    • 결과: BUILD SUCCESSFUL
  3. 테스트 환경 기동 확인

    • Spring Boot 애플리케이션 bootRun 실행
    • /actuator/health 호출로 UP 확인
    • Docker MariaDB/Redis 연결 확인
    • OpenStack 초기 연결 로그 확인
  4. Redis 테스트 세션 생성

    • 테스트용 SessionData 생성
    • acc-session-id=issue5-project-name-test 쿠키로 API 호출
  5. 프로젝트 요청 생성 invalid name 테스트

    • POST /api/v1/projects/request
    • projectName=Invalid_Project
    • 결과: 400
    • 응답 코드: ACC-PROJECT-INVALID-PROJECT-NAME
  6. 관리자 프로젝트 직접 생성 invalid name 테스트

    • POST /api/v1/admin/projects
    • projectName=Invalid_Project
    • 결과: 400
    • 응답 코드: ACC-PROJECT-INVALID-PROJECT-NAME
    • 서버 로그상 해당 invalid 요청에서 OpenStack 외부 호출 로그가 추가되지 않음을 확인
  7. 프로젝트 요청 생성 valid name 테스트

    • POST /api/v1/projects/request
    • projectName=issue5-valid-project-20260619-001
    • 결과: 201
    • 생성된 projectRequestId=c292089c-f26f-4e9d-876f-2d6edd7a12e3
  8. 테스트 리소스 정리 검증

    • DB project_requests 테스트 데이터 삭제
    • DB outbox_events 테스트 데이터 삭제
    • Redis 테스트 세션 삭제
    • 최종 잔여물 0건 확인

테스트 결과

  • 정상 동작 확인
  • 예외 상황 테스트
  • 기존 기능 영향 없음

검증 결과 요약:

./gradlew test: BUILD SUCCESSFUL

프로젝트 요청 생성 invalid name:
http_status=400
code=ACC-PROJECT-INVALID-PROJECT-NAME

관리자 프로젝트 직접 생성 invalid name:
http_status=400
code=ACC-PROJECT-INVALID-PROJECT-NAME
openstack_external_call_for_invalid_request=0

프로젝트 요청 생성 valid name:
http_status=201
projectRequestId=c292089c-f26f-4e9d-876f-2d6edd7a12e3

정리 후 확인:
db_project_requests=0
db_outbox_events=0
redis_session_deleted=1
invalid_project_requests=0

참고: #5 변경의 핵심은 invalid 프로젝트명이 OpenStack API로 전달되기 전에 차단되는지입니다. 따라서 valid 관리자 직접 생성으로 실제 Keystone/Neutron 리소스를 생성하는 테스트는 수행하지 않았습니다.

@jjjjjk12

Copy link
Copy Markdown
Member

해당 pr도 문제가 없다면 드래프트를 풀어주세요

@callme-waffle
callme-waffle marked this pull request as ready for review June 21, 2026 23:05

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: dea77626a0

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/main/java/com/acc/local/service/modules/auth/ProjectModule.java
@jjjjjk12

Copy link
Copy Markdown
Member

LGTM

@jjjjjk12
jjjjjk12 merged commit b351dae into main Jun 30, 2026
2 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.

[Feat] 프로젝트 명칭형식 제한

2 participants