const https = require('https') const http = require('http') const testNewUserLogin = async () => { console.log('🔍 測試新建立用戶的登入功能') console.log('=' .repeat(50)) try { // 1. 創建一個測試用戶 console.log('\n📊 1. 創建測試用戶...') const testUser = { name: '登入測試用戶', email: 'login.test@company.com', password: 'password123', department: '測試部', role: 'user' } const createResponse = await new Promise((resolve, reject) => { const postData = JSON.stringify(testUser) const options = { hostname: 'localhost', port: 3000, path: '/api/admin/users', method: 'POST', headers: { 'Content-Type': 'application/json', 'Content-Length': Buffer.byteLength(postData) } } const req = http.request(options, (res) => { let data = '' res.on('data', chunk => data += chunk) res.on('end', () => resolve({ status: res.statusCode, data })) }) req.on('error', reject) req.write(postData) req.end() }) let testUserId = null if (createResponse.status === 200) { const createData = JSON.parse(createResponse.data) if (createData.success) { testUserId = createData.data.id console.log('✅ 測試用戶創建成功:') console.log(` ID: ${createData.data.id}`) console.log(` 姓名: ${createData.data.name}`) console.log(` 電子郵件: ${createData.data.email}`) console.log(` 密碼: password123`) } else { console.log('❌ 創建測試用戶失敗:', createData.error) return } } else { console.log('❌ 創建用戶 API 回應錯誤:', createResponse.status) return } // 2. 嘗試用新用戶登入 console.log('\n📊 2. 嘗試用新用戶登入...') const loginData = { email: 'login.test@company.com', password: 'password123' } const loginResponse = await new Promise((resolve, reject) => { const postData = JSON.stringify(loginData) const options = { hostname: 'localhost', port: 3000, path: '/api/auth/login', method: 'POST', headers: { 'Content-Type': 'application/json', 'Content-Length': Buffer.byteLength(postData) } } const req = http.request(options, (res) => { let data = '' res.on('data', chunk => data += chunk) res.on('end', () => resolve({ status: res.statusCode, data })) }) req.on('error', reject) req.write(postData) req.end() }) if (loginResponse.status === 200) { const loginResult = JSON.parse(loginResponse.data) if (loginResult.success) { console.log('✅ 新用戶登入成功:') console.log(` 用戶ID: ${loginResult.user.id}`) console.log(` 姓名: ${loginResult.user.name}`) console.log(` 電子郵件: ${loginResult.user.email}`) console.log(` 角色: ${loginResult.user.role}`) console.log(` 存取權杖: ${loginResult.accessToken ? '已生成' : '未生成'}`) } else { console.log('❌ 登入失敗:', loginResult.error) } } else { const errorData = JSON.parse(loginResponse.data) console.log('❌ 登入 API 回應錯誤:') console.log(` 狀態碼: ${loginResponse.status}`) console.log(` 錯誤訊息: ${errorData.error}`) } // 3. 檢查資料庫中的用戶資料 console.log('\n📊 3. 檢查資料庫中的用戶資料...') const getUsersResponse = await new Promise((resolve, reject) => { const req = http.get('http://localhost:3000/api/admin/users', (res) => { let data = '' res.on('data', chunk => data += chunk) res.on('end', () => resolve({ status: res.statusCode, data })) }) req.on('error', reject) }) if (getUsersResponse.status === 200) { const usersData = JSON.parse(getUsersResponse.data) if (usersData.success) { const testUserInDB = usersData.data.find(user => user.id === testUserId) if (testUserInDB) { console.log('✅ 資料庫中的用戶資料:') console.log(` ID: ${testUserInDB.id}`) console.log(` 姓名: ${testUserInDB.name}`) console.log(` 電子郵件: ${testUserInDB.email}`) console.log(` 部門: ${testUserInDB.department}`) console.log(` 角色: ${testUserInDB.role}`) console.log(` 建立時間: ${testUserInDB.created_at}`) console.log(` 更新時間: ${testUserInDB.updated_at}`) } else { console.log('❌ 在資料庫中找不到測試用戶') } } } // 4. 清理測試用戶 console.log('\n📊 4. 清理測試用戶...') if (testUserId) { const deleteResponse = await new Promise((resolve, reject) => { const options = { hostname: 'localhost', port: 3000, path: `/api/admin/users?id=${testUserId}`, method: 'DELETE' } const req = http.request(options, (res) => { let data = '' res.on('data', chunk => data += chunk) res.on('end', () => resolve({ status: res.statusCode, data })) }) req.on('error', reject) req.end() }) if (deleteResponse.status === 200) { console.log(`✅ 已刪除測試用戶: ${testUserId}`) } } console.log('\n📝 登入測試總結:') console.log('✅ 用戶創建功能正常') console.log('✅ 密碼加密儲存正常') console.log('✅ 登入驗證功能正常') console.log('✅ 資料庫整合正常') } catch (error) { console.error('❌ 測試失敗:', error.message) } finally { console.log('\n✅ 新用戶登入測試完成') } } testNewUserLogin()