175 lines
3.4 KiB
Perl
175 lines
3.4 KiB
Perl
|
use strict;
|
||
|
use Test::More 0.98;
|
||
|
use Test::Exception;
|
||
|
use Test::Warnings 0.005 qw(warning allow_warnings);
|
||
|
|
||
|
use Log::GELF::Util qw(validate_message);
|
||
|
|
||
|
throws_ok{
|
||
|
validate_message();
|
||
|
}
|
||
|
qr/Mandatory parameter 'short_message' missing.*/,
|
||
|
'mandatory parameters missing';
|
||
|
|
||
|
throws_ok{
|
||
|
validate_message(
|
||
|
version => '1.x',
|
||
|
host => 1,
|
||
|
short_message => 1,
|
||
|
);
|
||
|
}
|
||
|
qr/version must be 1.1, supplied.*/,
|
||
|
'version check';
|
||
|
|
||
|
throws_ok{
|
||
|
validate_message(
|
||
|
host => 1,
|
||
|
short_message => 1,
|
||
|
level => 'x',
|
||
|
);
|
||
|
}
|
||
|
qr/level must be between 0 and 7 or a valid log level string/,
|
||
|
'level check';
|
||
|
|
||
|
throws_ok{
|
||
|
validate_message(
|
||
|
host => 1,
|
||
|
short_message => 1,
|
||
|
timestamp => 'x',
|
||
|
);
|
||
|
}
|
||
|
qr/bad timestamp/,
|
||
|
'timestamp check';
|
||
|
|
||
|
throws_ok{
|
||
|
validate_message(
|
||
|
host => 1,
|
||
|
short_message => 1,
|
||
|
bad => 'to the bone.',
|
||
|
);
|
||
|
}
|
||
|
qr/invalid field 'bad'.*/,
|
||
|
'bad field check';
|
||
|
|
||
|
throws_ok{
|
||
|
validate_message(
|
||
|
host => 1,
|
||
|
short_message => 1,
|
||
|
'bad name' => 'to the bone.',
|
||
|
);
|
||
|
}
|
||
|
qr/invalid field 'bad name'.*/,
|
||
|
'bad field check 2';
|
||
|
|
||
|
allow_warnings 1; #throws legit warnings
|
||
|
throws_ok{
|
||
|
validate_message(
|
||
|
host => 1,
|
||
|
short_message => 1,
|
||
|
facility => {},
|
||
|
);
|
||
|
}
|
||
|
qr/The 'facility' parameter.*/,
|
||
|
'bad facility check';
|
||
|
|
||
|
throws_ok{
|
||
|
validate_message(
|
||
|
host => 1,
|
||
|
short_message => 1,
|
||
|
line => 'wrong',
|
||
|
);
|
||
|
}
|
||
|
qr/line must be a number/,
|
||
|
'bad line check';
|
||
|
allow_warnings 0;
|
||
|
|
||
|
like( warning {
|
||
|
validate_message(
|
||
|
host => 1,
|
||
|
short_message => 1,
|
||
|
facility => 1,
|
||
|
);
|
||
|
},
|
||
|
qr/^facility is deprecated.*/,
|
||
|
'facility deprecated');
|
||
|
|
||
|
like( warning {
|
||
|
validate_message(
|
||
|
host => 1,
|
||
|
short_message => 1,
|
||
|
line => 1,
|
||
|
);
|
||
|
},
|
||
|
qr/^line is deprecated.*/,
|
||
|
'line deprecated');
|
||
|
|
||
|
like( warning {
|
||
|
validate_message(
|
||
|
host => 1,
|
||
|
short_message => 1,
|
||
|
file => 1,
|
||
|
);
|
||
|
},
|
||
|
qr/^file is deprecated.*/,
|
||
|
'file deprecated');
|
||
|
|
||
|
my $msg;
|
||
|
lives_ok{
|
||
|
$msg = validate_message(
|
||
|
host => 1,
|
||
|
short_message => 1,
|
||
|
);
|
||
|
}
|
||
|
'default version';
|
||
|
|
||
|
my $time = time;
|
||
|
is($msg->{version}, '1.1', 'correct default version');
|
||
|
like($msg->{timestamp}, qr/\d+\.\d+/, 'default timestamp');
|
||
|
is($msg->{level}, 1, 'default level');
|
||
|
|
||
|
lives_ok{
|
||
|
$msg = validate_message(
|
||
|
host => 1,
|
||
|
short_message => 1,
|
||
|
level => 2,
|
||
|
);
|
||
|
}
|
||
|
'numeric level';
|
||
|
is($msg->{level}, 2, 'default level');
|
||
|
|
||
|
lives_ok{
|
||
|
$msg = validate_message(
|
||
|
host => 1,
|
||
|
short_message => 1,
|
||
|
level => 'err',
|
||
|
);
|
||
|
}
|
||
|
'numeric level';
|
||
|
is($msg->{level}, 3, 'default level');
|
||
|
|
||
|
allow_warnings 1; #throws legit warnings
|
||
|
lives_ok{
|
||
|
$msg = validate_message(
|
||
|
host => 1,
|
||
|
short_message => 1,
|
||
|
facility => 1,
|
||
|
);
|
||
|
}
|
||
|
'facility check';
|
||
|
ok(exists $msg->{facility}, 'line exists');
|
||
|
is($msg->{facility}, '1', 'correct facility');
|
||
|
|
||
|
lives_ok{
|
||
|
$msg = validate_message(
|
||
|
host => 1,
|
||
|
short_message => 1,
|
||
|
line => 1,
|
||
|
);
|
||
|
}
|
||
|
'line check';
|
||
|
ok(exists $msg->{line}, 'line exists');
|
||
|
is($msg->{line}, '1', 'correct line');
|
||
|
allow_warnings 0;
|
||
|
|
||
|
done_testing(26);
|