utestonetimepass.pp 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. unit utestonetimepass;
  2. {$mode ObjFPC}{$H+}
  3. interface
  4. uses
  5. FPCUnit, TestRegistry, Classes, SysUtils, onetimepass ;
  6. type
  7. { TTestOnetimePass }
  8. TTestOnetimePass = class(TTestCase)
  9. Published
  10. Procedure Test1Interval;
  11. Procedure Test2Intervals;
  12. Procedure TestValid1;
  13. Procedure TestInValid1;
  14. Procedure TestGen;
  15. end;
  16. implementation
  17. Const
  18. Secret = 'MFRGGZDFMZTWQ2LK';
  19. Procedure TTestOnetimePass.Test1Interval;
  20. begin
  21. AssertEquals('1 interval', 765705, HOTPCalculateToken(Secret, 1));
  22. end;
  23. procedure TTestOnetimePass.Test2Intervals;
  24. begin
  25. AssertEquals('2 interval', 816065, HOTPCalculateToken(Secret, 2));
  26. end;
  27. procedure TTestOnetimePass.TestValid1;
  28. Var
  29. C,Tok : LongInt;
  30. begin
  31. C:=1;
  32. Tok:=TOTPCalculateToken(Secret);
  33. AssertTrue('Valid',TOTPValidate(Secret,Tok,1,C));
  34. end;
  35. procedure TTestOnetimePass.TestInValid1;
  36. Var
  37. C,Tok : LongInt;
  38. begin
  39. C:=1;
  40. Tok:=TOTPCalculateToken(Secret);
  41. AssertFalse('Invalid',TOTPValidate(Secret,Tok+1,1,C));
  42. end;
  43. procedure TTestOnetimePass.TestGen;
  44. var
  45. lSecret : String;
  46. C,Tok : LongInt;
  47. begin
  48. c:=1;
  49. lSecret:=TOTPSharedSecret();
  50. AssertEquals('Length',16,Length(lSecret));
  51. Tok:=TOTPCalculateToken(lSecret);
  52. AssertTrue('Valid',TOTPValidate(lSecret,Tok,1,C));
  53. end;
  54. initialization
  55. RegisterTest(TTestOnetimePass);
  56. end.