backend/test/tests/smoke/smoke-auth-test.js

77 lines
1.8 KiB
JavaScript
Raw Permalink Normal View History

2025-11-07 07:44:23 +00:00
/**
* 認證功能冒煙測試
*
* 此測試用於 Dev/QA 環境快速驗證認證功能是否正常運作
* 測試重點基本功能可用性不關注性能
*/
import { registerWithCredentials, loginWithCredentials, refreshToken } from '../../scenarios/apis/auth.js';
import { healthCheck } from '../../scenarios/apis/health.js';
export const options = {
scenarios: {
smoke_auth: {
executor: 'shared-iterations',
vus: 1,
iterations: 1,
maxDuration: '30s',
tags: { test_type: 'smoke', api: 'auth' },
},
},
thresholds: {
checks: ['rate==1.0'], // 所有檢查必須通過
http_req_duration: ['p(95)<2000'], // 95% 的請求應在 2 秒內完成
},
};
export default function () {
const baseUrl = __ENV.BASE_URL || 'http://localhost:8888';
const timestamp = Date.now();
const loginId = `smoke_test_${timestamp}@example.com`;
const password = 'SmokeTest123!';
// 1. 健康檢查
healthCheck({ baseUrl });
// 2. 註冊
const registerResult = registerWithCredentials({
baseUrl,
loginId,
password,
});
if (!registerResult.success) {
console.error('Smoke test failed: Registration failed');
return;
}
// 3. 登入
const loginResult = loginWithCredentials({
baseUrl,
loginId,
password,
});
if (!loginResult.success) {
console.error('Smoke test failed: Login failed');
return;
}
// 4. 刷新 Token
if (loginResult.tokens) {
const refreshResult = refreshToken({
baseUrl,
accessToken: loginResult.tokens.accessToken,
refreshToken: loginResult.tokens.refreshToken,
});
if (!refreshResult.success) {
console.error('Smoke test failed: Token refresh failed');
return;
}
}
console.log('Smoke test passed: All auth operations succeeded');
}