///
///
import { generateNewUser } from '../../utils/generateMockData';
describe('Active user profile password block interactions', () => {
const testUser = generateNewUser();
const { password: oldPassword, email } = testUser;
const editNumbers = '1111';
const newPassword = oldPassword + editNumbers;
before(() => {
cy.apiRegisterAndApproveUser(testUser);
});
it('should validate password field as required', () => {
cy.apiLoginUser(testUser);
cy.visit('/account/user-profile');
cy.dataCy('password-edit-button').click();
cy.inputRequired('current-password', 'new-password');
cy.inputRequired('new-password', 'confirm-password');
cy.inputRequired('confirm-password', 'current-password');
});
it('should revert changes password inputs after cancel button is clicked', () => {
cy.apiLoginUser(testUser);
cy.visit('/account/user-profile');
cy.dataCy('password-edit-button').click();
cy.dataCy('current-password').type(oldPassword);
cy.dataCy('password-save-button').should('be.disabled');
cy.dataCy('current-password').find('input').should('have.value', oldPassword);
cy.dataCy('new-password').type(newPassword);
cy.dataCy('password-save-button').should('not.be.disabled');
cy.dataCy('new-password').find('input').should('have.value', newPassword);
cy.dataCy('confirm-password').type(newPassword);
cy.dataCy('password-save-button').should('not.be.disabled');
cy.dataCy('confirm-password').find('input').should('have.value', newPassword);
cy.dataCy('password-cancel-button').click();
cy.dataCy('current-password').find('input').should('have.value', '');
cy.dataCy('new-password').find('input').should('have.value', '');
cy.dataCy('confirm-password').find('input').should('have.value', '');
});
it('should allow user to change password and logout', () => {
cy.apiLoginUser(testUser);
cy.visit('/account/user-profile');
cy.dataCy('password-edit-button').click();
cy.dataCy('current-password').type(oldPassword);
cy.dataCy('new-password').type(newPassword);
cy.dataCy('confirm-password').type(newPassword);
cy.dataCy('password-save-button').click();
cy.notification('User password updated');
cy.contains(`${testUser.firstName} ${testUser.lastName}`);
cy.url().should('include', 'devices/production');
cy.get('.toast').click();
cy.wait(500);
cy.dataCy('user-logout-button').click();
});
it('should allow user to log in using new password', () => {
cy.visit('/user-login');
cy.fillUserLogin({ email, password: newPassword });
cy.dataCy('login-button').click();
cy.contains('Thank you for registering as a user on the marketplace');
cy.get('button').contains('Not now').click();
cy.contains(`${testUser.firstName} ${testUser.lastName}`);
cy.url().should('include', 'devices/production');
});
});