Example #1
0
    public void Too_Late_Returns_False()
    {
        // Arrange
        var key      = Rnd.ByteF.Get(8);
        var interval = TotpF.GetCurrentInterval(30) - 1;
        var code     = TotpF.GenerateCode(key, interval, 6);

        // Act
        var result = TotpF.VerifyCode(key, code, TotpSettings.Default with {
            IntervalTolerance = false
        });
Example #2
0
    public void Returns_Correct_Interval(int period)
    {
        // Arrange
        var seconds  = (ulong)(DateTime.UtcNow - DateTime.UnixEpoch).TotalSeconds;
        var expected = seconds / (ulong)period;

        // Act
        var result = TotpF.GetCurrentInterval(period);

        // Assert
        Assert.Equal(expected, result);
    }
Example #3
0
    public void Uses_Correct_Period()
    {
        // Arrange
        var key      = Rnd.ByteF.Get(8);
        var period   = Rnd.Int;
        var settings = TotpSettings.Default with {
            PeriodSeconds = period
        };
        var interval = TotpF.GetCurrentInterval(period);
        var expected = TotpF.GenerateCode(key, interval, TotpSettings.Default.CodeLength);

        // Act
        var result = TotpF.GenerateCode(key, settings);

        // Assert
        Assert.Equal(expected, result);
    }
Example #4
0
    public void Uses_Correct_Code_Length(int length)
    {
        // Arrange
        var key      = Rnd.ByteF.Get(8);
        var settings = TotpSettings.Default with {
            CodeLength = length
        };
        var interval = TotpF.GetCurrentInterval(TotpSettings.Default.PeriodSeconds);
        var expected = TotpF.GenerateCode(key, interval, length);

        // Act
        var result = TotpF.GenerateCode(key, settings);

        // Assert
        Assert.Equal(expected, result);
    }
}