tccookies.pp 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. unit tccookies;
  2. {$mode objfpc}{$H+}
  3. interface
  4. uses
  5. Classes, SysUtils, fpcunit, testutils, testregistry,
  6. httpdefs;
  7. type
  8. TTestTCookies = class(TTestCase)
  9. published
  10. procedure TestParseWriteRead;
  11. end;
  12. implementation
  13. procedure TTestTCookies.TestParseWriteRead;
  14. const
  15. Cookies: array of String = (
  16. 'Set-Cookie: cookie1',
  17. 'Set-Cookie: cookie2;',
  18. 'Set-Cookie: cookie3=1507337',
  19. 'Set-Cookie: cookie4=1507337;',
  20. 'Set-Cookie: cookie5=1507337; path',
  21. 'Set-Cookie: cookie6=1507337; path=',
  22. 'Set-Cookie: cookie7=1507337; path=/',
  23. 'Set-Cookie: cookie8=1507337; secure',
  24. 'Set-Cookie: cookie9=1507337; secure=',
  25. 'Set-Cookie: cookie10=1507337; secure=false',
  26. 'Set-Cookie: cookie11=1507337; secure; httponly',
  27. 'Set-Cookie: cookie12=1507337; SameSite=None',
  28. 'Set-Cookie: cookie13=1507337; SameSite=none',
  29. 'Set-Cookie: cookie14=1507337; path=/; secure; httponly; SameSite=None'
  30. );
  31. var
  32. Cookie: String;
  33. C: TCookie;
  34. begin
  35. with TCookies.Create(TCookie) do
  36. try
  37. for Cookie in Cookies do
  38. AddFromString(Cookie);
  39. AssertEquals(Count, Length(Cookies));
  40. C := FindCookie('cookie0');
  41. AssertNull(C);
  42. C := FindCookie('cookie1');
  43. AssertNotNull(C);
  44. AssertEquals(C.Value, '');
  45. C := FindCookie('cookie2');
  46. AssertNotNull(C);
  47. AssertEquals(C.Value, '');
  48. C := FindCookie('cookie3');
  49. AssertNotNull(C);
  50. AssertEquals(C.Value, '1507337');
  51. C := FindCookie('cookie4');
  52. AssertNotNull(C);
  53. AssertEquals(C.Value, '1507337');
  54. C := FindCookie('cookie5');
  55. AssertNotNull(C);
  56. AssertEquals(C.Value, '1507337');
  57. AssertEquals(C.Path, '');
  58. C := FindCookie('cookie6');
  59. AssertNotNull(C);
  60. AssertEquals(C.Value, '1507337');
  61. AssertEquals(C.Path, '');
  62. C := FindCookie('cookie7');
  63. AssertNotNull(C);
  64. AssertEquals(C.Value, '1507337');
  65. AssertEquals(C.Path, '/');
  66. C := FindCookie('cookie8');
  67. AssertNotNull(C);
  68. AssertEquals(C.Value, '1507337');
  69. AssertTrue(C.Secure);
  70. C := FindCookie('cookie9');
  71. AssertNotNull(C);
  72. AssertEquals(C.Value, '1507337');
  73. AssertTrue(C.Secure);
  74. C := FindCookie('cookie10');
  75. AssertNotNull(C);
  76. AssertEquals(C.Value, '1507337');
  77. AssertFalse(C.Secure);
  78. C := FindCookie('cookie11');
  79. AssertNotNull(C);
  80. AssertEquals(C.Value, '1507337');
  81. AssertTrue(C.Secure);
  82. AssertTrue(C.HttpOnly);
  83. C := FindCookie('cookie12');
  84. AssertNotNull(C);
  85. AssertEquals(C.Value, '1507337');
  86. AssertTrue(C.SameSite = ssNone);
  87. C := FindCookie('cookie13');
  88. AssertNotNull(C);
  89. AssertEquals(C.Value, '1507337');
  90. AssertTrue(C.SameSite = ssNone);
  91. C := FindCookie('cookie14');
  92. AssertNotNull(C);
  93. AssertEquals(C.Value, '1507337');
  94. AssertEquals(C.Path, '/');
  95. AssertTrue(C.Secure);
  96. AssertTrue(C.HttpOnly);
  97. AssertTrue(C.SameSite = ssNone);
  98. finally
  99. Free;
  100. end;
  101. end;
  102. initialization
  103. RegisterTest(TTestTCookies);
  104. end.