Skip to content

Commit ec7b7f3

Browse files
Add test for checking existing user sign up flow
1 parent 7d71500 commit ec7b7f3

File tree

2 files changed

+63
-1
lines changed

2 files changed

+63
-1
lines changed

test/end-to-end/webauthn.helpers.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ export async function openRecoveryAccountPage(page, email = null, shouldSubmit =
4646
await new Promise((res) => setTimeout(res, 1000));
4747
}
4848

49-
export async function signUpAndSendRecoveryEmail(page, email) {
49+
export async function signUpAndLogout(page, email) {
5050
await tryWebauthnSignUp(page, email);
5151

5252
// We should be in the confirmation page now.
@@ -58,6 +58,10 @@ export async function signUpAndSendRecoveryEmail(page, email) {
5858
const logoutButton = await page.waitForSelector("div.logoutButton");
5959
await logoutButton.click();
6060
await new Promise((res) => setTimeout(res, 1000));
61+
}
62+
63+
export async function signUpAndSendRecoveryEmail(page, email) {
64+
await signUpAndLogout(page, email);
6165

6266
// Click the send recovery email button
6367
await openRecoveryAccountPage(page, email, true);

test/end-to-end/webauthn.signup.test.js

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,64 @@ describe("SuperTokens Webauthn SignUp", () => {
9494
"ST_LOGS SESSION OVERRIDE GET_USER_ID",
9595
]);
9696
});
97+
it("should successfully throw an error if the user already exists", async () => {
98+
const email = await getTestEmail();
99+
await tryWebauthnSignUp(page, email);
100+
101+
await submitForm(page);
102+
await page.waitForTimeout(2000);
103+
104+
assert.deepStrictEqual(consoleLogs, [
105+
"ST_LOGS SESSION OVERRIDE ADD_FETCH_INTERCEPTORS_AND_RETURN_MODIFIED_FETCH",
106+
"ST_LOGS SESSION OVERRIDE ADD_AXIOS_INTERCEPTORS",
107+
"ST_LOGS WEBAUTHN OVERRIDE GET REGISTER OPTIONS WITH SIGN UP",
108+
"ST_LOGS WEBAUTHN OVERRIDE GET REGISTER OPTIONS",
109+
"ST_LOGS WEBAUTHN PRE_API_HOOKS REGISTER_OPTIONS",
110+
"ST_LOGS WEBAUTHN OVERRIDE REGISTER CREDENTIAL",
111+
"ST_LOGS WEBAUTHN OVERRIDE SIGN UP",
112+
"ST_LOGS WEBAUTHN PRE_API_HOOKS SIGN_UP",
113+
"ST_LOGS SESSION ON_HANDLE_EVENT SESSION_CREATED",
114+
"ST_LOGS SESSION OVERRIDE GET_USER_ID",
115+
]);
116+
117+
await clearBrowserCookiesWithoutAffectingConsole(page, consoleLogs);
118+
119+
await page.waitForTimeout(1000);
120+
121+
await tryWebauthnSignUp(page, email);
122+
123+
// We should be in the confirmation page now.
124+
await submitForm(page);
125+
await page.waitForTimeout(1000);
126+
127+
const errorTextContainer = await waitForSTElement(
128+
page,
129+
"[data-supertokens~='passkeyRecoverableErrorContainer']"
130+
);
131+
const errorText = await errorTextContainer.evaluate((el) => el.textContent);
132+
assert.strictEqual(errorText, "Email already exists, please sign in instead.");
133+
134+
assert.deepStrictEqual(consoleLogs, [
135+
"ST_LOGS SESSION OVERRIDE ADD_FETCH_INTERCEPTORS_AND_RETURN_MODIFIED_FETCH",
136+
"ST_LOGS SESSION OVERRIDE ADD_AXIOS_INTERCEPTORS",
137+
"ST_LOGS WEBAUTHN OVERRIDE GET REGISTER OPTIONS WITH SIGN UP",
138+
"ST_LOGS WEBAUTHN OVERRIDE GET REGISTER OPTIONS",
139+
"ST_LOGS WEBAUTHN PRE_API_HOOKS REGISTER_OPTIONS",
140+
"ST_LOGS WEBAUTHN OVERRIDE REGISTER CREDENTIAL",
141+
"ST_LOGS WEBAUTHN OVERRIDE SIGN UP",
142+
"ST_LOGS WEBAUTHN PRE_API_HOOKS SIGN_UP",
143+
"ST_LOGS SESSION ON_HANDLE_EVENT SESSION_CREATED",
144+
"ST_LOGS SESSION OVERRIDE GET_USER_ID",
145+
"ST_LOGS SESSION OVERRIDE ADD_FETCH_INTERCEPTORS_AND_RETURN_MODIFIED_FETCH",
146+
"ST_LOGS SESSION OVERRIDE ADD_AXIOS_INTERCEPTORS",
147+
"ST_LOGS WEBAUTHN OVERRIDE GET REGISTER OPTIONS WITH SIGN UP",
148+
"ST_LOGS WEBAUTHN OVERRIDE GET REGISTER OPTIONS",
149+
"ST_LOGS WEBAUTHN PRE_API_HOOKS REGISTER_OPTIONS",
150+
"ST_LOGS WEBAUTHN OVERRIDE REGISTER CREDENTIAL",
151+
"ST_LOGS WEBAUTHN OVERRIDE SIGN UP",
152+
"ST_LOGS WEBAUTHN PRE_API_HOOKS SIGN_UP",
153+
]);
154+
});
97155
it("should recover successfully from a recoverable error", async () => {
98156
// Set the error to be thrown
99157
await page.evaluateOnNewDocument(() => {

0 commit comments

Comments
 (0)