X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/580cf2a7f5a26954eeb6ded91a28838b0a150925..6ad3586e61737306f61a330eca545ca494f16304:/cypress/support/commands.js diff --git a/cypress/support/commands.js b/cypress/support/commands.js index ac4a5e0e0b..8baa2db6e5 100644 --- a/cypress/support/commands.js +++ b/cypress/support/commands.js @@ -32,7 +32,7 @@ const controllerURL = Cypress.env('controller_url'); const systemToken = Cypress.env('system_token'); Cypress.Commands.add( - "do_request", (method='GET', path='', data=null, qs=null, + "doRequest", (method='GET', path='', data=null, qs=null, token=systemToken, auth=false, followRedirect=true) => { return cy.request({ method: method, @@ -53,40 +53,87 @@ Cypress.Commands.add( } ) -Cypress.Commands.add("getUser", (username, first_name='', last_name='', is_admin=false, is_active=true) => { - // Create user if not already created - return cy.do_request('POST', '/auth/controller/callback', { - auth_info: JSON.stringify({ - email: `${username}@example.local`, - username: username, - first_name: first_name, - last_name: last_name, - alternate_emails: [] - }), - return_to: ',https://example.local' - }, null, systemToken, true, false) // Don't follow redirects so we can catch the token - .its('headers.location').as('location') - // Get its token and set the account up as admin and/or active - .then(function() { - this.userToken = this.location.split("=")[1] - assert.isString(this.userToken) - return cy.do_request('GET', '/arvados/v1/users', null, { - filters: `[["username", "=", "${username}"]]` - }) - .its('body.items.0') - .as('aUser') +Cypress.Commands.add( + "getUser", (username, first_name='', last_name='', is_admin=false, is_active=true) => { + // Create user if not already created + return cy.doRequest('POST', '/auth/controller/callback', { + auth_info: JSON.stringify({ + email: `${username}@example.local`, + username: username, + first_name: first_name, + last_name: last_name, + alternate_emails: [] + }), + return_to: ',https://example.local' + }, null, systemToken, true, false) // Don't follow redirects so we can catch the token + .its('headers.location').as('location') + // Get its token and set the account up as admin and/or active .then(function() { - cy.do_request('PUT', `/arvados/v1/users/${this.aUser.uuid}`, { - user: { - is_admin: is_admin, - is_active: is_active - } + this.userToken = this.location.split("=")[1] + assert.isString(this.userToken) + return cy.doRequest('GET', '/arvados/v1/users', null, { + filters: `[["username", "=", "${username}"]]` }) - .its('body') - .as('theUser') + .its('body.items.0') + .as('aUser') .then(function() { - return {user: this.theUser, token: this.userToken}; + cy.doRequest('PUT', `/arvados/v1/users/${this.aUser.uuid}`, { + user: { + is_admin: is_admin, + is_active: is_active + } + }) + .its('body') + .as('theUser') + .then(function() { + return {user: this.theUser, token: this.userToken}; + }) }) }) - }) -}) + } +) + +Cypress.Commands.add( + "createLink", (token, data) => { + return cy.createResource(token, 'links', { + link: JSON.stringify(data) + }) + } +) + +Cypress.Commands.add( + "createGroup", (token, data) => { + return cy.createResource(token, 'groups', { + group: JSON.stringify(data), + ensure_unique_name: true + }) + } +) + +Cypress.Commands.add( + "createCollection", (token, data) => { + return cy.createResource(token, 'collections', { + collection: JSON.stringify(data), + ensure_unique_name: true + }) + } +) + +Cypress.Commands.add( + "createResource", (token, suffix, data) => { + return cy.doRequest('POST', '/arvados/v1/'+suffix, data, null, token, true) + .its('body').as('resource') + .then(function() { + return this.resource; + }) + } +) + +Cypress.Commands.add( + "loginAs", (user) => { + cy.visit(`/token/?api_token=${user.token}`); + cy.url().should('contain', '/projects/'); + cy.get('div#root').should('contain', 'Arvados Workbench (zzzzz)'); + cy.get('div#root').should('not.contain', 'Your account is inactive'); + } +) \ No newline at end of file