summaryrefslogtreecommitdiffstats
path: root/web/server/h2o/libh2o/misc/p5-net-fastcgi/t/020_protocol/010_build_record.t
blob: 9f321261c98ab818b53b3b5b1701c293af1a3856 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#!perl

use strict;
use warnings;

use lib 't/lib', 'lib';
use myconfig;

use Test::More tests => 11;
use Test::HexString;
use Test::Exception;

BEGIN {
    use_ok('Net::FastCGI::Protocol', qw[ build_record ]);
}

my @tests = (
    # octets                                                               type  request_id                              content
    [ "\x01\x00\x00\x00\x00\x00\x00\x00",                                     0,          0,                               undef ],
    [ "\x01\xFF\xFF\xFF\x00\x00\x00\x00",                                  0xFF,     0xFFFF,                               undef ],
    [ "\x01\x01\x00\x01\x00\x01\x07\x00\x01\x00\x00\x00\x00\x00\x00\x00",     1,          1,                              "\x01" ],
    [ "\x01\x01\x00\x01\x00\x05\x03\x00\x01\x01\x01\x01\x01\x00\x00\x00",     1,          1,              "\x01\x01\x01\x01\x01" ],
    [ "\x01\x01\x00\x01\x00\x08\x00\x00\x01\x01\x01\x01\x01\x01\x01\x01",     1,          1,  "\x01\x01\x01\x01\x01\x01\x01\x01" ],
);

foreach my $test (@tests) {
    my $expected = $test->[0];
    my $got      = build_record(@$test[1..3]);
    is_hexstr($got, $expected, 'build_record()');
}

{
    my $exp = "\x01\x01\x00\x02\x00\x00\x00\x00";
    my $got = build_record(1, 2);
    is_hexstr($got, $exp, 'build_record(1, 2)');
}

throws_ok { build_record( 0, 0, "\x00" x (0xFFFF + 1) ) } qr/^Invalid Argument: 'content' cannot exceed/;

# build_record(type, request_id [, content])
for (0..1, 4) {
    throws_ok { build_record((1) x $_) } qr/^Usage: /;
}