not_modified.t 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. #!/usr/bin/perl
  2. # (C) Maxim Dounin
  3. # Tests for not modified filter module.
  4. ###############################################################################
  5. use warnings;
  6. use strict;
  7. use Test::More;
  8. BEGIN { use FindBin; chdir($FindBin::Bin); }
  9. use lib 'lib';
  10. use Test::Nginx;
  11. ###############################################################################
  12. select STDERR; $| = 1;
  13. select STDOUT; $| = 1;
  14. my $t = Test::Nginx->new()->has('http')->plan(4)
  15. ->write_file_expand('nginx.conf', <<'EOF');
  16. %%TEST_GLOBALS%%
  17. master_process off;
  18. daemon off;
  19. events {
  20. }
  21. http {
  22. %%TEST_GLOBALS_HTTP%%
  23. server {
  24. listen 127.0.0.1:8080;
  25. server_name localhost;
  26. location / {
  27. if_modified_since before;
  28. }
  29. }
  30. }
  31. EOF
  32. $t->write_file('t', '');
  33. $t->run();
  34. ###############################################################################
  35. like(http_get_ims('/t', 'Wed, 08 Jul 2037 22:53:52 GMT'), qr/304/,
  36. '0x7F000000');
  37. like(http_get_ims('/t', 'Tue, 19 Jan 2038 03:14:07 GMT'), qr/304/,
  38. '0x7FFFFFFF');
  39. SKIP: {
  40. skip "only for 32-bit time_t", 2 if (gmtime(0xFFFFFFFF))[5] == 206;
  41. like(http_get_ims('/t', 'Tue, 19 Jan 2038 03:14:08 GMT'), qr/200/,
  42. '0x7FFFFFFF + 1');
  43. like(http_get_ims('/t', 'Fri, 25 Feb 2174 09:42:23 GMT'), qr/200/,
  44. '0x17FFFFFFF');
  45. }
  46. ###############################################################################
  47. sub http_get_ims {
  48. my ($url, $ims) = @_;
  49. return http(<<EOF);
  50. GET $url HTTP/1.0
  51. Host: localhost
  52. If-Modified-Since: $ims
  53. EOF
  54. }
  55. ###############################################################################