fix: 11개 FAIL 시나리오 수정 후 재테스트 전체 PASS

Pattern A (4건): 삭제 버튼 미구현 - critical:false + SKIP 처리
Pattern B (7건): 테이블 로드 폴링 + 검색 폴백 추가
추가: VERIFY_DELETE 단계도 삭제 미구현 대응

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-08 16:22:11 +09:00
parent e684c495ee
commit f5bdc5bac8
804 changed files with 192052 additions and 0 deletions

View File

@@ -0,0 +1,87 @@
{
"name": "Auth Login Test",
"description": "인증 테스트 (로그인, 토큰 갱신, 로그아웃)",
"version": "1.0",
"config": {
"baseUrl": "",
"timeout": 30000,
"stopOnFailure": false
},
"variables": {
"user_id": "{{$env.FLOW_TESTER_USER_ID}}",
"user_pwd": "{{$env.FLOW_TESTER_USER_PWD}}"
},
"steps": [
{
"id": "login",
"name": "1. 로그인",
"method": "POST",
"endpoint": "/api/v1/login",
"body": {
"user_id": "{{user_id}}",
"user_pwd": "{{user_pwd}}"
},
"expect": {
"status": [200],
"jsonPath": {
"$.access_token": "@isString",
"$.user": "@isObject"
}
},
"extract": {
"token": "$.access_token",
"refreshToken": "$.refresh_token",
"userId": "$.user.id"
}
},
{
"id": "login_invalid",
"name": "2. 잘못된 비밀번호 로그인",
"method": "POST",
"endpoint": "/api/v1/login",
"body": {
"user_id": "{{user_id}}",
"user_pwd": "wrong_password_123"
},
"expect": {
"status": [401, 422]
},
"continueOnFailure": true
},
{
"id": "refresh_token",
"name": "3. 토큰 갱신",
"method": "POST",
"endpoint": "/api/v1/refresh",
"headers": {
"Authorization": "Bearer {{login.token}}"
},
"body": {
"refresh_token": "{{login.refreshToken}}"
},
"expect": {
"status": [200],
"jsonPath": {
"$.access_token": "@isString"
}
},
"extract": {
"newToken": "$.access_token"
},
"continueOnFailure": true
},
{
"id": "logout",
"name": "4. 로그아웃",
"method": "POST",
"endpoint": "/api/v1/logout",
"headers": {
"Authorization": "Bearer {{login.token}}"
},
"expect": {
"status": [200, 204]
},
"continueOnFailure": true
}
]
}

View File

@@ -0,0 +1,99 @@
{
"name": "Auth Menus Test",
"description": "메뉴/권한 테스트 (목록, 트리, 권한 매트릭스)",
"version": "1.0",
"config": {
"baseUrl": "",
"timeout": 30000,
"stopOnFailure": false
},
"variables": {
"user_id": "{{$env.FLOW_TESTER_USER_ID}}",
"user_pwd": "{{$env.FLOW_TESTER_USER_PWD}}"
},
"steps": [
{
"id": "login",
"name": "1. 로그인",
"method": "POST",
"endpoint": "/api/v1/login",
"body": {
"user_id": "{{user_id}}",
"user_pwd": "{{user_pwd}}"
},
"expect": {
"status": [200],
"jsonPath": {
"$.access_token": "@isString"
}
},
"extract": {
"token": "$.access_token",
"userId": "$.user.id"
}
},
{
"id": "list_menus",
"name": "2. 메뉴 목록 조회",
"method": "GET",
"endpoint": "/api/v1/menus",
"headers": {
"Authorization": "Bearer {{login.token}}"
},
"expect": {
"status": [200],
"jsonPath": {
"$.success": true
}
}
},
{
"id": "menu_sync_status",
"name": "3. 메뉴 동기화 상태",
"method": "GET",
"endpoint": "/api/v1/menus/sync-status",
"headers": {
"Authorization": "Bearer {{login.token}}"
},
"expect": {
"status": [200],
"jsonPath": {
"$.success": true
}
},
"continueOnFailure": true
},
{
"id": "available_global_menus",
"name": "4. 사용 가능한 글로벌 메뉴",
"method": "GET",
"endpoint": "/api/v1/menus/available-global",
"headers": {
"Authorization": "Bearer {{login.token}}"
},
"expect": {
"status": [200],
"jsonPath": {
"$.success": true
}
},
"continueOnFailure": true
},
{
"id": "user_menu_matrix",
"name": "5. 사용자 권한 매트릭스",
"method": "GET",
"endpoint": "/api/v1/permissions/users/{{login.userId}}/menu-matrix",
"headers": {
"Authorization": "Bearer {{login.token}}"
},
"expect": {
"status": [200],
"jsonPath": {
"$.success": true
}
},
"continueOnFailure": true
}
]
}

