# Before `make install' is performed this script should be runnable with
# `make test'. After `make install' it should work as `perl Message-Passing-Filter-Regexp.t'
use lib 'lib';
use strict;
use warnings;
use Data::Dumper;
use JSON;
use Test::More;
use Message::Passing::Output::Test;
BEGIN { use_ok('Message::Passing::Filter::Regexp') };

my $input = {
    '@tags' => [],
    '@message' => '127.0.0.1 - - [19/Jan/2012:21:08:54 +0800] "POST /cgi-bin/brum.pl?act=evnt-edit&eventid=24 HTTP/1.1" 200 11435',
    '@timestamp' => '2012-06-19T21:08:54+0800',
    '@fields' => {},
};

my $exp = {
    '@tags' => [],
    '@message' => '127.0.0.1 - - [19/Jan/2012:21:08:54 +0800] "POST /cgi-bin/brum.pl?act=evnt-edit&eventid=24 HTTP/1.1" 200 11435',
    '@timestamp' => '2012-06-19T21:08:54+0800',
    '@fields' => {
        req => 'POST /cgi-bin/brum.pl?act=evnt-edit&eventid=24 HTTP/1.1',
        ts => '19/Jan/2012:21:08:54 +0800',
        bytes => '11435',
    },
};

my $json_exp = {
    '@tags' => [],
    '@message' => '127.0.0.1 - - [19/Jan/2012:21:08:54 +0800] "POST /cgi-bin/brum.pl?act=evnt-edit&eventid=24 HTTP/1.1" 200 11435',
    '@timestamp' => '2012-06-19T21:08:54+0800',
    '@fields' => {
        req => 'POST /cgi-bin/brum.pl?act=evnt-edit&eventid=24 HTTP/1.1',
        ts => '19/Jan/2012:21:08:54 +0800',
        bytes => 11435,
    },
};

my $out = Message::Passing::Output::Test->new;
my $in = Message::Passing::Filter::Regexp->new(
    output_to => $out,
    regexfile => 't/regexfile',
    format => ':common',
    capture => [ qw( ts req bytes ) ],
    mutate => { bytes => 'number' },
);

$in->consume($input);
my ($output) = $out->messages;
is_deeply( $output, $exp, "capture result test");
is( to_json($output), to_json($json_exp), "json result test");

done_testing;
