comparison empty_gif.t @ 326:a2c15637c9d5

Tests: empty gif tests.
author Sergey Kandaurov <pluknet@nginx.com>
date Tue, 27 Aug 2013 21:12:53 +0400
parents
children e9064d691790
comparison
equal deleted inserted replaced
325:ba212f244288 326:a2c15637c9d5
1 #!/usr/bin/perl
2
3 # (C) Sergey Kandaurov
4
5 # Tests for empty gif module.
6
7 ###############################################################################
8
9 use warnings;
10 use strict;
11
12 use Test::More;
13
14 use Socket qw/ CRLF /;
15
16 BEGIN { use FindBin; chdir($FindBin::Bin); }
17
18 use lib 'lib';
19 use Test::Nginx;
20
21 ###############################################################################
22
23 select STDERR; $| = 1;
24 select STDOUT; $| = 1;
25
26 my $t = Test::Nginx->new()->has(qw/http empty_gif/)->plan(4);
27
28 $t->write_file_expand('nginx.conf', <<'EOF');
29
30 %%TEST_GLOBALS%%
31
32 daemon off;
33
34 events {
35 }
36
37 http {
38 %%TEST_GLOBALS_HTTP%%
39
40 server {
41 listen 127.0.0.1:8080;
42 server_name localhost;
43
44 location / {
45 empty_gif;
46 }
47 }
48 }
49
50 EOF
51
52 $t->run();
53
54 my $gif = unhex(<<'EOF');
55 0x0000: 47 49 46 38 39 61 01 00 01 00 80 01 00 00 00 00 |GIF89a.. ........|
56 0x0010: ff ff ff 21 f9 04 01 00 00 01 00 2c 00 00 00 00 |...!.... ...,....|
57 0x0020: 01 00 01 00 00 02 02 4c 01 00 3b |.......L ..;|
58 EOF
59
60 ###############################################################################
61
62 is(http_get_body('/'), $gif, 'empty gif');
63 like(http_get('/'), qr!Content-Type: image/gif!i, 'get content type');
64 like(http_head('/'), qr!Content-Type: image/gif!i, 'head content type');
65 like(http('PUT / HTTP/1.0' . CRLF . CRLF), qr!405 Not Allowed!i, 'put');
66
67 ###############################################################################
68
69 sub unhex {
70 my ($input) = @_;
71 my $buffer = '';
72
73 for my $l ($input =~ m/: +((?:[0-9a-f]{2,4} +)+) /gms) {
74 for my $v ($l =~ m/[0-9a-f]{2}/g) {
75 $buffer .= chr(hex($v));
76 }
77 }
78
79 return $buffer;
80 }
81
82 sub http_get_body {
83 my ($uri) = @_;
84
85 return undef if !defined $uri;
86
87 my $text = http_get($uri);
88
89 if ($text !~ /(.*?)\x0d\x0a?\x0d\x0a?(.*)/ms) {
90 return undef;
91 }
92
93 return $2;
94 }
95
96 ###############################################################################