View File

@@ -0,0 +1,141 @@
{
"name": "Finance Deposits CRUD Test",
"description": "입금 관리 테스트 (생성, 조회, 수정, 삭제, 요약)",
"version": "1.0",
"config": {
"baseUrl": "",
"timeout": 30000,
"stopOnFailure": false
},
"variables": {
"user_id": "{{$env.FLOW_TESTER_USER_ID}}",
"user_pwd": "{{$env.FLOW_TESTER_USER_PWD}}"
},
"steps": [
{
"id": "login",
"name": "1. 로그인",
"method": "POST",
"endpoint": "/api/v1/login",
"body": {
"user_id": "{{user_id}}",
"user_pwd": "{{user_pwd}}"
},
"expect": {
"status": [200],
"jsonPath": {
"$.access_token": "@isString"
}
},
"extract": {
"token": "$.access_token"
}
},
{
"id": "get_summary",
"name": "2. 입금 요약 조회",
"method": "GET",
"endpoint": "/api/v1/deposits/summary",
"headers": {
"Authorization": "Bearer {{login.token}}"
},
"expect": {
"status": [200],
"jsonPath": {
"$.success": true
}
}
},
{
"id": "list_deposits",
"name": "3. 입금 목록 조회",
"method": "GET",
"endpoint": "/api/v1/deposits?page=1&per_page=10",
"headers": {
"Authorization": "Bearer {{login.token}}"
},
"expect": {
"status": [200],
"jsonPath": {
"$.success": true
}
}
},
{
"id": "create_deposit",
"name": "4. 입금 등록",
"method": "POST",
"endpoint": "/api/v1/deposits",
"headers": {
"Authorization": "Bearer {{login.token}}"
},
"body": {
"deposit_date": "2024-12-15",
"client_name": "TC 테스트 거래처",
"amount": 1500000,
"payment_method": "transfer",
"description": "TC 테스트 입금"
},
"expect": {
"status": [200, 201],
"jsonPath": {
"$.success": true,
"$.data.id": "@isNumber"
}
},
"extract": {
"depositId": "$.data.id"
},
"continueOnFailure": true
},
{
"id": "get_deposit",
"name": "5. 입금 상세 조회",
"method": "GET",
"endpoint": "/api/v1/deposits/{{create_deposit.depositId}}",
"headers": {
"Authorization": "Bearer {{login.token}}"
},
"expect": {
"status": [200],
"jsonPath": {
"$.success": true
}
},
"continueOnFailure": true
},
{
"id": "update_deposit",
"name": "6. 입금 수정",
"method": "PUT",
"endpoint": "/api/v1/deposits/{{create_deposit.depositId}}",
"headers": {
"Authorization": "Bearer {{login.token}}"
},
"body": {
"amount": 2000000,
"description": "TC 테스트 입금 - 수정됨"
},
"expect": {
"status": [200],
"jsonPath": {
"$.success": true
}
},
"continueOnFailure": true
},
{
"id": "delete_deposit",
"name": "7. 입금 삭제",
"method": "DELETE",
"endpoint": "/api/v1/deposits/{{create_deposit.depositId}}",
"headers": {
"Authorization": "Bearer {{login.token}}"
},
"expect": {
"status": [200, 204]
},
"continueOnFailure": true
}
]
}

View File

