testbrookhttputils.pas 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. unit testbrookhttputils;
  2. {$mode objfpc}{$H+}
  3. interface
  4. uses
  5. BrookFCLHttpClientBroker, BrookHttpUtils, BrookUtils, BrookHttpClient,
  6. fpcunit, testregistry, sysutils;
  7. type
  8. { TTestBrookHttpUtils }
  9. TTestBrookHttpUtils = class(TTestCase)
  10. published
  11. procedure TestDateTimeToGMT;
  12. procedure TestSameURL;
  13. procedure TestStatusCodeToReasonPhrase;
  14. procedure TestReasonPhraseToStatusCode;
  15. procedure TestGetAcceptEncodingSet;
  16. procedure TestGetAcceptEncoding;
  17. procedure TestMimeTypeFromFileExt;
  18. procedure TestTypeFromFileName;
  19. procedure TestFileExtFromMimeType;
  20. procedure TestExtractUrlFileName;
  21. procedure RequestMethodToStr;
  22. procedure StrToRequestMethod;
  23. procedure HttpRequest;
  24. end;
  25. const
  26. TEST_DATE_TIME = 41233 + 0.6161111111;
  27. implementation
  28. { TTestBrookHttpUtils }
  29. procedure TTestBrookHttpUtils.TestDateTimeToGMT;
  30. begin
  31. AssertEquals('Tue, 20 Nov 2012 14:47:12 GMT',
  32. BrookDateTimeToGMT(TEST_DATE_TIME));
  33. end;
  34. procedure TTestBrookHttpUtils.TestSameURL;
  35. begin
  36. AssertTrue(BrookSameURL('http://localhost', 'http://localhost/'));
  37. end;
  38. procedure TTestBrookHttpUtils.TestStatusCodeToReasonPhrase;
  39. begin
  40. AssertEquals('OK', BrookStatusCodeToReasonPhrase(200));
  41. end;
  42. procedure TTestBrookHttpUtils.TestReasonPhraseToStatusCode;
  43. begin
  44. AssertEquals(200, BrookReasonPhraseToStatusCode('OK'));
  45. end;
  46. procedure TTestBrookHttpUtils.TestGetAcceptEncodingSet;
  47. begin
  48. AssertEquals('deflate,gzip', BrookGetAcceptEncoding([aeDeflate, aeGzip]));
  49. end;
  50. procedure TTestBrookHttpUtils.TestGetAcceptEncoding;
  51. begin
  52. AssertTrue(BrookGetAcceptEncodingSet('deflate,gzip') = [aeDeflate, aeGzip]);
  53. end;
  54. procedure TTestBrookHttpUtils.TestMimeTypeFromFileExt;
  55. begin
  56. AssertEquals('text/plain', BrookMimeTypeFromFileExt('.txt'));
  57. end;
  58. procedure TTestBrookHttpUtils.TestTypeFromFileName;
  59. begin
  60. AssertEquals('text/plain', BrookMimeTypeFromFileName('/foo/file.txt'));
  61. end;
  62. procedure TTestBrookHttpUtils.TestFileExtFromMimeType;
  63. begin
  64. AssertEquals('.txt', BrookFileExtFromMimeType('text/plain'));
  65. end;
  66. procedure TTestBrookHttpUtils.TestExtractUrlFileName;
  67. begin
  68. AssertEquals('dummy.txt',
  69. BrookExtractUrlFileName('http://localhost/dummy.txt'));
  70. AssertEquals('dummy.txt',
  71. BrookExtractUrlFileName('http://localhost/dummy.txt?foo=bah', True));
  72. end;
  73. procedure TTestBrookHttpUtils.RequestMethodToStr;
  74. begin
  75. AssertEquals('GET', BrookRequestMethodToStr(rmGet));
  76. AssertEquals('POST', BrookRequestMethodToStr(rmPost));
  77. AssertEquals('PUT', BrookRequestMethodToStr(rmPut));
  78. AssertEquals('DELETE', BrookRequestMethodToStr(rmDelete));
  79. AssertEquals('HEAD', BrookRequestMethodToStr(rmHead));
  80. AssertEquals('OPTIONS', BrookRequestMethodToStr(rmOptions));
  81. AssertEquals('TRACE', BrookRequestMethodToStr(rmTrace));
  82. end;
  83. procedure TTestBrookHttpUtils.StrToRequestMethod;
  84. begin
  85. AssertTrue(BrookStrToRequestMethod('GET') = rmGet);
  86. AssertTrue(BrookStrToRequestMethod('POST') = rmPost);
  87. AssertTrue(BrookStrToRequestMethod('PUT') = rmPut);
  88. AssertTrue(BrookStrToRequestMethod('DELETE') = rmDelete);
  89. AssertTrue(BrookStrToRequestMethod('HEAD') = rmHead);
  90. AssertTrue(BrookStrToRequestMethod('OPTIONS') = rmOptions);
  91. AssertTrue(BrookStrToRequestMethod('TRACE') = rmTrace);
  92. end;
  93. procedure TTestBrookHttpUtils.HttpRequest;
  94. var
  95. r: TBrookHttpResult;
  96. begin
  97. r := BrookHttpRequest('http://silvioprog.github.io/brookframework/');
  98. AssertTrue(r.Content <> '');
  99. r := BrookHttpRequest('http://brookframework.org/cgi-bin/cgi1.bf/' +
  100. 'personlist?jtStartIndex=0&jtPageSize=5&jtSorting=id%20ASC', rmPost);
  101. AssertEquals('{ "Result" : "OK", "TotalRecordCount" : 11, "Records" : ' +
  102. '[{ "id" : 1, "name" : "Silvio Clecio" }, { "id" : 2, "name" : ' +
  103. '"Luciano Souza" }, { "id" : 3, "name" : "Joao Morais" }, { "id" : 4, ' +
  104. '"name" : "Waldir Paim" }, { "id" : 5, "name" : "Gilson Nunes" }] }',
  105. Trim(r.Content));
  106. AssertEquals('OK', r.ReasonPhrase);
  107. AssertEquals(200, r.StatusCode);
  108. end;
  109. initialization
  110. RegisterTest(TTestBrookHttpUtils);
  111. end.