mirror of
https://github.com/0rangebananaspy/authelia.git
synced 2024-09-14 22:47:21 +07:00
a991379a74
Some tests are not fully rewritten in Go, a typescript wrapper is called instead until we remove the remaining TS tests and dependencies. Also, dockerize every components (mainly Authelia backend, frontend and kind) so that the project does not interfere with user host anymore (open ports for instance). The only remaining intrusive change is the one done during bootstrap to add entries in /etc/hosts. It will soon be avoided using authelia.com domain that I own.
45 lines
2.3 KiB
TypeScript
45 lines
2.3 KiB
TypeScript
import { StartDriver, StopDriver } from "../../helpers/context/WithDriver";
|
|
import LoginAs from "../../helpers/LoginAs";
|
|
import VerifyNotificationDisplayed from "../../helpers/assertions/VerifyNotificationDisplayed";
|
|
import VerifyIsSecondFactorStage from "../../helpers/assertions/VerifyIsSecondFactorStage";
|
|
import ClearFieldById from "../behaviors/ClearFieldById";
|
|
|
|
export default function(regulationMilliseconds: number) {
|
|
return function () {
|
|
describe('Authelia regulates authentications when a hacker is brute forcing', function() {
|
|
this.timeout(30000);
|
|
beforeEach(async function() {
|
|
this.driver = await StartDriver();
|
|
});
|
|
|
|
afterEach(async function() {
|
|
await StopDriver(this.driver);
|
|
});
|
|
|
|
it("should return an error message when providing correct credentials the 4th time.", async function() {
|
|
await LoginAs(this.driver, "james", "bad-password");
|
|
await VerifyNotificationDisplayed(this.driver, "Authentication failed. Check your credentials.");
|
|
await ClearFieldById(this.driver, "username");
|
|
|
|
await LoginAs(this.driver, "james", "bad-password");
|
|
await VerifyNotificationDisplayed(this.driver, "Authentication failed. Check your credentials.");
|
|
await ClearFieldById(this.driver, "username");
|
|
|
|
await LoginAs(this.driver, "james", "bad-password");
|
|
await VerifyNotificationDisplayed(this.driver, "Authentication failed. Check your credentials.");
|
|
await ClearFieldById(this.driver, "username");
|
|
|
|
// when providing good credentials, the hacker is regulated and see same message as previously.
|
|
await LoginAs(this.driver, "james", "bad-password");
|
|
await VerifyNotificationDisplayed(this.driver, "Please retry in a few minutes.");
|
|
await ClearFieldById(this.driver, "username");
|
|
|
|
// Wait the regulation ban time before retrying with correct credentials.
|
|
// It should authenticate normally.
|
|
await this.driver.sleep(regulationMilliseconds);
|
|
await LoginAs(this.driver, "james", "password");
|
|
await VerifyIsSecondFactorStage(this.driver);
|
|
});
|
|
});
|
|
}
|
|
} |