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