saleor-dashboard/cypress/support/api/utils/users.js
Karol 9c605f8d1b
[cypress] add tests for gift cards bulk create and export (#2801)
* first draft

* fixed data-test-id

* done

* restore port for cypress

* change email

* pr improvments

* add csv check

* adjustments

* added check for xlsx

* change name

* change name

* remove cy log

* remove cy log

* add yaml cypress mailhog var
2022-12-13 08:04:54 +01:00

168 lines
4.6 KiB
JavaScript

import { getPermissionsArray } from "../requests/Permissions";
import { inviteStaffMember } from "../requests/StaffMembers";
export function inviteStaffMemberWithFirstPermission({
email,
isActive = true,
firstName = "",
lastName = "",
}) {
return getPermissionsArray(1).then(permissions => {
inviteStaffMember({
firstName,
lastName,
email,
isActive,
permissionId: permissions[0].node.id,
});
});
}
/**
* Function mhGetMailsByRecipient first get all emails from mailhog with a timeout, and after that it finds email from recipient.
* It cloud happened that invite email from saleor has not been received yet, so in this case the action should be retried.
*/
export function getMailActivationLinkForUser(email, regex, i = 0) {
const serverStoredEmail = email.toLowerCase();
const urlRegex = regex ? regex : /\[\w*password\w*\]\(([^\)]*)/;
if (i > 3) {
throw new Error(
`There is no email invitation for user ${serverStoredEmail}`,
);
}
return cy.mhGetMailsByRecipient(serverStoredEmail).should(mails => {
if (!mails.length) {
cy.wait(10000);
getMailActivationLinkForUser(serverStoredEmail, regex, i + 1);
} else {
cy.wrap(mails)
.mhFirst()
.should("not.eq", undefined)
.mhGetBody()
.then(body => {
const bodyWithoutWhiteSpaces = body.replace(/(\r\n|\n|\r|\s)/gm, "");
return urlRegex.exec(bodyWithoutWhiteSpaces)[1];
});
}
});
}
export function getMailActivationLinkForUserAndSubject(email, subject, i = 0) {
const serverStoredEmail = email.toLowerCase();
if (i > 3) {
throw new Error(
`There is no email invitation for user ${serverStoredEmail}`,
);
}
return cy.mhGetMailsByRecipient(serverStoredEmail).should(mails => {
if (!mails.length) {
cy.wait(10000);
getMailActivationLinkForUserAndSubject(serverStoredEmail, subject, i + 1);
} else {
cy.wrap(mails)
.mhGetMailsBySubject(subject)
.should(mailsWithSubject => {
if (!mailsWithSubject.length) {
cy.wait(10000);
getMailActivationLinkForUserAndSubject(
serverStoredEmail,
subject,
i + 1,
);
} else {
cy.wrap(mailsWithSubject)
.mhFirst()
.should("not.eq", undefined)
.mhGetBody()
.then(body => {
const urlRegex = /\[\w*password\w*\]\(([^\)]*)/;
const bodyWithoutWhiteSpaces = body.replace(
/(\r\n|\n|\r|\s)/gm,
"",
);
return urlRegex.exec(bodyWithoutWhiteSpaces)[1];
});
}
});
}
});
}
export function getMailWithResetPasswordLink(email, subject, i = 0) {
const serverStoredEmail = email.toLowerCase();
if (i > 5) {
throw new Error(
`There is no email with reset password for user ${serverStoredEmail}`,
);
}
return cy.mhGetMailsByRecipient(serverStoredEmail).should(mails => {
if (!mails.length) {
cy.wait(3000);
getMailWithResetPasswordLink(serverStoredEmail, subject, i + 1);
} else {
cy.mhGetMailsBySubject(subject);
return mails;
}
});
}
export function getMailsForUser(email, i = 0) {
const serverStoredEmail = email.toLowerCase();
if (i > 5) {
throw new Error(
`There is no email invitation for user ${serverStoredEmail}`,
);
}
return cy.mhGetMailsByRecipient(serverStoredEmail).should(mails => {
if (!mails.length) {
cy.wait(3000);
getMailsForUser(serverStoredEmail, i + 1);
} else {
return mails;
}
});
}
export function getMailWithGiftCardExportWithAttachment(
email,
subject,
attachmentFileType,
i = 0,
) {
if (i > 5) {
throw new Error(`There is no email Gift Card export for user ${email}`);
}
return cy.mhGetMailsByRecipient(email).should(mails => {
if (!mails.length) {
cy.wait(3000);
getMailWithGiftCardExportWithAttachment(
email,
subject,
attachmentFileType,
i + 1,
);
} else {
cy.mhGetMailsBySubject(subject).should(mailsWithSubject => {
if (!mailsWithSubject.length) {
cy.wait(10000);
getMailWithGiftCardExportWithAttachment(
email,
subject,
attachmentFileType,
i + 1,
);
} else {
cy.wrap(mailsWithSubject)
.mhFirst()
.should("not.eq", undefined)
.mhGetBody()
.then(body => body);
}
});
}
});
}