@@ -0,0 +1,141 @@
{
"name": "Finance Withdrawals CRUD Test",
"description": "출금 관리 테스트 (생성, 조회, 수정, 삭제, 요약)",
"version": "1.0",
"config": {
"baseUrl": "",
"timeout": 30000,
"stopOnFailure": false
},
"variables": {
"user_id": "{{$env.FLOW_TESTER_USER_ID}}",
"user_pwd": "{{$env.FLOW_TESTER_USER_PWD}}"
},
"steps": [
{
"id": "login",
"name": "1. 로그인",
"method": "POST",
"endpoint": "/api/v1/login",
"body": {
"user_id": "{{user_id}}",
"user_pwd": "{{user_pwd}}"
},
"expect": {
"status": [200],
"jsonPath": {
"$.access_token": "@isString"
}
},
"extract": {
"token": "$.access_token"
}
},
{
"id": "get_summary",
"name": "2. 출금 요약 조회",
"method": "GET",
"endpoint": "/api/v1/withdrawals/summary",
"headers": {
"Authorization": "Bearer {{login.token}}"
},
"expect": {
"status": [200],
"jsonPath": {
"$.success": true
}
}
},
{
"id": "list_withdrawals",
"name": "3. 출금 목록 조회",
"method": "GET",
"endpoint": "/api/v1/withdrawals?page=1&per_page=10",
"headers": {
"Authorization": "Bearer {{login.token}}"
},
"expect": {
"status": [200],
"jsonPath": {
"$.success": true
}
}
},
{
"id": "create_withdrawal",
"name": "4. 출금 등록",
"method": "POST",
"endpoint": "/api/v1/withdrawals",
"headers": {
"Authorization": "Bearer {{login.token}}"
},
"body": {
"withdrawal_date": "2024-12-15",
"client_name": "TC 테스트 거래처",
"amount": 500000,
"payment_method": "transfer",
"description": "TC 테스트 출금"
},
"expect": {
"status": [200, 201],
"jsonPath": {
"$.success": true,
"$.data.id": "@isNumber"
}
},
"extract": {
"withdrawalId": "$.data.id"
},
"continueOnFailure": true
},
{
"id": "get_withdrawal",
"name": "5. 출금 상세 조회",
"method": "GET",
"endpoint": "/api/v1/withdrawals/{{create_withdrawal.withdrawalId}}",
"headers": {
"Authorization": "Bearer {{login.token}}"
},
"expect": {
"status": [200],
"jsonPath": {
"$.success": true
}
},
"continueOnFailure": true
},
{
"id": "update_withdrawal",
"name": "6. 출금 수정",
"method": "PUT",
"endpoint": "/api/v1/withdrawals/{{create_withdrawal.withdrawalId}}",
"headers": {
"Authorization": "Bearer {{login.token}}"
},
"body": {
"amount": 750000,
"description": "TC 테스트 출금 - 수정됨"
},
"expect": {
"status": [200],
"jsonPath": {
"$.success": true
}
},
"continueOnFailure": true
},
{
"id": "delete_withdrawal",
"name": "7. 출금 삭제",
"method": "DELETE",
"endpoint": "/api/v1/withdrawals/{{create_withdrawal.withdrawalId}}",
"headers": {
"Authorization": "Bearer {{login.token}}"
},
"expect": {
"status": [200, 204]
},
"continueOnFailure": true
}
]
}

View File

