From 3e93f95ef744ff3ccfcdc0d45240408d7c283cf1 Mon Sep 17 00:00:00 2001 From: Dmitry Kruchinin <33020454+dvkruchinin@users.noreply.github.com> Date: Wed, 30 Jun 2021 13:00:16 +0300 Subject: [PATCH] Cypress test. Update "Multiple users. Assign task, job." (#3347) * Added cypress commands * Updated cypress test case 4 for check issue 3339 * Apply comments. Some rework cypress commands. --- .../case_4_assign_taks_job_users.js | 45 +++++++++++++++++- tests/cypress/support/commands.js | 46 +++++++++++++++++++ 2 files changed, 90 insertions(+), 1 deletion(-) diff --git a/tests/cypress/integration/actions_users/registration_involved/case_4_assign_taks_job_users.js b/tests/cypress/integration/actions_users/registration_involved/case_4_assign_taks_job_users.js index be9e5acf..649c8ff0 100644 --- a/tests/cypress/integration/actions_users/registration_involved/case_4_assign_taks_job_users.js +++ b/tests/cypress/integration/actions_users/registration_involved/case_4_assign_taks_job_users.js @@ -4,7 +4,7 @@ /// -context('Multiple users. Assign task, job.', () => { +context('Multiple users. Assign task, job. Deactivating users.', () => { const caseId = '4'; const labelName = `Case ${caseId}`; const taskName = `New annotation task for ${labelName}`; @@ -37,12 +37,29 @@ context('Multiple users. Assign task, job.', () => { password: 'Fv5Df3#f55g', }; + let authKey; + const isStaff = false; + const isSuperuser = false; + const isActive = false; + + function changeCheckUserStatusOpenTask(userName) { + cy.changeUserActiveStatus(authKey, userName, isActive); + cy.checkUserStatuses(authKey, userName, isStaff, isSuperuser, isActive); + cy.intercept('GET', `/api/v1/users*${thirdUserName}*`).as('users'); + cy.openTask(taskName); + cy.wait('@users'); + cy.get('.cvat-global-boundary').should('not.exist'); + cy.contains('.cvat-task-details-task-name', taskName).should('exist'); + } + + before(() => { cy.imageGenerator(imagesFolder, imageFileName, width, height, color, posX, posY, labelName, imagesCount); cy.createZipArchive(directoryToArchive, archivePath); }); after(() => { + cy.logout(); cy.deletingRegisteredUsers([secondUserName, thirdUserName]); cy.login(); cy.deleteTask(taskName); @@ -77,6 +94,7 @@ context('Multiple users. Assign task, job.', () => { cy.contains('.cvat-item-task-name', `${taskName}`).should('not.exist'); cy.logout(secondUserName); }); + it('Register third user and logout.', () => { cy.get('a[href="/auth/register"]').click(); cy.url().should('include', '/auth/register'); @@ -89,11 +107,13 @@ context('Multiple users. Assign task, job.', () => { ); cy.logout(thirdUserName); }); + it('First user login, create a task and logout', () => { cy.login(); cy.createAnnotationTask(taskName, labelName, attrName, textDefaultValue, archiveName); cy.logout(); }); + it('Second user login, tries to add label and logout', () => { cy.login(secondUserName, secondUser.password); cy.openTask(taskName); @@ -102,29 +122,34 @@ context('Multiple users. Assign task, job.', () => { cy.contains('.cvat-constructor-viewer-item', 'failAddLabel').should('not.exist'); cy.logout(secondUserName); }); + it('Assign the task to the second user and logout', () => { cy.login(); cy.openTask(taskName); cy.assignTaskToUser(secondUserName); cy.logout(); }); + it('Second user login. The task can be opened. Logout', () => { cy.login(secondUserName, secondUser.password); cy.contains('strong', taskName).should('exist'); cy.openTask(taskName); cy.logout(secondUserName); }); + it('Third user login. The task not exist. Logout', () => { cy.login(thirdUserName, thirdUser.password); cy.contains('strong', taskName).should('not.exist'); cy.logout(thirdUserName); }); + it('First user login and assign the job to the third user. Logout', () => { cy.login(); cy.openTask(taskName); cy.assignJobToUser(0, thirdUserName); cy.logout(); }); + it('Third user login. Tries to delete task. The task can be opened.', () => { cy.login(thirdUserName, thirdUser.password); cy.contains('strong', taskName).should('exist'); @@ -133,5 +158,23 @@ context('Multiple users. Assign task, job.', () => { cy.openTask(taskName); cy.logout(thirdUserName); }); + + it('First user login. Getting authKey.', () => { + cy.visit('/'); + cy.intercept('POST', '/api/v1/auth/login').as('login'); + cy.login(); + cy.wait('@login').then((response) => { + authKey = response['response']['body']['key']; + }); + }); + + it('Deactivate the second user (task assigned). Trying to open the task. Should be succefull.', () => { + changeCheckUserStatusOpenTask(secondUserName); + cy.goToTaskList(); + }); + + it('Deactivate the third user (job assigned). Trying to open the task. Should be succefull.', () => { + changeCheckUserStatusOpenTask(thirdUserName); + }); }); }); diff --git a/tests/cypress/support/commands.js b/tests/cypress/support/commands.js index d2d0b926..90176c1e 100644 --- a/tests/cypress/support/commands.js +++ b/tests/cypress/support/commands.js @@ -83,6 +83,52 @@ Cypress.Commands.add('deletingRegisteredUsers', (accountToDelete) => { }); }); +Cypress.Commands.add('changeUserActiveStatus', (authKey, accountsToChangeActiveStatus, isActive) => { + cy.request({ + url: '/api/v1/users?page_size=all', + headers: { + Authorization: `Token ${authKey}`, + }, + }).then((response) => { + const responceResult = response['body']['results']; + responceResult.forEach((user) => { + const userId = user['id']; + const userName = user['username']; + if (userName.includes(accountsToChangeActiveStatus)) { + cy.request({ + method: 'PATCH', + url: `/api/v1/users/${userId}`, + headers: { + Authorization: `Token ${authKey}`, + }, + body: { + is_active: isActive, + }, + }); + } + }); + }); +}); + +Cypress.Commands.add('checkUserStatuses', (authKey, userName, staffStatus, superuserStatus, activeStatus) => { + cy.request({ + url: '/api/v1/users?page_size=all', + headers: { + Authorization: `Token ${authKey}`, + }, + }).then((response) => { + const responceResult = response['body']['results']; + responceResult.forEach((user) => { + if (user['username'].includes(userName)) { + expect(staffStatus).to.be.equal(user['is_staff']); + expect(superuserStatus).to.be.equal(user['is_superuser']); + expect(activeStatus).to.be.equal(user['is_active']); + } + + }); + }); +}); + Cypress.Commands.add( 'createAnnotationTask', (