Monitoring-Icinga2-Client-Simple
view release on metacpan or search on metacpan
t/MIC-Simple.t view on Meta::CPAN
#!/usr/bin/perl
use strict;
use warnings;
use v5.10.1;
use utf8;
use open qw/ :encoding(UTF-8) :std /;
use Test::More;
use Test::Fatal;
use JSON::XS;
use Monitoring::Icinga2::Client::Simple;
my $LOGIN = getlogin || getpwuid($<);
my @START_END = (
start_time => 1_234_567_890,
end_time => 1_234_567_890 + 60,
);
my $uri_base = 'https://localhost:5665/v1';
my $uri_scheddt = "$uri_base/actions/schedule-downtime";
my $uri_removedt = "$uri_base/actions/remove-downtime";
my $uri_custnot = "$uri_base/actions/send-custom-notification";
my $uri_hosts = "$uri_base/objects/hosts";
my $uri_services = "$uri_base/objects/services";
my $uri_app = "$uri_base/objects/icingaapplications/app";
my $uri_status = "$uri_base/status/IcingaApplication";
my $fil_host = '"filter":"host.name==\"localhost\""';
my $fil_hostsrv = '"filter":"host.name==\"localhost\" && service.name==\"myservice\""';
my $req_frag1 = '{"author":"admin","comment":"no comment","duration":null,"end_time":1234567950,"filter":"host.name==\"localhost\"';
my $req_frag2 = $req_frag1 . '","fixed":null,"joins":["host.name"],"start_time":1234567890,"type":';
my $req_dthost = $req_frag2 . '"Host"}';
my $req_dtservs = $req_frag2 . '"Service"}';
my $req_dtserv = $req_frag1 . ' && service.name==\"myservice\"","fixed":null,"joins":["host.name"],"start_time":1234567890,"type":"Service"}';
(my $req_dthostu = $req_dthost) =~ s/admin/$LOGIN/;
isa_ok( newob(), 'Monitoring::Icinga2::Client::Simple', "new" );
like(
exception { Monitoring::Icinga2::Client::Simple->new(1) },
qr/^only hash-style args are supported/,
'constructor catches wrong calling style'
);
like(
exception { Monitoring::Icinga2::Client::Simple->new( foo => 1 ) },
qr/^`server' arg is required/,
'constructor catches missing server arg'
);
is(
exception { Monitoring::Icinga2::Client::Simple->new( server => 'foo' ) },
undef,
'hostname is the only mandatory argument'
);
req_fail(
'schedule_downtime',
[ host => 'localhost' ],
qr/^missing or undefined argument `start_time'/,
"detects missing args"
);
req_ok(
'schedule_downtime',
[ host => 'localhost', @START_END, comment => 'no comment', author => 'admin', ],
[ $uri_scheddt => $req_dthost ],
"schedule_downtime"
);
req_ok(
( run in 0.927 second using v1.01-cache-2.11-cpan-39bf76dae61 )