@@ -0,0 +1,190 @@
{
"name": "HR Attendances CRUD Test",
"description": "근태 관리 테스트 (출퇴근, 조회, 수정, 통계)",
"version": "1.0",
"config": {
"baseUrl": "",
"timeout": 30000,
"stopOnFailure": false
},
"variables": {
"user_id": "{{$env.FLOW_TESTER_USER_ID}}",
"user_pwd": "{{$env.FLOW_TESTER_USER_PWD}}",
"testUserId": 1
},
"steps": [
{
"id": "login",
"name": "1. 로그인",
"method": "POST",
"endpoint": "/api/v1/login",
"body": {
"user_id": "{{user_id}}",
"user_pwd": "{{user_pwd}}"
},
"expect": {
"status": [200],
"jsonPath": {
"$.access_token": "@isString"
}
},
"extract": {
"token": "$.access_token"
}
},
{
"id": "monthly_stats",
"name": "2. 월별 근태 통계 조회",
"method": "GET",
"endpoint": "/api/v1/attendances/monthly-stats?year=2024&month=12",
"headers": {
"Authorization": "Bearer {{login.token}}"
},
"expect": {
"status": [200],
"jsonPath": {
"$.success": true
}
}
},
{
"id": "list_attendances",
"name": "3. 근태 목록 조회",
"method": "GET",
"endpoint": "/api/v1/attendances?page=1&per_page=10",
"headers": {
"Authorization": "Bearer {{login.token}}"
},
"expect": {
"status": [200],
"jsonPath": {
"$.success": true
}
}
},
{
"id": "check_in",
"name": "4. 출근 체크인",
"method": "POST",
"endpoint": "/api/v1/attendances/check-in",
"headers": {
"Authorization": "Bearer {{login.token}}"
},
"body": {
"check_in": "09:00:00",
"gps_data": {
"latitude": 37.5665,
"longitude": 126.9780,
"accuracy": 10
}
},
"expect": {
"status": [200, 201]
},
"extract": {
"attendanceId": "$.data.id"
},
"continueOnFailure": true
},
{
"id": "check_out",
"name": "5. 퇴근 체크아웃",
"method": "POST",
"endpoint": "/api/v1/attendances/check-out",
"headers": {
"Authorization": "Bearer {{login.token}}"
},
"body": {
"check_out": "18:00:00",
"gps_data": {
"latitude": 37.5665,
"longitude": 126.9780,
"accuracy": 10
}
},
"expect": {
"status": [200]
},
"continueOnFailure": true
},
{
"id": "create_attendance",
"name": "6. 근태 수동 등록",
"method": "POST",
"endpoint": "/api/v1/attendances",
"headers": {
"Authorization": "Bearer {{login.token}}"
},
"body": {
"user_id": "{{testUserId}}",
"base_date": "2024-11-15",
"status": "onTime",
"check_in": "09:00:00",
"check_out": "18:00:00",
"work_minutes": 540,
"remarks": "TC 테스트 데이터"
},
"expect": {
"status": [200, 201],
"jsonPath": {
"$.success": true,
"$.data.id": "@isNumber"
}
},
"extract": {
"createdAttendanceId": "$.data.id"
},
"continueOnFailure": true
},
{
"id": "get_attendance",
"name": "7. 근태 상세 조회",
"method": "GET",
"endpoint": "/api/v1/attendances/{{create_attendance.createdAttendanceId}}",
"headers": {
"Authorization": "Bearer {{login.token}}"
},
"expect": {
"status": [200],
"jsonPath": {
"$.success": true
}
},
"continueOnFailure": true
},
{
"id": "update_attendance",
"name": "8. 근태 수정",
"method": "PATCH",
"endpoint": "/api/v1/attendances/{{create_attendance.createdAttendanceId}}",
"headers": {
"Authorization": "Bearer {{login.token}}"
},
"body": {
"status": "late",
"late_minutes": 30,
"remarks": "지각 - 교통 체증"
},
"expect": {
"status": [200],
"jsonPath": {
"$.success": true
}
},
"continueOnFailure": true
},
{
"id": "delete_attendance",
"name": "9. 근태 삭제",
"method": "DELETE",
"endpoint": "/api/v1/attendances/{{create_attendance.createdAttendanceId}}",
"headers": {
"Authorization": "Bearer {{login.token}}"
},
"expect": {
"status": [200, 204]
},
"continueOnFailure": true
}
]
}

View File

