![]() Server : Apache/2 System : Linux server-15-235-50-60 5.15.0-164-generic #174-Ubuntu SMP Fri Nov 14 20:25:16 UTC 2025 x86_64 User : gositeme ( 1004) PHP Version : 8.2.29 Disable Function : exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname Directory : /home/gositeme/domains/lavocat.ca/public_html/tests/helpers/ |
import { APIRequestContext } from '@playwright/test';
export interface TestUser {
id: string;
email: string;
name: string;
role: string;
}
export class ApiTestHelpers {
constructor(private request: APIRequestContext) {}
async createTestUser(email: string, name: string, role: string = 'LAWYER'): Promise<TestUser> {
const response = await this.request.post('/api/test/create-user', {
data: {
email,
name,
role,
password: 'password123'
}
});
if (!response.ok()) {
throw new Error(`Failed to create test user: ${response.statusText()}`);
}
return await response.json();
}
async deleteTestUser(userId: string): Promise<void> {
const response = await this.request.delete(`/api/test/delete-user/${userId}`);
if (!response.ok()) {
console.warn(`Failed to delete test user ${userId}: ${response.statusText()}`);
}
}
async loginUser(email: string, password: string = 'password123'): Promise<string> {
const response = await this.request.post('/api/auth/login', {
data: {
email,
password
}
});
if (!response.ok()) {
throw new Error(`Failed to login user: ${response.statusText()}`);
}
const cookies = response.headers()['set-cookie'];
return cookies || '';
}
async getProfileStats(profileId: string, sessionCookie?: string): Promise<any> {
const headers: Record<string, string> = {};
if (sessionCookie) {
headers['Cookie'] = sessionCookie;
}
const response = await this.request.get(`/api/profile/${profileId}/stats`, {
headers
});
if (!response.ok()) {
throw new Error(`Failed to get profile stats: ${response.statusText()}`);
}
return await response.json();
}
async followUser(profileId: string, sessionCookie: string): Promise<void> {
const response = await this.request.post(`/api/profile/${profileId}/follow`, {
headers: {
'Cookie': sessionCookie,
'Content-Type': 'application/json'
}
});
if (!response.ok()) {
throw new Error(`Failed to follow user: ${response.statusText()}`);
}
}
async unfollowUser(profileId: string, sessionCookie: string): Promise<void> {
const response = await this.request.delete(`/api/profile/${profileId}/follow`, {
headers: {
'Cookie': sessionCookie
}
});
if (!response.ok()) {
throw new Error(`Failed to unfollow user: ${response.statusText()}`);
}
}
async endorseUser(profileId: string, sessionCookie: string): Promise<void> {
const response = await this.request.post(`/api/profile/${profileId}/endorse`, {
headers: {
'Cookie': sessionCookie,
'Content-Type': 'application/json'
},
data: {
message: 'Test endorsement'
}
});
if (!response.ok()) {
throw new Error(`Failed to endorse user: ${response.statusText()}`);
}
}
async unendorseUser(profileId: string, sessionCookie: string): Promise<void> {
const response = await this.request.delete(`/api/profile/${profileId}/endorse`, {
headers: {
'Cookie': sessionCookie
}
});
if (!response.ok()) {
throw new Error(`Failed to unendorse user: ${response.statusText()}`);
}
}
async setUserOnline(userId: string, isOnline: boolean): Promise<void> {
const response = await this.request.post('/api/test/set-user-online', {
data: {
userId,
isOnline
}
});
if (!response.ok()) {
throw new Error(`Failed to set user online status: ${response.statusText()}`);
}
}
async cleanupTestData(): Promise<void> {
const response = await this.request.post('/api/test/cleanup');
if (!response.ok()) {
console.warn(`Failed to cleanup test data: ${response.statusText()}`);
}
}
}