Repository navigation
Test Scenarios IAM
생성: 2026-09-28 · 결과 기준: 최근 실행 2026-09-16 · 대상 배포 버전:
web:0.5.2 infra:0.12.9 conn:0.12.18 wf:0.5.1 app:0.5.2 data:0.5.3 cost:0.5.2 obs:0.5.0
| 기능 | TC | 제목 | 구분 | 계층 | 최근 결과 |
|---|---|---|---|---|---|
| iam-install-seed | TC-IAM-SEED-GROUPS-01 | 설치 시드 그룹 9종 존재 확인 (grp-admin, grp-bill.., grp-mon-ops) | 정상 | contract | 📝 미구현 |
| TC-IAM-SEED-ROLES-01 | 설치 시드 역할의 3종 구성(platform 메뉴/workspace 사용유무/csp 매핑) 존재 확인 | 정상 | contract | 📝 미구현 | |
| TC-IAM-SEED-GROUP-ROLE-01 | 설치 시드 그룹-역할 할당 확인 | 정상 | contract | 📝 미구현 | |
| iam-onboarding | TC-IAM-SIGNUP-01 | 가입 신청 → 승인 전 로그인 불가 | 정상 | ui | 📝 미구현 |
| TC-IAM-APPROVE-01 | 관리자 승인 + 그룹 배정 → 로그인 가능 | 정상 | ui | 📝 미구현 | |
| iam-menu-visibility | TC-IAM-MENU-VIS-01 | 로그인 후 자기 역할 메뉴만 노출/클릭 가능 (페르소나 9종 파라미터) | 정상 | ui | ⬜ 미실행 |
| TC-IAM-MENU-VIS-02 | 타 도메인 메뉴 URL 직접 접근 → 거부 (페르소나 9종 파라미터) | 비정상 | ui | ⬜ 미실행 | |
| TC-IAM-MENU-SEED-DRIFT-01 | permission.yaml(시드)과 실제 노출 메뉴(IAM DB) 드리프트 감지 | 비정상 | contract | 📝 미구현 | |
| TC-IAM-MENU-VIS-03 | Menus 화면에서 역할별 메뉴 매핑 변경 → 해당 역할 사이드바 노출 즉시 반영 | 정상 | ui | ⬜ 미실행 | |
| TC-IAM-MENU-VIS-04 | 승인 권한 없는 계정 → Approvals 메뉴 미노출 + URL 직접 접근 차단 | 정상 | ui | ⬜ 미실행 | |
| iam-temp-credential | TC-IAM-TEMPCRED-01 | 전 역할 임시자격증명 요청(API) → 매핑된 CSP 역할로 발급 | 정상 | contract | ⬜ 미실행 |
| TC-IAM-TEMPCRED-UI-01 | 콘솔 임시자격증명 요청 버튼 → 발급 결과 표시 | 정상 | ui | 📝 미구현 | |
| iam-menu-list | TC-IAM-MENU-LIST-01 | Menus 화면 진입 → Menu Tree 자동 조회 및 렌더 | 정상 | ui | ✅ PASS(09-11) |
| TC-IAM-MENU-LIST-02 | 메뉴 0건 응답 → 빈 트리 정상 표시 (mock) | 비정상 | ui | ✅ PASS(09-11) | |
| iam-menu-create | TC-IAM-MENU-CREATE-01 | Add Root Menu 팝업 오픈 → 기본값·필수표시 확인 | 정상 | ui | ✅ PASS(09-11) |
| TC-IAM-MENU-CREATE-02 | 루트 메뉴 생성 → 트리 반영 및 상세 조회 일치 | 정상 | ui | 🚧 BLOCKED | |
| TC-IAM-MENU-CREATE-03 | Add Child → 하위 메뉴 생성 (Parent ID 자동 지정) | 정상 | ui | ✅ PASS(09-11) | |
| TC-IAM-MENU-CREATE-04 | 필수값(Menu ID/Display Name) 전체 공백 → 저장 차단 | 비정상 | ui | ✅ PASS(09-11) | |
| TC-IAM-MENU-CREATE-05 | Menu ID 또는 Display Name 단독 누락 → 저장 차단 | 비정상 | ui | ✅ PASS(09-11) | |
| TC-IAM-MENU-CREATE-06 | 기존 Menu ID와 중복 입력 → 저장 차단 | 비정상 | ui | ✅ PASS(09-11) | |
| TC-IAM-MENU-CREATE-07 | Priority/Menu Number에 숫자 아닌 값 또는 음수 입력 → 저장 차단 또는 오류 | 비정상 | ui | ⏭️ SKIP(09-11) | |
| TC-IAM-MENU-CREATE-08 | View Type이 iframe/popup인데 Framework Service 공백 → 저장 차단 | 비정상 | ui | ✅ PASS(09-11) | |
| iam-menu-edit | TC-IAM-MENU-EDIT-01 | 메뉴 수정 → 기존값 프리필 + 저장 후 즉시 반영 | 정상 | ui | ✅ PASS(09-11) |
| TC-IAM-MENU-EDIT-02 | 수정 시 Display Name 공백 저장 → 차단 | 비정상 | ui | ✅ PASS(09-11) | |
| iam-menu-delete | TC-IAM-MENU-DELETE-01 | 하위 노드 없는 메뉴 삭제 → 확인 후 트리에서 제거, 새로고침 후 유지 | 정상 | ui | ✅ PASS(09-11) |
| TC-IAM-MENU-DELETE-02 | 하위 노드가 있는 메뉴 삭제 시도 → 정책에 따른 차단/경고 | 비정상 | ui | ⏭️ SKIP(09-11) | |
| iam-menu-export-import | TC-IAM-MENU-EXPORT-IMPORT-01 | Export → 현재 Menu Tree를 파일로 다운로드 | 정상 | ui | ✅ PASS(09-11) |
| TC-IAM-MENU-EXPORT-IMPORT-02 | Import → 유효한 파일로 메뉴 구성 반영 | 정상 | ui | ⏭️ SKIP(09-11) | |
| TC-IAM-MENU-EXPORT-IMPORT-03 | 형식이 맞지 않는 파일 Import → 오류 안내, 기존 트리 훼손 없음 | 비정상 | ui | ✅ PASS(09-11) | |
| iam-approval-list | TC-IAM-APV-LIST-01 | 화면 진입 → 대기 목록/컬럼(Name·Email·Username·Requested At)·Approve·Reject 버튼 표시 | 정상 | ui | ❌ FAIL(09-16) |
| TC-IAM-APV-LIST-02 | Refresh 클릭 → 신규 가입 신청 반영 | 정상 | ui | ❌ FAIL(09-16) | |
| TC-IAM-APV-LIST-03 | 대기 요청 0건 → 빈 상태 안내, 오류 화면 없음 | 비정상 | ui | ❌ FAIL(09-16) | |
| TC-IAM-APV-LIST-04 | Requested At 표시 형식 확인 (결함 후보 재확인) | 정상 | ui | ❌ FAIL(09-16) | |
| iam-approval-approve | TC-IAM-APV-APPROVE-01 | 개별 승인 → 목록에서 제거, Users에 Enabled로 등록 | 정상 | ui | ❌ FAIL(09-16) |
| TC-IAM-APV-APPROVE-02 | 일괄 승인(2건 선택) → 선택 건만 처리, 미선택 건은 대기 유지 | 정상 | ui | ❌ FAIL(09-16) | |
| TC-IAM-APV-APPROVE-03 | 전체 선택/해제 체크박스 → 부분 선택 시 헤더 체크박스 부분 선택 상태 | 정상 | ui | ❌ FAIL(09-16) | |
| TC-IAM-APV-APPROVE-04 | 미선택 상태로 Approve Selected → 안내 alert, API 미호출 | 비정상 | ui | ❌ FAIL(09-16) | |
| TC-IAM-APV-APPROVE-05 | 두 창에서 동일 요청 중복 승인 시도 → 중복 처리/계정 중복 생성 없음 | 비정상 | ui | ❌ FAIL(09-16) | |
| iam-approval-reject | TC-IAM-APV-REJECT-01 | 개별 거부 → 사유 입력 후 목록에서 제거, 계정 미생성 | 정상 | ui | ❌ FAIL(09-16) |
| TC-IAM-APV-REJECT-02 | 거부 사유 입력 모달에서 Cancel → 거부 미실행, 대기 상태 유지 | 비정상 | ui | ❌ FAIL(09-16) |
설치 시드 그룹 9종 존재 확인 (grp-admin, grp-bill.., grp-mon-ops)
| 항목 | 내용 |
|---|---|
| 기능 | iam-install-seed |
| 구분 | 정상 |
| 계층 | L0 contract |
| 통합 유형 | proxy |
| 사전 조건 | 로그인 |
| CSP Tier / 수명주기 | C |
| 자동화 | 📝 미구현 (정의만 존재) |
절차:
- 그룹 목록 API 조회
- PERSONAS.group 9종 전부 존재
결과: 📝 미구현
설치 시드 역할의 3종 구성(platform 메뉴/workspace 사용유무/csp 매핑) 존재 확인
| 항목 | 내용 |
|---|---|
| 기능 | iam-install-seed |
| 구분 | 정상 |
| 계층 | L0 contract |
| 통합 유형 | proxy |
| 사전 조건 | 로그인 |
| CSP Tier / 수명주기 | C |
| 자동화 | 📝 미구현 (정의만 존재) |
절차:
- 역할 목록 API 조회 — permission.yaml의 역할 전부 존재
- 각 역할의 platform-role 메뉴가 permission.yaml과 일치
- csp-role 매핑 존재 (임시자격증명 발급용)
결과: 📝 미구현
설치 시드 그룹-역할 할당 확인
| 항목 | 내용 |
|---|---|
| 기능 | iam-install-seed |
| 구분 | 정상 |
| 계층 | L0 contract |
| 통합 유형 | proxy |
| 사전 조건 | 로그인 |
| CSP Tier / 수명주기 | C |
| 자동화 | 📝 미구현 (정의만 존재) |
절차:
- 그룹별 할당 역할 조회
- PERSONAS group→platformRole 매핑과 일치
결과: 📝 미구현
가입 신청 → 승인 전 로그인 불가
| 항목 | 내용 |
|---|---|
| 기능 | iam-onboarding |
| 구분 | 정상 |
| 계층 | L1 ui |
| 통합 유형 | native |
| 사전 조건 | 없음 |
| CSP Tier / 수명주기 | C |
| 자동화 | 📝 미구현 (정의만 존재) |
절차:
- 가입 폼 제출
- 완료 안내
- 승인 전 로그인 시도 → 거부
결과: 📝 미구현
관리자 승인 + 그룹 배정 → 로그인 가능
| 항목 | 내용 |
|---|---|
| 기능 | iam-onboarding |
| 구분 | 정상 |
| 계층 | L1 ui |
| 통합 유형 | native |
| 사전 조건 | 로그인 |
| CSP Tier / 수명주기 | C |
| 자동화 | 📝 미구현 (정의만 존재) |
절차:
- Approvals에서 대기 사용자 승인
- 그룹 배정
- 해당 계정 로그인 성공
결과: 📝 미구현
로그인 후 자기 역할 메뉴만 노출/클릭 가능 (페르소나 9종 파라미터)
| 항목 | 내용 |
|---|---|
| 기능 | iam-menu-visibility |
| 구분 | 정상 |
| 계층 | L1 ui |
| 통합 유형 | native |
| 사전 조건 | 로그인 |
| CSP Tier / 수명주기 | C |
| 자동화 | 구현됨 |
절차:
- 로그인
- 사이드바에 PERSONAS.menus만 노출
- 각 메뉴 클릭 → 정상 진입
결과: ⬜ 미실행
타 도메인 메뉴 URL 직접 접근 → 거부 (페르소나 9종 파라미터)
| 항목 | 내용 |
|---|---|
| 기능 | iam-menu-visibility |
| 구분 | 비정상 |
| 계층 | L1 ui |
| 통합 유형 | native |
| 사전 조건 | 로그인 |
| CSP Tier / 수명주기 | C |
| 자동화 | 구현됨 |
절차:
- 비할당 메뉴 URL 직접 진입
- unauthorized 리다이렉트 또는 접근 거부 확인
결과: ⬜ 미실행
permission.yaml(시드)과 실제 노출 메뉴(IAM DB) 드리프트 감지
| 항목 | 내용 |
|---|---|
| 기능 | iam-menu-visibility |
| 구분 | 비정상 |
| 계층 | L0 contract |
| 통합 유형 | proxy |
| 사전 조건 | 로그인 |
| CSP Tier / 수명주기 | C |
| 자동화 | 📝 미구현 (정의만 존재) |
절차:
- permission.yaml에서 역할별 기대 메뉴 로드
- 로그인 사용자 메뉴 API 응답과 비교
- 차집합 발생 시 실패 → 재시드 필요 신호 (yaml은 시드 스냅샷, DB가 진실)
결과: 📝 미구현
Menus 화면에서 역할별 메뉴 매핑 변경 → 해당 역할 사이드바 노출 즉시 반영
| 항목 | 내용 |
|---|---|
| 기능 | iam-menu-visibility |
| 구분 | 정상 |
| 계층 | L1 ui |
| 통합 유형 | native |
| 사전 조건 | 로그인 |
| CSP Tier / 수명주기 | C |
| 자동화 | 구현됨 |
절차:
- 대상 역할의 Platform access 체크 메뉴 목록을 사전 채집(Roles 화면)
- Menus 화면에서 테스트 메뉴의 Roles에 대상 역할 체크 후 저장
- 대상 역할 전용 계정으로 로그인, 사이드바 노출 메뉴를 채집값과 비교
결과: ⬜ 미실행
승인 권한 없는 계정 → Approvals 메뉴 미노출 + URL 직접 접근 차단
| 항목 | 내용 |
|---|---|
| 기능 | iam-menu-visibility |
| 구분 | 정상 |
| 계층 | L1 ui |
| 통합 유형 | native |
| 사전 조건 | 로그인 |
| CSP Tier / 수명주기 | C |
| 자동화 | 구현됨 |
절차:
- 승인 권한 없는 계정으로 로그인
- 사이드바에 Approvals 메뉴 미노출 확인
- Approvals URL 직접 진입 시도 → 차단 또는 권한 안내 화면 확인
결과: ⬜ 미실행
전 역할 임시자격증명 요청(API) → 매핑된 CSP 역할로 발급
| 항목 | 내용 |
|---|---|
| 기능 | iam-temp-credential |
| 구분 | 정상 |
| 계층 | L0 contract |
| 통합 유형 | proxy |
| 사전 조건 | 로그인 |
| CSP Tier / 수명주기 | B |
| 자동화 | 구현됨 |
절차:
- 자격증명 요청 API 호출
- csp-role 매핑 조회
- 매핑된 CSP 역할명으로 STS 발급(accessKey/token/만료 유효)
결과: ⬜ 미실행
콘솔 임시자격증명 요청 버튼 → 발급 결과 표시
| 항목 | 내용 |
|---|---|
| 기능 | iam-temp-credential |
| 구분 | 정상 |
| 계층 | L1 ui |
| 통합 유형 | native |
| 사전 조건 | 로그인 |
| CSP Tier / 수명주기 | C |
| 자동화 | 📝 미구현 (정의만 존재) |
절차:
- 자격증명 요청 버튼 클릭
- 발급 결과(만료시각 포함) 표시
결과: 📝 미구현
Menus 화면 진입 → Menu Tree 자동 조회 및 렌더
| 항목 | 내용 |
|---|---|
| 기능 | iam-menu-list |
| 구분 | 정상 |
| 계층 | L1 ui |
| 통합 유형 | native |
| 사전 조건 | 로그인 |
| CSP Tier / 수명주기 | C |
| 자동화 | 구현됨 |
절차:
- Menus 화면 진입 → Getmenuresources 호출
- Menu Tree(#menu-tree)에 계층형 트리 렌더 확인
- 최상위 노드 클릭 → Menu Details(#menu-detail-panel) 표시, 필드값이 트리 표시명과 일치
결과: ✅ PASS(09-11)
메뉴 0건 응답 → 빈 트리 정상 표시 (mock)
| 항목 | 내용 |
|---|---|
| 기능 | iam-menu-list |
| 구분 | 비정상 |
| 계층 | L1 ui |
| 통합 유형 | native |
| 사전 조건 | 로그인 |
| CSP Tier / 수명주기 | C |
| 자동화 | 구현됨 |
절차:
- Getmenuresources 응답을 빈 배열로 mock
- Menus 화면 진입
- 트리 영역이 에러 없이 빈 상태로 렌더되는지 확인 (cloud-resources LIST-02와 동일 패턴)
결과: ✅ PASS(09-11)
Add Root Menu 팝업 오픈 → 기본값·필수표시 확인
| 항목 | 내용 |
|---|---|
| 기능 | iam-menu-create |
| 구분 | 정상 |
| 계층 | L1 ui |
| 통합 유형 | native |
| 사전 조건 | 로그인 |
| CSP Tier / 수명주기 | C |
| 자동화 | 구현됨 |
절차:
- Add Root Menu 클릭 → Create Menu 팝업(#create-menu-modal) 오픈
- Menu ID/Display Name만 필수(*), Parent ID 기본값 root, View Type 기본값 local 확인
결과: ✅ PASS(09-11)
루트 메뉴 생성 → 트리 반영 및 상세 조회 일치
| 항목 | 내용 |
|---|---|
| 기능 | iam-menu-create |
| 구분 | 정상 |
| 계층 | L1 ui |
| 통합 유형 | native |
| 사전 조건 | 로그인 |
| CSP Tier / 수명주기 | C |
| 자동화 | 구현됨 |
절차:
- Menu ID/Display Name/Path 입력, Roles 1개 체크
- Save → Createmenu 호출 확인
- Menu Tree 최상위에 신규 노드 반영, 클릭 시 입력값과 Menu Details 일치
결과: 🚧 BLOCKED
Add Child → 하위 메뉴 생성 (Parent ID 자동 지정)
| 항목 | 내용 |
|---|---|
| 기능 | iam-menu-create |
| 구분 | 정상 |
| 계층 | L1 ui |
| 통합 유형 | native |
| 사전 조건 | 로그인 |
| CSP Tier / 수명주기 | C |
| 자동화 | 구현됨 |
절차:
- 임의 노드 선택 → Add Child 클릭
- 팝업 Parent ID가 선택 노드로 자동 채워짐 확인
- Menu ID/Display Name 입력 후 Save → 부모 노드 하위에 신규 노드 반영
결과: ✅ PASS(09-11)
필수값(Menu ID/Display Name) 전체 공백 → 저장 차단
| 항목 | 내용 |
|---|---|
| 기능 | iam-menu-create |
| 구분 | 비정상 |
| 계층 | L1 ui |
| 통합 유형 | native |
| 사전 조건 | 로그인 |
| CSP Tier / 수명주기 | C |
| 자동화 | 구현됨 |
절차:
- Add Root Menu 클릭, 아무 값도 입력하지 않고 Save
- Createmenu 미호출, 팝업 유지 확인
결과: ✅ PASS(09-11)
Menu ID 또는 Display Name 단독 누락 → 저장 차단
| 항목 | 내용 |
|---|---|
| 기능 | iam-menu-create |
| 구분 | 비정상 |
| 계층 | L1 ui |
| 통합 유형 | native |
| 사전 조건 | 로그인 |
| CSP Tier / 수명주기 | C |
| 자동화 | 구현됨 |
절차:
- Menu ID만 입력 후 Save → 미호출 확인
- 팝업 재오픈, Display Name만 입력 후 Save → 미호출 확인
결과: ✅ PASS(09-11)
기존 Menu ID와 중복 입력 → 저장 차단
| 항목 | 내용 |
|---|---|
| 기능 | iam-menu-create |
| 구분 | 비정상 |
| 계층 | L1 ui |
| 통합 유형 | native |
| 사전 조건 | 로그인 |
| CSP Tier / 수명주기 | C |
| 자동화 | 구현됨 |
절차:
- 기존 노드의 Menu ID를 사전 확인
- Add Root Menu에서 동일 ID + 새 Display Name 입력 후 Save
- Createmenu 미호출 또는 실패 응답 확인 (성공 시 결함으로 기록)
결과: ✅ PASS(09-11)
Priority/Menu Number에 숫자 아닌 값 또는 음수 입력 → 저장 차단 또는 오류
| 항목 | 내용 |
|---|---|
| 기능 | iam-menu-create |
| 구분 | 비정상 |
| 계층 | L1 ui |
| 통합 유형 | native |
| 사전 조건 | 로그인 |
| CSP Tier / 수명주기 | C |
| 자동화 | 구현됨 |
절차:
- Priority=abc, Menu Number=-1 입력 후 Save
- 입력 자체가 막히는지, 저장 시 오류로 걸러지는지 확인
결과: ⏭️ SKIP(09-11)
View Type이 iframe/popup인데 Framework Service 공백 → 저장 차단
| 항목 | 내용 |
|---|---|
| 기능 | iam-menu-create |
| 구분 | 비정상 |
| 계층 | L1 ui |
| 통합 유형 | native |
| 사전 조건 | 로그인 |
| CSP Tier / 수명주기 | C |
| 자동화 | 구현됨 |
절차:
- View Type을 iframe 또는 popup으로 변경, Framework Service는 비움
- Save → 팝업 안내문("iframe/popup 사용 시 Framework Service 필요")대로 차단되는지 확인
결과: ✅ PASS(09-11)
메뉴 수정 → 기존값 프리필 + 저장 후 즉시 반영
| 항목 | 내용 |
|---|---|
| 기능 | iam-menu-edit |
| 구분 | 정상 |
| 계층 | L1 ui |
| 통합 유형 | native |
| 사전 조건 | 로그인 |
| CSP Tier / 수명주기 | C |
| 자동화 | 구현됨 |
절차:
- 임의 노드 선택 → Edit 클릭, 기존값 프리필 확인
- Display Name 변경 후 Save → Updatemenu 호출
- 트리 표시명 및 Menu Details 즉시 갱신 확인
결과: ✅ PASS(09-11)
수정 시 Display Name 공백 저장 → 차단
| 항목 | 내용 |
|---|---|
| 기능 | iam-menu-edit |
| 구분 | 비정상 |
| 계층 | L1 ui |
| 통합 유형 | native |
| 사전 조건 | 로그인 |
| CSP Tier / 수명주기 | C |
| 자동화 | 구현됨 |
절차:
- Edit 팝업에서 Display Name을 비우고 Save
- Updatemenu 미호출, 팝업 유지 확인 (CREATE-04와 동일 검증 원칙을 Edit 폼에 적용)
결과: ✅ PASS(09-11)
하위 노드 없는 메뉴 삭제 → 확인 후 트리에서 제거, 새로고침 후 유지
| 항목 | 내용 |
|---|---|
| 기능 | iam-menu-delete |
| 구분 | 정상 |
| 계층 | L1 ui |
| 통합 유형 | native |
| 사전 조건 | 로그인 |
| CSP Tier / 수명주기 | C |
| 자동화 | 구현됨 |
절차:
- 테스트용 리프 메뉴 선택 → Delete → 확인창에서 확인
- Deletemenu 호출, 트리에서 제거 확인
- 새로고침 후에도 제거 상태 유지 확인
결과: ✅ PASS(09-11)
하위 노드가 있는 메뉴 삭제 시도 → 정책에 따른 차단/경고
| 항목 | 내용 |
|---|---|
| 기능 | iam-menu-delete |
| 구분 | 비정상 |
| 계층 | L1 ui |
| 통합 유형 | native |
| 사전 조건 | 로그인 |
| CSP Tier / 수명주기 | C |
| 자동화 | 구현됨 |
절차:
- 하위 노드를 가진 테스트용 부모 메뉴 선택 → Delete
- 실제 동작(차단/함께 삭제/경고) 확인 후 그 동작을 assert로 고정
결과: ⏭️ SKIP(09-11)
Export → 현재 Menu Tree를 파일로 다운로드
| 항목 | 내용 |
|---|---|
| 기능 | iam-menu-export-import |
| 구분 | 정상 |
| 계층 | L1 ui |
| 통합 유형 | native |
| 사전 조건 | 로그인 |
| CSP Tier / 수명주기 | C |
| 자동화 | 구현됨 |
절차:
- Export 클릭 → 다운로드 발생 확인
- Getmenuresources 호출 확인 (doExportMenus 트리거)
결과: ✅ PASS(09-11)
Import → 유효한 파일로 메뉴 구성 반영
| 항목 | 내용 |
|---|---|
| 기능 | iam-menu-export-import |
| 구분 | 정상 |
| 계층 | L1 ui |
| 통합 유형 | native |
| 사전 조건 | 로그인 |
| CSP Tier / 수명주기 | C |
| 자동화 | 구현됨 |
절차:
- Export로 받은 파일을 Import에 선택
- Createmenu/Updatemenu 호출 및 처리 결과 안내 확인
- Menu Tree 반영 확인
결과: ⏭️ SKIP(09-11)
형식이 맞지 않는 파일 Import → 오류 안내, 기존 트리 훼손 없음
| 항목 | 내용 |
|---|---|
| 기능 | iam-menu-export-import |
| 구분 | 비정상 |
| 계층 | L1 ui |
| 통합 유형 | native |
| 사전 조건 | 로그인 |
| CSP Tier / 수명주기 | C |
| 자동화 | 구현됨 |
절차:
- JSON/YAML이 아닌 임의 텍스트 파일(dummy.txt) 선택
- 형식 오류 안내 확인, 기존 Menu Tree 불변 확인
결과: ✅ PASS(09-11)
화면 진입 → 대기 목록/컬럼(Name·Email·Username·Requested At)·Approve·Reject 버튼 표시
| 항목 | 내용 |
|---|---|
| 기능 | iam-approval-list |
| 구분 | 정상 |
| 계층 | L1 ui |
| 통합 유형 | native |
| 사전 조건 | 로그인 |
| CSP Tier / 수명주기 | C |
| 자동화 | 구현됨 |
절차:
- Settings > Organizations > Approvals 진입
- 화면 제목 확인, 로딩 종료 후 Listusers 호출 및 목록 표시 확인
- 각 행에 Name/Email/Username/Requested At + Approve/Reject 버튼 존재 확인
결과: ❌ FAIL(09-16)
Refresh 클릭 → 신규 가입 신청 반영
| 항목 | 내용 |
|---|---|
| 기능 | iam-approval-list |
| 구분 | 정상 |
| 계층 | L1 ui |
| 통합 유형 | native |
| 사전 조건 | 로그인 |
| CSP Tier / 수명주기 | C |
| 자동화 | 구현됨 |
절차:
- Approvals 화면 진입, 현재 대기 건수 확인
- mock으로 신규 대기 사용자 1건 추가된 응답 준비
- Refresh 클릭 → Listusers 재호출 및 목록 갱신 확인
결과: ❌ FAIL(09-16)
대기 요청 0건 → 빈 상태 안내, 오류 화면 없음
| 항목 | 내용 |
|---|---|
| 기능 | iam-approval-list |
| 구분 | 비정상 |
| 계층 | L1 ui |
| 통합 유형 | native |
| 사전 조건 | 로그인 |
| CSP Tier / 수명주기 | C |
| 자동화 | 구현됨 |
절차:
- Listusers 응답을 빈 배열로 mock
- 목록 영역에 빈 상태(또는 No Data) 표시 확인, 콘솔/화면 오류 없음 확인
- Approve Selected 버튼이 비활성 또는 무해하게 동작하는지 확인
결과: ❌ FAIL(09-16)
Requested At 표시 형식 확인 (결함 후보 재확인)
| 항목 | 내용 |
|---|---|
| 기능 | iam-approval-list |
| 구분 | 정상 |
| 계층 | L1 ui |
| 통합 유형 | native |
| 사전 조건 | 로그인 |
| CSP Tier / 수명주기 | C |
| 자동화 | 구현됨 |
절차:
- 대기 행 1건의 Requested At 표시값을 실제 신청 시각과 대조
결과: ❌ FAIL(09-16)
개별 승인 → 목록에서 제거, Users에 Enabled로 등록
| 항목 | 내용 |
|---|---|
| 기능 | iam-approval-approve |
| 구분 | 정상 |
| 계층 | L1 ui |
| 통합 유형 | native |
| 사전 조건 | 로그인 |
| CSP Tier / 수명주기 | C |
| 자동화 | 구현됨 |
절차:
- 테스트 신청자 행의 Approve 클릭 → 확인창 확인
- 확인 → UpdateUserStatus(approved) 호출 확인
- 목록에서 해당 행 제거 확인
결과: ❌ FAIL(09-16)
일괄 승인(2건 선택) → 선택 건만 처리, 미선택 건은 대기 유지
| 항목 | 내용 |
|---|---|
| 기능 | iam-approval-approve |
| 구분 | 정상 |
| 계층 | L1 ui |
| 통합 유형 | native |
| 사전 조건 | 로그인 |
| CSP Tier / 수명주기 | C |
| 자동화 | 구현됨 |
절차:
- 신청자 2건 체크박스 선택 → Approve Selected 클릭 → 확인
- UpdateUserStatus가 선택된 2건에 대해서만 호출되는지 확인
- 목록에서 선택 2건만 제거되고 미선택 건은 유지되는지 확인
결과: ❌ FAIL(09-16)
전체 선택/해제 체크박스 → 부분 선택 시 헤더 체크박스 부분 선택 상태
| 항목 | 내용 |
|---|---|
| 기능 | iam-approval-approve |
| 구분 | 정상 |
| 계층 | L1 ui |
| 통합 유형 | native |
| 사전 조건 | 로그인 |
| CSP Tier / 수명주기 | C |
| 자동화 | 구현됨 |
절차:
- 헤더 전체선택 체크박스 클릭 → 모든 행 선택 확인
- 다시 클릭 → 전체 해제 확인
- 행 하나만 해제 → 헤더 체크박스가 부분 선택(indeterminate) 상태로 표시되는지 확인
결과: ❌ FAIL(09-16)
미선택 상태로 Approve Selected → 안내 alert, API 미호출
| 항목 | 내용 |
|---|---|
| 기능 | iam-approval-approve |
| 구분 | 비정상 |
| 계층 | L1 ui |
| 통합 유형 | native |
| 사전 조건 | 로그인 |
| CSP Tier / 수명주기 | C |
| 자동화 | 구현됨 |
절차:
- 행을 하나도 선택하지 않은 상태에서 Approve Selected 클릭
- UpdateUserStatus 미호출 확인
- 안내 확인 (alert('No users selected.'))
결과: ❌ FAIL(09-16)
두 창에서 동일 요청 중복 승인 시도 → 중복 처리/계정 중복 생성 없음
| 항목 | 내용 |
|---|---|
| 기능 | iam-approval-approve |
| 구분 | 비정상 |
| 계층 | L1 ui |
| 통합 유형 | native |
| 사전 조건 | 로그인 |
| CSP Tier / 수명주기 | C |
| 자동화 | 구현됨 |
절차:
- 동일 신청 건에 대해 두 번째 UpdateUserStatus(approved) 호출을 이미 처리된 상태로 mock
- 오류 응답에 대한 안내 확인, 중복 계정 생성 없음 확인
결과: ❌ FAIL(09-16)
개별 거부 → 사유 입력 후 목록에서 제거, 계정 미생성
| 항목 | 내용 |
|---|---|
| 기능 | iam-approval-reject |
| 구분 | 정상 |
| 계층 | L1 ui |
| 통합 유형 | native |
| 사전 조건 | 로그인 |
| CSP Tier / 수명주기 | C |
| 자동화 | 구현됨 |
절차:
- 테스트 신청자 행의 Reject 클릭 → 사유 입력 모달 표시 확인
- 사유 입력 후 확인 → UpdateUserStatus(disabled 계열) 호출 확인
- 목록에서 해당 행 제거 확인
결과: ❌ FAIL(09-16)
거부 사유 입력 모달에서 Cancel → 거부 미실행, 대기 상태 유지
| 항목 | 내용 |
|---|---|
| 기능 | iam-approval-reject |
| 구분 | 비정상 |
| 계층 | L1 ui |
| 통합 유형 | native |
| 사전 조건 | 로그인 |
| CSP Tier / 수명주기 | C |
| 자동화 | 구현됨 |
절차:
- Reject 클릭 → 사유 입력 모달 표시
- Cancel 클릭 → UpdateUserStatus 미호출 확인
- 해당 행이 대기 목록에 그대로 남아있는지 확인
결과: ❌ FAIL(09-16)