const axios = require('axios'); const API_URL = 'http://localhost:3000/api'; async function testSignup() { try { console.log('Testing signup functionality...\n'); // Generate a random mobile number for testing const randomMobile = '70' + Math.floor(10000000 + Math.random() * 90000000); const signupData = { mobile_number: randomMobile, full_name: 'Test User Signup', password: 'test123456', email: 'testuser@example.com', address: '123 Test Street, Test City', emergency_contact: '8888888888' }; console.log('Signing up with data:', { ...signupData, password: '********' }); const response = await axios.post(`${API_URL}/auth/signup`, signupData); if (response.data.success) { console.log('\n✅ Signup successful!'); console.log('User created:', { id: response.data.data.user.id, mobile_number: response.data.data.user.mobile_number, full_name: response.data.data.user.full_name, email: response.data.data.user.email, role: response.data.data.user.role, is_active: response.data.data.user.is_active }); console.log('Token received:', response.data.data.token.substring(0, 20) + '...'); // Test login with the new account console.log('\n\nTesting login with new account...'); const loginResponse = await axios.post(`${API_URL}/auth/login`, { mobile_number: randomMobile, password: 'test123456' }); if (loginResponse.data.success) { console.log('✅ Login successful with new account!'); console.log('User:', { id: loginResponse.data.data.user.id, mobile_number: loginResponse.data.data.user.mobile_number, full_name: loginResponse.data.data.user.full_name, role: loginResponse.data.data.user.role }); } else { console.log('❌ Login failed:', loginResponse.data.message); } // Test getting profile console.log('\n\nTesting profile retrieval...'); const token = loginResponse.data.data.token; const profileResponse = await axios.get(`${API_URL}/auth/profile`, { headers: { Authorization: `Bearer ${token}` } }); if (profileResponse.data.success) { console.log('✅ Profile retrieved successfully!'); console.log('Profile data:', { id: profileResponse.data.data.user.id, mobile_number: profileResponse.data.data.user.mobile_number, full_name: profileResponse.data.data.user.full_name, email: profileResponse.data.data.user.email, address: profileResponse.data.data.user.address, emergency_contact: profileResponse.data.data.user.emergency_contact, role: profileResponse.data.data.user.role }); } } else { console.log('❌ Signup failed:', response.data.message); } // Test validation errors console.log('\n\nTesting validation errors...'); // Test missing required field try { await axios.post(`${API_URL}/auth/signup`, { mobile_number: '9999999990', password: 'test123' }); } catch (error) { if (error.response && error.response.status === 400) { console.log('✅ Validation error for missing full_name:', error.response.data.message); } } // Test invalid mobile number try { await axios.post(`${API_URL}/auth/signup`, { mobile_number: '123', full_name: 'Test User', password: 'test123' }); } catch (error) { if (error.response && error.response.status === 400) { console.log('✅ Validation error for invalid mobile:', error.response.data.message); } } // Test short password try { await axios.post(`${API_URL}/auth/signup`, { mobile_number: '9999999991', full_name: 'Test User', password: '123' }); } catch (error) { if (error.response && error.response.status === 400) { console.log('✅ Validation error for short password:', error.response.data.message); } } // Test duplicate mobile number try { await axios.post(`${API_URL}/auth/signup`, signupData); } catch (error) { if (error.response && error.response.status === 400) { console.log('✅ Validation error for duplicate mobile:', error.response.data.message); } } console.log('\n\n✅ All signup tests completed successfully!'); } catch (error) { console.error('❌ Test failed:', error.response?.data || error.message); } } // Run the test testSignup();