1use strict; 2use warnings; 3use Test::More; 4 5plan skip_all => 'this middleware requires DateTime' unless eval 'use DateTime; 1;'; 6plan tests => 3; 7 8use HTTP::Engine; 9use HTTP::Engine::Middleware; 10use HTTP::Engine::Response; 11use HTTP::Request; 12use HTTP::Request::Common; 13 14my $mw = HTTP::Engine::Middleware->new; 15$mw->install( 16 'HTTP::Engine::Middleware::AccessLog', 17 { logger => sub { 18 my ( $message ) = @_; 19 ::like $message, qr{127.0.0.1 - - \[\d\d/\w+/\d\d:\d\d:\d\d:\d\d \+0000\] "GET /foo\?getparam=1 HTTP/1.0" 200 - "http://example.com/" "internatoexplolerr"}; 20 } 21 } 22); 23 24my $request 25 = HTTP::Request->new( 'GET' => 'http://localhost/foo?getparam=1', HTTP::Headers->new( 26 'User-Agent' => 'internatoexplolerr', 27 Referer => 'http://example.com/', 28 'Content-Length' => 0, 29 'content-type' => 'text/plain', 30 )); 31my $res = HTTP::Engine->new( 32 interface => { 33 module => 'Test', 34 request_handler => $mw->handler( 35 sub { HTTP::Engine::Response->new( body => 'ok' ) } 36 ), 37 }, 38)->run($request); 39my $out = $res->content; 40 41is $res->code, '200', 'response code'; 42is $out, 'ok', 'response content'; 43 44