testbrookmiddleware.pas 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. unit testbrookmiddleware;
  2. {$mode objfpc}{$H+}
  3. interface
  4. uses
  5. BrookMiddleware, BrookRouter, BrookAction, BrookHttpDefs, fpcunit,
  6. testregistry, sysutils;
  7. type
  8. { TAction1 }
  9. TAction1 = class(TBrookAction)
  10. public
  11. procedure Get; override;
  12. end;
  13. { TMiddleware }
  14. TMiddleware = class(TBrookMiddleware)
  15. private
  16. FMyContent: string;
  17. public
  18. procedure Execute(ASender: TObject; AAction: TBrookAction;
  19. ARoute: TBrookRoute); override;
  20. property MyContent: string read FMyContent;
  21. end;
  22. { TTestBrookMiddleware }
  23. TTestBrookMiddleware = class(TTestCase)
  24. published
  25. procedure TestExecute;
  26. end;
  27. implementation
  28. var
  29. Middleware: TMiddleware;
  30. { TAction1 }
  31. procedure TAction1.Get;
  32. begin
  33. Write('OK');
  34. end;
  35. { TMiddleware }
  36. procedure TMiddleware.Execute(ASender: TObject; AAction: TBrookAction;
  37. ARoute: TBrookRoute);
  38. begin
  39. FMyContent := Trim(TAction1(AAction).HttpResponse.Contents.Text);
  40. inherited Execute(ASender, AAction, ARoute);
  41. end;
  42. { TTestBrookMiddleware }
  43. procedure TTestBrookMiddleware.TestExecute;
  44. var
  45. rt: TBrookRouter;
  46. rq: TBrookRequest;
  47. rs: TBrookResponse;
  48. begin
  49. rq := TBrookRequest.Create;
  50. {$WARNINGS OFF}
  51. rs := TBrookResponse.Create(rq);
  52. {$WARNINGS ON}
  53. try
  54. rt := TBrookRouter.Service;
  55. Middleware.BindExecution(@rt.AfterExecuteAction);
  56. rt.Routes.Clear;
  57. TAction1.Register('/action1');
  58. rq.Method := 'GET';
  59. rq.PathInfo := '/action1';
  60. rt.Route(rq, rs);
  61. AssertEquals('OK', Middleware.MyContent);
  62. finally
  63. rs.Free;
  64. rq.Free;
  65. end;
  66. end;
  67. initialization
  68. Middleware := TMiddleware.Create;
  69. RegisterTest(TTestBrookMiddleware);
  70. finalization
  71. FreeAndNil(Middleware);
  72. end.