52 lines
2.4 KiB
TypeScript
52 lines
2.4 KiB
TypeScript
import { StartDriver, StopDriver } from "../../../helpers/context/WithDriver";
|
|
import LoginAs from "../../../helpers/LoginAs";
|
|
import VerifyIsOneTimePasswordView from "../../../helpers/assertions/VerifyIsOneTimePasswordView";
|
|
import ClickOnLink from "../../../helpers/ClickOnLink";
|
|
import VerifyIsUseAnotherMethodView from "../../../helpers/assertions/VerifyIsUseAnotherMethodView";
|
|
import ClickOnButton from "../../../helpers/behaviors/ClickOnButton";
|
|
import VerifyIsSecurityKeyView from "../../../helpers/assertions/VerifyIsSecurityKeyView";
|
|
import VerifyIsSecondFactorStage from "../../../helpers/assertions/VerifyIsSecondFactorStage";
|
|
import VerifyIsDuoPushNotificationView from "../../../helpers/assertions/VerifyIsDuoPushNotificationView";
|
|
|
|
|
|
// This fixture tests that the latest used method is still used when the user gets back.
|
|
export default function() {
|
|
before(async function() {
|
|
this.driver = await StartDriver();
|
|
});
|
|
|
|
after(async function() {
|
|
await StopDriver(this.driver);
|
|
});
|
|
|
|
// The default method is TOTP and then everytime the user switches method,
|
|
// it get remembered and reloaded during next authentication.
|
|
it('should serve the correct method', async function() {
|
|
await LoginAs(this.driver, "john", "password", "https://secure.example.com:8080/");
|
|
await VerifyIsSecondFactorStage(this.driver);
|
|
|
|
await ClickOnLink(this.driver, 'Use another method');
|
|
await VerifyIsUseAnotherMethodView(this.driver);
|
|
await ClickOnButton(this.driver, 'Duo Push Notification');
|
|
|
|
// Verify that the user is redirected to the new method
|
|
await VerifyIsDuoPushNotificationView(this.driver);
|
|
await ClickOnLink(this.driver, "Logout");
|
|
|
|
// Login with another user to check that he gets TOTP view.
|
|
await LoginAs(this.driver, "harry", "password", "https://secure.example.com:8080/");
|
|
await VerifyIsOneTimePasswordView(this.driver);
|
|
await ClickOnLink(this.driver, "Logout");
|
|
|
|
// Log john again to check that the prefered method has been persisted
|
|
await LoginAs(this.driver, "john", "password", "https://secure.example.com:8080/");
|
|
await VerifyIsDuoPushNotificationView(this.driver);
|
|
|
|
// Restore the prefered method to one-time password.
|
|
await ClickOnLink(this.driver, 'Use another method');
|
|
await VerifyIsUseAnotherMethodView(this.driver);
|
|
await ClickOnButton(this.driver, 'One-Time Password');
|
|
await VerifyIsOneTimePasswordView(this.driver);
|
|
await ClickOnLink(this.driver, "Logout");
|
|
});
|
|
} |