public bool VerifyPasswordForUser(string UserLoginName, string OneTimePassword) { var now = DateTime.Now; var expires = _interval.RoundTimeUpToNearest(now, TimeSpan.FromSeconds(_options.TimeInterval)); var existingSecret = _reader .Where(s => s.UserLoginName == UserLoginName.Trim() && now <= s.ValidUntil) .Select(s => s.Secret) .FirstOrDefault(); if (existingSecret == null) { return(false); } var secretProvider = new ExistingSecretProvider(existingSecret); var generator = new TimeBasedOneTimeGenerator(secretProvider, _options, _interval); var generatedPassword = generator.GeneratePassword(); return(OneTimePassword == generatedPassword); }
public void And_All_Minimums_Are_Met_Then_A_One_Time_Password_Is_Returned() { var generator = new TimeBasedOneTimeGenerator(secretProvider, passwordOptions, nowTimeCalculator); var actual = generator.GeneratePassword(); Assert.IsNotNull(actual); Assert.AreEqual(passwordOptions.PasswordLength, actual.Length); }
public void And_Multiple_Requests_To_Generate_Are_Outside_Time_Interval_Then_They_Are_The_Different() { var first_generator = new TimeBasedOneTimeGenerator(secretProvider, passwordOptions, nowTimeCalculator); var second_generator = new TimeBasedOneTimeGenerator(secretProvider, passwordOptions, laterTimeCalculator); var first_actual = first_generator.GeneratePassword(); var second_actual = second_generator.GeneratePassword(); Assert.AreNotEqual(first_actual, second_actual); }
public void And_Time_Rounder_Is_Null_Then_An_Exception_Is_Thrown() { var actual = new TimeBasedOneTimeGenerator(secretProvider, passwordOptions, null); }
public void And_Password_Options_Is_Null_Then_An_Exception_Is_Thrown() { var actual = new TimeBasedOneTimeGenerator(secretProvider, null, nowTimeCalculator); }
public void And_Secret_Provider_Is_Null_Then_An_Exception_Is_Thrown() { var actual = new TimeBasedOneTimeGenerator(null, passwordOptions, nowTimeCalculator); }