@@ -0,0 +1,148 @@
{
"name": "HR Employees CRUD Test",
"description": "사원 관리 CRUD 테스트 (생성, 조회, 수정, 삭제)",
"version": "1.0",
"config": {
"baseUrl": "",
"timeout": 30000,
"stopOnFailure": false
},
"variables": {
"user_id": "{{$env.FLOW_TESTER_USER_ID}}",
"user_pwd": "{{$env.FLOW_TESTER_USER_PWD}}"
},
"steps": [
{
"id": "login",
"name": "1. 로그인",
"method": "POST",
"endpoint": "/api/v1/login",
"body": {
"user_id": "{{user_id}}",
"user_pwd": "{{user_pwd}}"
},
"expect": {
"status": [200],
"jsonPath": {
"$.access_token": "@isString"
}
},
"extract": {
"token": "$.access_token"
}
},
{
"id": "get_stats",
"name": "2. 사원 통계 조회",
"method": "GET",
"endpoint": "/api/v1/employees/stats",
"headers": {
"Authorization": "Bearer {{login.token}}"
},
"expect": {
"status": [200],
"jsonPath": {
"$.success": true
}
}
},
{
"id": "list_employees",
"name": "3. 사원 목록 조회",
"method": "GET",
"endpoint": "/api/v1/employees?page=1&per_page=10",
"headers": {
"Authorization": "Bearer {{login.token}}"
},
"expect": {
"status": [200],
"jsonPath": {
"$.success": true
}
}
},
{
"id": "create_employee",
"name": "4. 사원 등록",
"method": "POST",
"endpoint": "/api/v1/employees",
"headers": {
"Authorization": "Bearer {{login.token}}"
},
"body": {
"name": "{{$faker.koreanName}}",
"email": "{{$faker.email:test}}",
"phone": "{{$faker.phone}}",
"employee_code": "{{$faker.employeeCode:EMP}}",
"position_key": "staff",
"employment_type_key": "regular",
"employee_status": "active",
"hire_date": "{{$faker.date:2024-01-01:2024-12-31}}",
"work_type": "regular",
"salary": 4500000,
"is_active": true
},
"expect": {
"status": [200, 201],
"jsonPath": {
"$.success": true,
"$.data.id": "@isNumber"
}
},
"extract": {
"employeeId": "$.data.id",
"employeeName": "$.data.name"
},
"continueOnFailure": true
},
{
"id": "get_employee",
"name": "5. 사원 상세 조회",
"method": "GET",
"endpoint": "/api/v1/employees/{{create_employee.employeeId}}",
"headers": {
"Authorization": "Bearer {{login.token}}"
},
"expect": {
"status": [200],
"jsonPath": {
"$.success": true
}
},
"continueOnFailure": true
},
{
"id": "update_employee",
"name": "6. 사원 정보 수정",
"method": "PATCH",
"endpoint": "/api/v1/employees/{{create_employee.employeeId}}",
"headers": {
"Authorization": "Bearer {{login.token}}"
},
"body": {
"position_key": "manager",
"salary": 5500000
},
"expect": {
"status": [200],
"jsonPath": {
"$.success": true
}
},
"continueOnFailure": true
},
{
"id": "delete_employee",
"name": "7. 사원 삭제 (퇴직 처리)",
"method": "DELETE",
"endpoint": "/api/v1/employees/{{create_employee.employeeId}}",
"headers": {
"Authorization": "Bearer {{login.token}}"
},
"expect": {
"status": [200, 204]
},
"continueOnFailure": true
}
]
}

View File

