/
01-routes.t
53 lines (41 loc) · 1.19 KB
/
01-routes.t
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
45
46
47
48
49
50
51
52
53
#!/usr/bin/env perl6
use HTTP::Server::Async;
use HTTP::Server::Router;
use Test;
plan 3;
start {
my HTTP::Server::Async $app .=new;
serve $app;
route '/:named/whatever', sub ($req, $res) {
my $str = $req.params<named> // '';
$res.close($str);
};
route '/poboy', sub ($req, $res) {
my $str = ($req.params<named> // '') eq 'poboy' ?? 'fail' !! 'pass';
$res.close($str);
};
route /.+/, sub ($req, $res) {
$res.close('/.+/');
}
$app.listen;
CATCH { default { .say; } }
}
sleep 2;
await start {
sub req (Str $req) {
my IO::Socket::INET $client .=new(:host<127.0.0.1>, :port(1666));
my $data = '';
$client.print($req);
sleep .5;
while my $d = $client.recv {
$data ~= $d;
}
CATCH { default { "CAUGHT {$_}".say; } }
try { $client.close; CATCH { default { } } }
return $data;
}
ok req("GET /poboy HTTP/1.0\r\nContent-length: 0\r\n\r\n") ~~ /'pass' $/, 'Pass test';
ok req("GET /poboy/whatever HTTP/1.0\r\nContent-length: 0\r\n\r\n") ~~ /'poboy' $/, 'Parsed param \'named\' => \'poboy\'';
ok req("GET /aabcc HTTP/1.0\r\nContent-length: 0\r\n\r\n") ~~ /'/.+/' $/, '/.+/ regex match';
}
# vi:syntax=perl6