From a90edc917945db2b4e5de00be1f83a1f05700876 Mon Sep 17 00:00:00 2001 From: Moritz Hedtke Date: Thu, 14 Apr 2022 19:21:03 +0200 Subject: [PATCH 1/2] Test setting empty password fails. Fixes #284 --- tests/e2e/new-tests.ts | 91 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 91 insertions(+) diff --git a/tests/e2e/new-tests.ts b/tests/e2e/new-tests.ts index d8713d2ee..fc90f7690 100644 --- a/tests/e2e/new-tests.ts +++ b/tests/e2e/new-tests.ts @@ -1489,6 +1489,91 @@ async function testHelperCreatesProjectWithProjectLeadersAndMembers( assert.equal(alerts2.length, 1); } +async function checkSettingEmptyPasswordFails(helper: Helper) { + await loginCorrect(helper); + + await helper.openNavbar(); + await helper.click( + await helper.driver.findElement(By.css(`a[href="/users"]`)) + ); + + await helper.form("pw-users"); + await helper.click( + await helper.driver.findElement(By.css(`a[href="/users/create"]`)) + ); + let form = await helper.form("pw-user-create"); + const username = `username${crypto.getRandomValues(new Uint32Array(1))[0]}`; + + await ( + await helper.driver.findElement( + By.css('select[name="0,type"] option[value="helper"]') + ) + ).click(); + + await form.setField("0,username", username); + await form.submitSuccess(); + await helper.driver.wait(until.urlContains("/users/edit/"), 2000); + const id = (await helper.driver.getCurrentUrl()).match( + /\/users\/edit\/(\d+)/ + )?.[1]; + if (!id) { + assert.fail("id not found in url"); + } + await helper.waitUntilLoaded(); + + await helper.click( + await helper.driver.findElement(By.css(`a[href="/logout"]`)) + ); + await helper.form("pw-login"); + form = await helper.form("pw-login"); + await form.setField("username", username); + await form.setField("password", ""); + + assert.deepStrictEqual( + [["password", "Kein Password für Account gesetzt!"]], + await form.submitFailure() + ); + + await loginCorrect(helper); + + await helper.click( + await helper.driver.findElement(By.css(`a[href="/users"]`)) + ); + form = await helper.form("pw-users"); + form.setField("filters,id", id); + await helper.waitUntilLoaded(); + await helper.waitUntilLoaded(); + await helper.waitUntilLoaded(); + await helper.waitUntilLoaded(); + await helper.waitUntilLoaded(); + + await helper.click( + await helper.driver.findElement(By.css(`a[href="/users/edit/${id}"]`)) + ); + await helper.waitUntilLoaded(); + + form = await helper.form("pw-user-create"); + await helper.waitUntilLoaded(); + await form.resetField("0,password", "hopefullynotsaved"); + await form.resetField("0,password", ""); + await form.submitSuccess(); + + await helper.click( + await helper.driver.findElement(By.css(`a[href="/logout"]`)) + ); + await helper.form("pw-login"); + form = await helper.form("pw-login"); + await form.setField("username", username); + await form.setField("password", ""); + + assert.deepStrictEqual( + [["password", "Kein Password für Account gesetzt!"]], + await form.submitFailure() + ); + + await loginCorrect(helper); +} + console.log(argv); if (argv.length !== 3) { @@ -1580,6 +1665,12 @@ await runTest(argv[2], async (helper) => { await checkNotLoggedInProjects(helper); await helper.driver.manage().deleteAllCookies(); + + // login ratelimiting + await helper.driver.sleep(5000); + + await checkSettingEmptyPasswordFails(helper); + await helper.driver.manage().deleteAllCookies(); }); await sql.end(); From ee34e90e04be018de6126b42e75c0154d9d49534 Mon Sep 17 00:00:00 2001 From: Moritz Hedtke Date: Thu, 14 Apr 2022 19:28:42 +0200 Subject: [PATCH 2/2] Linting fix --- tests/e2e/new-tests.ts | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/tests/e2e/new-tests.ts b/tests/e2e/new-tests.ts index fc90f7690..377c01981 100644 --- a/tests/e2e/new-tests.ts +++ b/tests/e2e/new-tests.ts @@ -1540,11 +1540,7 @@ async function checkSettingEmptyPasswordFails(helper: Helper) { await helper.driver.findElement(By.css(`a[href="/users"]`)) ); form = await helper.form("pw-users"); - form.setField("filters,id", id); - await helper.waitUntilLoaded(); - await helper.waitUntilLoaded(); - await helper.waitUntilLoaded(); - await helper.waitUntilLoaded(); + await form.setField("filters,id", id); await helper.waitUntilLoaded(); await helper.click(