realtimecursor
Version:
Real-time collaboration system with cursor tracking and approval workflow
141 lines (118 loc) ⢠3.97 kB
JavaScript
const http = require('http');
const API_BASE_URL = 'http://localhost:3000';
// Helper function to make HTTP requests
function makeRequest(options, data = null) {
return new Promise((resolve, reject) => {
const req = http.request(options, (res) => {
let body = '';
res.on('data', (chunk) => body += chunk);
res.on('end', () => {
try {
const response = JSON.parse(body);
resolve({ status: res.statusCode, data: response });
} catch (error) {
resolve({ status: res.statusCode, data: body });
}
});
});
req.on('error', reject);
if (data) {
req.write(JSON.stringify(data));
}
req.end();
});
}
async function testAdminFunctionality() {
console.log('š Testing Admin Functionality...\n');
try {
// Step 1: Login as admin
console.log('1. š Logging in as admin...');
const loginOptions = {
hostname: 'localhost',
port: 3000,
path: '/auth/login',
method: 'POST',
headers: {
'Content-Type': 'application/json'
}
};
const loginData = {
email: 'admin@example.com',
password: 'Admin123!'
};
const loginResponse = await makeRequest(loginOptions, loginData);
if (loginResponse.status !== 200) {
console.log('ā Admin login failed:', loginResponse.data);
return;
}
console.log('ā
Admin login successful!');
const adminToken = loginResponse.data.token;
console.log('Admin user:', loginResponse.data.user);
// Step 2: Get all users
console.log('\n2. š„ Getting all users...');
const getUsersOptions = {
hostname: 'localhost',
port: 3000,
path: '/admin/users',
method: 'GET',
headers: {
'Authorization': `Bearer ${adminToken}`,
'Content-Type': 'application/json'
}
};
const usersResponse = await makeRequest(getUsersOptions);
if (usersResponse.status === 200) {
console.log('ā
Users retrieved successfully!');
console.log(`Total users: ${usersResponse.data.total}`);
usersResponse.data.users.forEach(user => {
console.log(`- ${user.fullName} (${user.email}) - Role: ${user.role}`);
});
} else {
console.log('ā Failed to get users:', usersResponse.data);
}
// Step 3: Create a new user
console.log('\n3. ā Creating a new user...');
const createUserOptions = {
hostname: 'localhost',
port: 3000,
path: '/admin/users',
method: 'POST',
headers: {
'Authorization': `Bearer ${adminToken}`,
'Content-Type': 'application/json'
}
};
const newUserData = {
firstName: 'Test',
lastName: 'User',
email: 'testuser@example.com',
password: 'TestPass123!',
role: 'user'
};
const createResponse = await makeRequest(createUserOptions, newUserData);
if (createResponse.status === 201) {
console.log('ā
User created successfully!');
console.log('New user:', createResponse.data.user);
} else {
console.log('ā Failed to create user:', createResponse.data);
}
// Step 4: Get updated user list
console.log('\n4. š Getting updated user list...');
const updatedUsersResponse = await makeRequest(getUsersOptions);
if (updatedUsersResponse.status === 200) {
console.log('ā
Updated users list:');
console.log(`Total users: ${updatedUsersResponse.data.total}`);
updatedUsersResponse.data.users.forEach(user => {
console.log(`- ${user.fullName} (${user.email}) - Role: ${user.role}`);
});
}
console.log('\nš Admin functionality test completed!');
console.log('\nš Admin credentials:');
console.log('Email: admin@example.com');
console.log('Password: Admin123!');
} catch (error) {
console.error('ā Test failed:', error.message);
}
}
// Run the test
testAdminFunctionality();