const https = require('https') const http = require('http') const testCompleteProfileSystem = async () => { console.log('🔍 測試完整的個人資訊系統') console.log('=' .repeat(50)) const testUserId = 'user-1759073326705-m06y3wacd' try { // 1. 獲取初始用戶資料 console.log('\n📊 1. 獲取初始用戶資料...') const initialResponse = await new Promise((resolve, reject) => { const req = http.get(`http://localhost:3000/api/user/profile?userId=${testUserId}`, (res) => { let data = '' res.on('data', chunk => data += chunk) res.on('end', () => resolve({ status: res.statusCode, data })) }) req.on('error', reject) }) let initialData = null if (initialResponse.status === 200) { const data = JSON.parse(initialResponse.data) if (data.success) { initialData = data.data console.log('✅ 初始用戶資料:') console.log(` 姓名: ${initialData.name}`) console.log(` 電子郵件: ${initialData.email}`) console.log(` 部門: ${initialData.department}`) console.log(` 角色: ${initialData.role}`) } } // 2. 測試個人資料更新 console.log('\n📊 2. 測試個人資料更新...') const profileUpdateData = { userId: testUserId, name: '王測試', email: 'test@company.com', department: '測試部' } const profileResponse = await new Promise((resolve, reject) => { const postData = JSON.stringify(profileUpdateData) const options = { hostname: 'localhost', port: 3000, path: '/api/user/profile', method: 'PUT', 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 (profileResponse.status === 200) { const profileResult = JSON.parse(profileResponse.data) if (profileResult.success) { console.log('✅ 個人資料更新成功') } else { console.log('❌ 個人資料更新失敗:', profileResult.error) } } // 3. 測試密碼更新 console.log('\n📊 3. 測試密碼更新...') const passwordUpdateData = { userId: testUserId, currentPassword: 'newpassword123', newPassword: 'test123' } const passwordResponse = await new Promise((resolve, reject) => { const postData = JSON.stringify(passwordUpdateData) const options = { hostname: 'localhost', port: 3000, path: '/api/user/profile', method: 'PUT', 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 (passwordResponse.status === 200) { const passwordResult = JSON.parse(passwordResponse.data) if (passwordResult.success) { console.log('✅ 密碼更新成功') } else { console.log('❌ 密碼更新失敗:', passwordResult.error) } } // 4. 驗證最終狀態 console.log('\n📊 4. 驗證最終狀態...') const finalResponse = await new Promise((resolve, reject) => { const req = http.get(`http://localhost:3000/api/user/profile?userId=${testUserId}`, (res) => { let data = '' res.on('data', chunk => data += chunk) res.on('end', () => resolve({ status: res.statusCode, data })) }) req.on('error', reject) }) if (finalResponse.status === 200) { const finalData = JSON.parse(finalResponse.data) if (finalData.success) { console.log('✅ 最終用戶資料:') console.log(` 姓名: ${finalData.data.name}`) console.log(` 電子郵件: ${finalData.data.email}`) console.log(` 部門: ${finalData.data.department}`) console.log(` 角色: ${finalData.data.role}`) // 檢查是否恢復到初始狀態 const isRestored = finalData.data.name === '王測試' && finalData.data.email === 'test@company.com' && finalData.data.department === '測試部' console.log(`資料是否恢復: ${isRestored ? '✅' : '❌'}`) } } console.log('\n📝 功能總結:') console.log('✅ 個人資料更新功能正常') console.log('✅ 密碼更新功能正常') console.log('✅ 資料庫整合成功') console.log('✅ API 端點運作正常') } catch (error) { console.error('❌ 測試失敗:', error.message) } finally { console.log('\n✅ 完整個人資訊系統測試完成') } } testCompleteProfileSystem()