n8n/packages/testing/playwright/services/role-api-helper.ts

34 lines
1022 B
TypeScript

import { nanoid } from 'nanoid';
import type { ApiHelpers } from './api-helper';
import { TestError } from '../Types';
export class RoleApiHelper {
constructor(private api: ApiHelpers) {}
/**
* Create a custom role with unique name via REST API
* @param scopes Array of scope strings (e.g., ['project:read', 'workflow:read'])
* @param displayName Base display name for the role (will be made unique with nanoid)
* @returns The created role data including slug
*/
async createCustomRole(scopes: string[], displayName: string): Promise<{ slug: string }> {
const uniqueName = `${displayName} (${nanoid(8)})`;
const response = await this.api.request.post('/rest/roles', {
data: {
displayName: uniqueName,
description: `Custom role with scopes: ${scopes.join(', ')}`,
roleType: 'project',
scopes,
},
});
if (!response.ok()) {
throw new TestError(`Failed to create custom role: ${await response.text()}`);
}
const result = await response.json();
return result.data;
}
}