67 lines
2.2 KiB
TypeScript
67 lines
2.2 KiB
TypeScript
describe("signup page", function () {
|
|
beforeEach(function () {
|
|
cy.resetDb();
|
|
cy.clearMail();
|
|
});
|
|
|
|
it("creates an unconfirmed user and redirects to check-email", function () {
|
|
cy.visit("/signup");
|
|
cy.get('input[type="email"]').type("alice@example.com");
|
|
cy.get('input[autocomplete="username"]').type("alice");
|
|
cy.contains("button", "Continue").click();
|
|
|
|
cy.location("pathname").should("eq", "/check-email");
|
|
cy.contains("h1", "Check your email").should("be.visible");
|
|
|
|
cy.getMail().then(function (inbox) {
|
|
expect(inbox.messages).to.have.length(1);
|
|
expect(inbox.messages[0].To[0].Address).to.equal(
|
|
"alice@example.com",
|
|
);
|
|
});
|
|
});
|
|
|
|
it("surfaces a 409 when the email is already registered", function () {
|
|
cy.seedConfirmedUser({
|
|
email: "alice@example.com",
|
|
displayName: "alice",
|
|
password: "longenoughpassword",
|
|
});
|
|
cy.clearMail();
|
|
|
|
cy.visit("/signup");
|
|
cy.get('input[type="email"]').type("alice@example.com");
|
|
cy.get('input[autocomplete="username"]').type("alice2");
|
|
cy.contains("button", "Continue").click();
|
|
|
|
cy.location("pathname").should("eq", "/signup");
|
|
cy.contains(".error", "email already registered").should("be.visible");
|
|
});
|
|
|
|
it("surfaces a 409 when the display name is taken", function () {
|
|
cy.seedConfirmedUser({
|
|
email: "alice@example.com",
|
|
displayName: "alice",
|
|
password: "longenoughpassword",
|
|
});
|
|
cy.clearMail();
|
|
|
|
cy.visit("/signup");
|
|
cy.get('input[type="email"]').type("other@example.com");
|
|
cy.get('input[autocomplete="username"]').type("alice");
|
|
cy.contains("button", "Continue").click();
|
|
|
|
cy.location("pathname").should("eq", "/signup");
|
|
cy.contains(".error", "displayName already taken").should("be.visible");
|
|
});
|
|
|
|
it("blocks invalid display name characters client-side", function () {
|
|
cy.visit("/signup");
|
|
cy.get('input[type="email"]').type("alice@example.com");
|
|
cy.get('input[autocomplete="username"]').type("Has Spaces");
|
|
cy.contains("button", "Continue").click();
|
|
|
|
cy.location("pathname").should("eq", "/signup");
|
|
cy.get('input[autocomplete="username"]:invalid').should("exist");
|
|
});
|
|
});
|