mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-17 07:39:13 +02:00
78 lines
1.3 KiB
ObjectPascal
78 lines
1.3 KiB
ObjectPascal
unit utestonetimepass;
|
|
|
|
{$mode ObjFPC}{$H+}
|
|
|
|
interface
|
|
|
|
uses
|
|
FPCUnit, TestRegistry, Classes, SysUtils, onetimepass ;
|
|
|
|
type
|
|
|
|
{ TTestOnetimePass }
|
|
|
|
TTestOnetimePass = class(TTestCase)
|
|
Published
|
|
Procedure Test1Interval;
|
|
Procedure Test2Intervals;
|
|
Procedure TestValid1;
|
|
Procedure TestInValid1;
|
|
Procedure TestGen;
|
|
end;
|
|
|
|
implementation
|
|
|
|
Const
|
|
Secret = 'MFRGGZDFMZTWQ2LK';
|
|
|
|
Procedure TTestOnetimePass.Test1Interval;
|
|
|
|
begin
|
|
AssertEquals('1 interval', 765705, HOTPCalculateToken(Secret, 1));
|
|
end;
|
|
|
|
procedure TTestOnetimePass.Test2Intervals;
|
|
begin
|
|
AssertEquals('2 interval', 816065, HOTPCalculateToken(Secret, 2));
|
|
end;
|
|
|
|
procedure TTestOnetimePass.TestValid1;
|
|
|
|
Var
|
|
C,Tok : LongInt;
|
|
|
|
begin
|
|
C:=1;
|
|
Tok:=TOTPCalculateToken(Secret);
|
|
AssertTrue('Valid',TOTPValidate(Secret,Tok,1,C));
|
|
end;
|
|
|
|
procedure TTestOnetimePass.TestInValid1;
|
|
Var
|
|
C,Tok : LongInt;
|
|
|
|
begin
|
|
C:=1;
|
|
Tok:=TOTPCalculateToken(Secret);
|
|
AssertFalse('Invalid',TOTPValidate(Secret,Tok+1,1,C));
|
|
end;
|
|
|
|
procedure TTestOnetimePass.TestGen;
|
|
|
|
var
|
|
lSecret : String;
|
|
C,Tok : LongInt;
|
|
|
|
begin
|
|
c:=1;
|
|
lSecret:=TOTPSharedSecret();
|
|
AssertEquals('Length',16,Length(lSecret));
|
|
Tok:=TOTPCalculateToken(lSecret);
|
|
AssertTrue('Valid',TOTPValidate(lSecret,Tok,1,C));
|
|
end;
|
|
|
|
initialization
|
|
RegisterTest(TTestOnetimePass);
|
|
end.
|
|
|