Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // import an apiKey and the official js client
- const apiKey = require("./config.json").apiKey;
- const Emaile2eClient = require("emaile2e-client");
- // instantiate a client for the inbox endpoints
- const api = new Emaile2eClient.InboxcontrollerApi();
- // test the authentication flow on emaile2e.com
- // using Cypress test runenr
- describe("Emaile2e.com user signup", () => {
- // we will set these with emaile2e
- let username;
- let emailAddress;
- const password = "test-password";
- before("create a random email inbox to sign-up with", done => {
- // create a new email inbox that returns an id and an address
- api
- .createRandomInboxUsingPOST(apiKey)
- .then(
- data => data.payload,
- err => {
- // log or inspect an error here if necessary
- throw err;
- }
- )
- .then(({ id, address }) => {
- username = id;
- emailAddress = address;
- expect(username).to.eq(id);
- done();
- });
- });
- it("allows signup with generated inbox and username", () => {
- cy.visit("/sign-up");
- // use the username and email address we got
- // from Emaile2e to sign a user up by filling out
- // the sign-up form
- cy.get("#username").type(username);
- cy.get("#email").type(emailAddress);
- cy.get("#password").type(password);
- cy.get("#passwordConfirmation").type(password);
- cy.get("button[type='submit']").click();
- });
- it(
- "sends a verification code which can be " +
- "received by user, extracted, and submitted",
- () => {
- let verificationCode;
- cy.location("pathname").should("eq", `/verify/${username}`);
- // use cypress's async api
- cy.then(() => {
- // check the users inbox and hold the
- // connection until one email is present
- return api
- .getEmailsForInboxUsingGET(apiKey, username, {
- minCount: 1,
- maxWait: 90
- })
- .then(
- data => data.payload,
- err => {
- throw err;
- }
- )
- .then(([latestEmail]) => {
- // regex match for the confirmation code
- // within the email body
- const r = /\s(\d{6})\./g;
- // extract the verication code
- verificationCode = r.exec(latestEmail.body)[1];
- });
- });
- // submit the code we extracted from the email
- cy.get("#code").then(input => {
- cy.wrap(input).type(verificationCode);
- });
- cy.get("button[type='submit']").click();
- }
- );
- it("successfully verifies a user" + "and allows that user to login", () => {
- cy.location("pathname").should("eq", "/login");
- cy.get("#username").type(username);
- cy.get("#password").type(password);
- cy.get("button[type='submit']").click();
- cy.location("pathname").should("eq", "/dashboard");
- });
- });
Add Comment
Please, Sign In to add comment