// *********************************************** // This example commands.js shows you how to // create various custom commands and overwrite // existing commands. // // For more comprehensive examples of custom // commands please read more here: // https://on.cypress.io/custom-commands // *********************************************** // /** * Check the swagger schema: * * @param {string} method API Method in swagger doc, "get", "put", "post", "delete" * @param {string} path Swagger doc endpoint path, exactly as defined in swagger doc * @param {*} data The API response data to check against the swagger schema */ Cypress.Commands.add('validateSwaggerSchema', (method, path, data) => { cy.task('validateSwaggerSchema', { file: Cypress.env('swaggerBase'), endpoint: path, method: method, statusCode: 200, responseSchema: data, verbose: true }).should('equal', null); }); Cypress.Commands.add('getToken', () => { cy.task('backendApiGet', { path: '/api/', }).then((data) => { // Check the swagger schema: cy.task('validateSwaggerSchema', { endpoint: '/', method: 'get', statusCode: 200, responseSchema: data, verbose: true, }).should('equal', null); if (!data.result.setup) { cy.log('Setup = false'); // create a new user cy.createInitialUser().then(() => { return cy.getToken(); }); } else { cy.log('Setup = true'); // login with existing user cy.task('backendApiPost', { path: '/api/tokens', data: { type: 'password', identity: 'jc@jc21.com', secret: 'changeme' } }).then(res => { cy.wrap(res.result.token); }); } }); }); Cypress.Commands.add('createInitialUser', () => { return cy.task('backendApiPost', { path: '/api/users', data: { name: 'Jamie Curnow', nickname: 'James', email: 'jc@jc21.com', roles: [], is_disabled: false, auth: { type: 'password', secret: 'changeme' } } }).then((data) => { // Check the swagger schema: cy.task('validateSwaggerSchema', { endpoint: '/users', method: 'post', statusCode: 201, responseSchema: data, verbose: true }).should('equal', null); expect(data.result).to.have.property('id'); expect(data.result.id).to.be.greaterThan(0); cy.wrap(data.result); }); });