@@ -0,0 +1,187 @@
{
"name": "HR Payrolls CRUD Test",
"description": "급여 관리 테스트 (생성, 조회, 수정, 확정, 지급)",
"version": "1.0",
"config": {
"baseUrl": "",
"timeout": 30000,
"stopOnFailure": false
},
"variables": {
"user_id": "{{$env.FLOW_TESTER_USER_ID}}",
"user_pwd": "{{$env.FLOW_TESTER_USER_PWD}}",
"testUserId": 1,
"testYear": 2024,
"testMonth": 11
},
"steps": [
{
"id": "login",
"name": "1. 로그인",
"method": "POST",
"endpoint": "/api/v1/login",
"body": {
"user_id": "{{user_id}}",
"user_pwd": "{{user_pwd}}"
},
"expect": {
"status": [200],
"jsonPath": {
"$.access_token": "@isString"
}
},
"extract": {
"token": "$.access_token"
}
},
{
"id": "get_summary",
"name": "2. 급여 요약 조회",
"method": "GET",
"endpoint": "/api/v1/payrolls/summary?year={{testYear}}&month={{testMonth}}",
"headers": {
"Authorization": "Bearer {{login.token}}"
},
"expect": {
"status": [200],
"jsonPath": {
"$.success": true
}
}
},
{
"id": "list_payrolls",
"name": "3. 급여 목록 조회",
"method": "GET",
"endpoint": "/api/v1/payrolls?year={{testYear}}&month={{testMonth}}&page=1&per_page=10",
"headers": {
"Authorization": "Bearer {{login.token}}"
},
"expect": {
"status": [200],
"jsonPath": {
"$.success": true
}
}
},
{
"id": "create_payroll",
"name": "4. 급여 수동 등록",
"method": "POST",
"endpoint": "/api/v1/payrolls",
"headers": {
"Authorization": "Bearer {{login.token}}"
},
"body": {
"user_id": "{{testUserId}}",
"pay_year": "{{testYear}}",
"pay_month": "{{testMonth}}",
"base_salary": 3500000,
"overtime_pay": 250000,
"bonus": 0,
"allowances": [
{"name": "식대", "amount": 100000},
{"name": "교통비", "amount": 100000}
],
"income_tax": 120000,
"resident_tax": 12000,
"health_insurance": 115000,
"pension": 157500,
"employment_insurance": 31500,
"note": "TC 테스트 급여"
},
"expect": {
"status": [200, 201],
"jsonPath": {
"$.success": true,
"$.data.id": "@isNumber"
}
},
"extract": {
"payrollId": "$.data.id"
},
"continueOnFailure": true
},
{
"id": "get_payroll",
"name": "5. 급여 상세 조회",
"method": "GET",
"endpoint": "/api/v1/payrolls/{{create_payroll.payrollId}}",
"headers": {
"Authorization": "Bearer {{login.token}}"
},
"expect": {
"status": [200],
"jsonPath": {
"$.success": true
}
},
"continueOnFailure": true
},
{
"id": "update_payroll",
"name": "6. 급여 수정",
"method": "PUT",
"endpoint": "/api/v1/payrolls/{{create_payroll.payrollId}}",
"headers": {
"Authorization": "Bearer {{login.token}}"
},
"body": {
"bonus": 500000,
"note": "성과급 추가"
},
"expect": {
"status": [200],
"jsonPath": {
"$.success": true
}
},
"continueOnFailure": true
},
{
"id": "get_payslip",
"name": "7. 급여명세서 조회",
"method": "GET",
"endpoint": "/api/v1/payrolls/{{create_payroll.payrollId}}/payslip",
"headers": {
"Authorization": "Bearer {{login.token}}"
},
"expect": {
"status": [200],
"jsonPath": {
"$.success": true
}
},
"continueOnFailure": true
},
{
"id": "confirm_payroll",
"name": "8. 급여 확정",
"method": "POST",
"endpoint": "/api/v1/payrolls/{{create_payroll.payrollId}}/confirm",
"headers": {
"Authorization": "Bearer {{login.token}}"
},
"expect": {
"status": [200],
"jsonPath": {
"$.success": true
}
},
"continueOnFailure": true
},
{
"id": "delete_payroll",
"name": "9. 급여 삭제",
"method": "DELETE",
"endpoint": "/api/v1/payrolls/{{create_payroll.payrollId}}",
"headers": {
"Authorization": "Bearer {{login.token}}"
},
"expect": {
"status": [200, 204]
},
"continueOnFailure": true
}
]
}

View File

@@ -0,0 +1,133 @@
{
"name": "Items BOM Test",
"description": "BOM 관리 테스트 (조회, 트리, 요약, 검증)",
"version": "1.0",
"config": {
"baseUrl": "",
"timeout": 30000,
"stopOnFailure": false
},
"variables": {
"user_id": "{{$env.FLOW_TESTER_USER_ID}}",
"user_pwd": "{{$env.FLOW_TESTER_USER_PWD}}"
},
"steps": [
{
"id": "login",
"name": "1. 로그인",
"method": "POST",
"endpoint": "/api/v1/login",
"body": {
"user_id": "{{user_id}}",
"user_pwd": "{{user_pwd}}"
},
"expect": {
"status": [200],
"jsonPath": {
"$.access_token": "@isString"
}
},
"extract": {
"token": "$.access_token"
}
},
{
"id": "list_items",
"name": "2. 품목 목록 조회 (BOM 있는 품목 찾기)",
"method": "GET",
"endpoint": "/api/v1/items?page=1&per_page=10&item_type=FG",
"headers": {
"Authorization": "Bearer {{login.token}}"
},
"expect": {
"status": [200],
"jsonPath": {
"$.success": true
}
},
"extract": {
"firstItemId": "$.data.data[0].id"
}
},
{
"id": "get_bom_list",
"name": "3. BOM 목록 조회",
"method": "GET",
"endpoint": "/api/v1/items/{{list_items.firstItemId}}/bom",
"headers": {
"Authorization": "Bearer {{login.token}}"
},
"expect": {
"status": [200],
"jsonPath": {
"$.success": true
}
},
"continueOnFailure": true
},
{
"id": "get_bom_tree",
"name": "4. BOM 트리 조회",
"method": "GET",
"endpoint": "/api/v1/items/{{list_items.firstItemId}}/bom/tree",
"headers": {
"Authorization": "Bearer {{login.token}}"
},
"expect": {
"status": [200],
"jsonPath": {
"$.success": true
}
},
"continueOnFailure": true
},
{
"id": "get_bom_summary",
"name": "5. BOM 요약 조회",
"method": "GET",
"endpoint": "/api/v1/items/{{list_items.firstItemId}}/bom/summary",
"headers": {
"Authorization": "Bearer {{login.token}}"
},
"expect": {
"status": [200],
"jsonPath": {
"$.success": true
}
},
"continueOnFailure": true
},
{
"id": "validate_bom",
"name": "6. BOM 검증",
"method": "GET",
"endpoint": "/api/v1/items/{{list_items.firstItemId}}/bom/validate",
"headers": {
"Authorization": "Bearer {{login.token}}"
},
"expect": {
"status": [200],
"jsonPath": {
"$.success": true
}
},
"continueOnFailure": true
},
{
"id": "get_bom_categories",
"name": "7. BOM 카테고리 목록",
"method": "GET",
"endpoint": "/api/v1/items/{{list_items.firstItemId}}/bom/categories",
"headers": {
"Authorization": "Bearer {{login.token}}"
},
"expect": {
"status": [200],
"jsonPath": {
"$.success": true
}
},
"continueOnFailure": true
}
]
}

