/// import Chainable = Cypress.Chainable; const baseUrl = Cypress.config().baseUrl; const password = `${Cypress.env(`AUTH_PASSWORD`)}_A`; const PROJECT_MEMBER = 5; export const createFeature_API = ( featureName: string, projectName?: string, options?: Partial, ): Chainable => { const project = projectName || 'default'; return cy.request({ url: `${baseUrl}/api/admin/projects/${project}/features`, method: 'POST', body: { name: `${featureName}`, description: 'hello-world', type: 'release', impressionData: false, }, ...options, }); }; export const deleteFeature_API = ( name: string, projectName?: string, ): Chainable => { const project = projectName || 'default'; cy.request({ method: 'DELETE', url: `${baseUrl}/api/admin/projects/${projectName}/features/${name}`, }); return cy.request({ method: 'DELETE', url: `${baseUrl}/api/admin/archive/${name}`, }); }; export const createProject_API = ( project: string, options?: Partial, ): Chainable => { return cy.request({ url: `${baseUrl}/api/admin/projects`, method: 'POST', body: { id: project, name: project, description: project, impressionData: false, }, ...options, }); }; export const deleteProject_API = (name: string): Chainable => { return cy.request({ method: 'DELETE', url: `${baseUrl}/api/admin/projects/${name}`, }); }; export const createUser_API = (userName: string, role: number) => { const name = `${userName}`; const email = `${name}@test.com`; const userIds: number[] = []; const userCredentials: Cypress.UserCredentials[] = []; cy.request('POST', `${baseUrl}/api/admin/user-admin`, { name: name, email: `${name}@test.com`, username: `${name}@test.com`, sendEmail: false, rootRole: role, }) .as(name) .then((response) => { const id = response.body.id; updateUserPassword_API(id).then(() => { addUserToProject_API(id, PROJECT_MEMBER).then((value) => { userIds.push(id); userCredentials.push({ email, password }); }); }); }); return cy.wrap({ userIds, userCredentials }); }; export const updateUserPassword_API = (id: number, pass?: string): Chainable => cy.request( 'POST', `${baseUrl}/api/admin/user-admin/${id}/change-password`, { password: pass || password, }, ); export const addUserToProject_API = ( id: number, role: number, projectName?: string, ): Chainable => { const project = projectName || 'default'; return cy.request( 'POST', `${baseUrl}/api/admin/projects/${project}/role/${role}/access`, { groups: [], users: [{ id }], }, ); }; interface IEnvironment { name: string; type: 'development' | 'preproduction' | 'test' | 'production'; } export const createEnvironment_API = ( environment: IEnvironment, options?: Partial, ): Chainable => { return cy.request({ url: `${baseUrl}/api/admin/environments`, method: 'POST', body: environment, ...options, }); };