mirror of
https://github.com/centreon/centreon-plugins.git
synced 2025-07-31 01:24:35 +02:00
66 lines
6.3 KiB
Perl
66 lines
6.3 KiB
Perl
use strict;
|
|
use warnings;
|
|
use Test2::V0;
|
|
use Test2::Tools::Compare qw{is like match};
|
|
use FindBin;
|
|
use lib "$FindBin::RealBin/../../../../src";
|
|
use centreon::plugins::misc;
|
|
use centreon::plugins::output;
|
|
use centreon::plugins::options;
|
|
|
|
sub test {
|
|
my $mock_output = mock 'centreon::plugins::output'; # this is from Test2::Tools::Mock, included by Test2::V0
|
|
|
|
my $option = centreon::plugins::options->new();
|
|
my $output = centreon::plugins::output->new(options => $option);
|
|
|
|
my @tests = (
|
|
{
|
|
json_string => '[ { "datastore": "datastore-14", "name": "Datastore - Systeme", "type": "VMFS", "free_space": 610635087872, "capacity": 799937658880 }]',
|
|
expected_object => [ { 'name' => 'Datastore - Systeme', 'capacity' => '799937658880', 'datastore' => 'datastore-14', 'free_space' => '610635087872', 'type' => 'VMFS' } ],
|
|
booleans_as_strings => 0,
|
|
msg => 'Objects without booleans'
|
|
},
|
|
{
|
|
json_string => '[ { "datastore": "datastore-14", "name": "Datastore - Systeme", "type": "VMFS", "free_space": 610635087872, "capacity": 799937658880 }, { "datastore": "datastore-25", "name": "Datastore - ESX02", "type": "VMFS", "free_space": 340472627200, "capacity": 341986770944 }, { "datastore": "datastore-31", "name": "Datastore - ESX03", "type": "VMFS", "free_space": 340472627200, "capacity": 341986770944 }, { "datastore": "datastore-38", "name": "Datastore - Developpement 15000", "type": "VMFS", "free_space": 5586639912960, "capacity": 7794560335872 }, { "datastore": "datastore-39", "name": "Datastore - Developpement 7200", "type": "VMFS", "free_space": 5422671986688, "capacity": 5516885491712 }, { "datastore": "datastore-40", "name": "Datastore - ESX01", "type": "VMFS", "free_space": 340472627200, "capacity": 341986770944 }, { "datastore": "datastore-45", "name": "Datastore - Developpement", "type": "VMFS", "free_space": 4376304287744, "capacity": 7499818205184 }, { "datastore": "datastore-46", "name": "Datastore - Production", "type": "VMFS", "free_space": 615292862464, "capacity": 1299764477952 }]',
|
|
expected_object => [ { 'name' => 'Datastore - Systeme', 'capacity' => '799937658880', 'datastore' => 'datastore-14', 'free_space' => '610635087872', 'type' => 'VMFS' }, { 'free_space' => '340472627200', 'type' => 'VMFS', 'name' => 'Datastore - ESX02', 'capacity' => '341986770944', 'datastore' => 'datastore-25' }, { 'name' => 'Datastore - ESX03', 'capacity' => '341986770944', 'datastore' => 'datastore-31', 'free_space' => '340472627200', 'type' => 'VMFS' }, { 'free_space' => '5586639912960', 'type' => 'VMFS', 'name' => 'Datastore - Developpement 15000', 'capacity' => '7794560335872', 'datastore' => 'datastore-38' }, { 'capacity' => '5516885491712', 'name' => 'Datastore - Developpement 7200', 'datastore' => 'datastore-39', 'type' => 'VMFS', 'free_space' => '5422671986688' }, { 'capacity' => '341986770944', 'name' => 'Datastore - ESX01', 'datastore' => 'datastore-40', 'type' => 'VMFS', 'free_space' => '340472627200' }, { 'datastore' => 'datastore-45', 'capacity' => '7499818205184', 'name' => 'Datastore - Developpement', 'free_space' => '4376304287744', 'type' => 'VMFS' }, { 'capacity' => '1299764477952', 'name' => 'Datastore - Production', 'datastore' => 'datastore-46', 'free_space' => '615292862464', 'type' => 'VMFS' } ],
|
|
booleans_as_strings => 1,
|
|
msg => 'Objects without booleans'
|
|
},
|
|
{
|
|
json_string => '{ "accessible": false, "multiple_host_access": true, "name": "Datastore - Developpement 7200", "type": "VMFS", "free_space": 5422671986688, "thin_provisioning_supported": true } ',
|
|
expected_object => { 'multiple_host_access' => bless( do{\(my $o = 1)}, 'JSON::PP::Boolean' ), 'thin_provisioning_supported' => bless( do{\(my $o = 1)}, 'JSON::PP::Boolean' ), 'name' => 'Datastore - Developpement 7200', 'free_space' => '5422671986688', 'type' => 'VMFS', 'accessible' => bless( do{\(my $o = 0)}, 'JSON::PP::Boolean' ) },
|
|
booleans_as_strings => 0,
|
|
msg => 'Object with booleans as booleans'
|
|
},
|
|
{
|
|
json_string => '{ "accessible": false, "multiple_host_access": true, "name": "Datastore - Developpement 7200", "type": "VMFS", "free_space": 5422671986688, "thin_provisioning_supported": true } ',
|
|
expected_object => { 'multiple_host_access' => 'true', 'thin_provisioning_supported' => 'true', 'name' => 'Datastore - Developpement 7200', 'free_space' => '5422671986688', 'type' => 'VMFS', 'accessible' => 'false' },
|
|
booleans_as_strings => 1,
|
|
msg => 'Object with booleans as strings'
|
|
},
|
|
{
|
|
json_string => '{ "accessible": false, "multiple_host_access": true, "name": "Trick: true, we\'re still in the string Developpement 7200", "type": "VMFS", "free_space": 5422671986688, "thin_provisioning_supported": true } ',
|
|
expected_object => { 'multiple_host_access' => 'true', 'thin_provisioning_supported' => 'true', 'name' => 'Trick: true, we\'re still in the string Developpement 7200', 'free_space' => '5422671986688', 'type' => 'VMFS', 'accessible' => 'false' },
|
|
booleans_as_strings => 1,
|
|
msg => 'Object with tricky booleans as strings'
|
|
},
|
|
{
|
|
json_string => '{ "accessible": false, "multiple_host_access": true, "name": ": true, we\'re still in the string Developpement 7200", "type": "VMFS", "free_space": 5422671986688, "thin_provisioning_supported": true } ',
|
|
expected_object => { 'multiple_host_access' => 'true', 'thin_provisioning_supported' => 'true', 'name' => ': true, we\'re still in the string Developpement 7200', 'free_space' => '5422671986688', 'type' => 'VMFS', 'accessible' => 'false' },
|
|
booleans_as_strings => 1,
|
|
msg => 'Object with more tricky booleans as strings'
|
|
}
|
|
);
|
|
for my $test (@tests) {
|
|
my ($object, $exit_code) = centreon::plugins::misc::json_decode($test->{json_string}, booleans_as_strings => $test->{booleans_as_strings});
|
|
is($object, $test->{expected_object}, $test->{msg});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
test();
|
|
done_testing();
|
|
|