using LightBDD.Framework;
using LightBDD.Framework.Scenarios;
using LightBDD.MsTest3;

namespace PlanTempus.X.BDD.Scenarios;

[TestClass]
public partial class AccountSecuritySpecs : FeatureFixtures.AccountSecuritySpecs
{
	[Scenario]
	[TestMethod]
	public async Task Account_lockout_after_multiple_failed_attempts()
	{
		await Runner.RunScenarioAsync(
			_ => Given_account_exists("test@example.com"),
			_ => When_I_attempt_5_failed_logins_within_5_minutes(),
			_ => Then_the_account_should_be_locked(),
			_ => And_lockout_end_should_be_set(),
			_ => And_subsequent_login_attempts_should_fail_until_lockout_end()
		);
	}
}
