| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- // ***********************************************
- // 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: '[email protected]',
- 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: '[email protected]',
- 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);
- });
- });
|