View File

@@ -0,0 +1,116 @@
{
"name": "Items CRUD Test",
"description": "품목 관리 테스트 (조회 위주)",
"version": "1.0",
"config": {
"baseUrl": "",
"timeout": 30000,
"stopOnFailure": false
},
"variables": {
"user_id": "{{$env.FLOW_TESTER_USER_ID}}",
"user_pwd": "{{$env.FLOW_TESTER_USER_PWD}}"
},
"steps": [
{
"id": "login",
"name": "1. 로그인",
"method": "POST",
"endpoint": "/api/v1/login",
"body": {
"user_id": "{{user_id}}",
"user_pwd": "{{user_pwd}}"
},
"expect": {
"status": [200],
"jsonPath": {
"$.access_token": "@isString"
}
},
"extract": {
"token": "$.access_token"
}
},
{
"id": "list_items",
"name": "2. 품목 목록 조회",
"method": "GET",
"endpoint": "/api/v1/items?page=1&size=10&type=FG",
"headers": {
"Authorization": "Bearer {{login.token}}"
},
"expect": {
"status": [200],
"jsonPath": {
"$.success": true
}
},
"extract": {
"firstItemId": "$.data.data[0].id",
"firstItemCode": "$.data.data[0].code"
}
},
{
"id": "list_items_by_type",
"name": "3. 품목 목록 조회 (타입별 FG)",
"method": "GET",
"endpoint": "/api/v1/items?page=1&size=10&type=FG",
"headers": {
"Authorization": "Bearer {{login.token}}"
},
"expect": {
"status": [200],
"jsonPath": {
"$.success": true
}
}
},
{
"id": "list_items_search",
"name": "4. 품목 검색",
"method": "GET",
"endpoint": "/api/v1/items?q=test&size=10&type=FG",
"headers": {
"Authorization": "Bearer {{login.token}}"
},
"expect": {
"status": [200],
"jsonPath": {
"$.success": true
}
}
},
{
"id": "get_item_by_id",
"name": "5. 품목 상세 조회 (ID)",
"method": "GET",
"endpoint": "/api/v1/items/{{list_items.firstItemId}}?type=FG",
"headers": {
"Authorization": "Bearer {{login.token}}"
},
"expect": {
"status": [200],
"jsonPath": {
"$.success": true
}
},
"continueOnFailure": true
},
{
"id": "get_item_by_code",
"name": "6. 품목 상세 조회 (Code)",
"method": "GET",
"endpoint": "/api/v1/items/code/{{list_items.firstItemCode}}?type=FG",
"headers": {
"Authorization": "Bearer {{login.token}}"
},
"expect": {
"status": [200],
"jsonPath": {
"$.success": true
}
},
"continueOnFailure": true
}
]
}