{
  "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
    }
  ]
}
