mirror of
https://github.com/centreon/centreon-plugins.git
synced 2025-07-31 01:24:35 +02:00
115 lines
3.1 KiB
Perl
115 lines
3.1 KiB
Perl
use strict;
|
|
use warnings;
|
|
use Test2::V0;
|
|
use FindBin;
|
|
use lib "$FindBin::RealBin/../../../../src";
|
|
use apps::vmware::vsphere8::custom::api;
|
|
|
|
|
|
# Mock options class
|
|
{
|
|
package MockOptions;
|
|
sub new { bless {}, shift }
|
|
sub add_options { }
|
|
sub add_help { }
|
|
}
|
|
|
|
{
|
|
package MockOutput;
|
|
sub new { bless {}, shift }
|
|
sub add_option_msg { }
|
|
sub option_exit { }
|
|
|
|
}
|
|
|
|
sub process_test {
|
|
my ($hostname, $port, $proto, $url_path, $timeout, $username, $password) = @_;
|
|
|
|
# Create mock object
|
|
my $options = MockOptions->new();
|
|
my $output = MockOutput->new();
|
|
|
|
# Add options to the $options hashref
|
|
$options->{hostname} = $hostname;
|
|
$options->{port} = $port;
|
|
$options->{proto} = $proto;
|
|
$options->{timeout} = $timeout;
|
|
$options->{username} = $username;
|
|
$options->{password} = $password;
|
|
|
|
# Test object creation
|
|
my $api;
|
|
eval {
|
|
$api = apps::vmware::vsphere8::custom::api->new(
|
|
options => $options,
|
|
output => $output
|
|
);
|
|
};
|
|
ok(!$@, 'Object creation without errors');
|
|
|
|
# Test if the object is blessed correctly
|
|
is(ref($api), 'apps::vmware::vsphere8::custom::api', 'Object is of correct class');
|
|
|
|
# Test if the object has the expected attributes
|
|
can_ok($api, qw(new set_options check_options));
|
|
|
|
$api->set_options(option_results => $options);
|
|
# Verify that option_results is set correctly
|
|
is($api->{option_results}, $options, 'option_results set correctly');
|
|
|
|
# Test check_options method
|
|
eval { $api->check_options(option_results => $options) };
|
|
ok(!$@, 'check_options method executed without errors');
|
|
|
|
is($api->{hostname}, $hostname, 'hostname set correctly');
|
|
is($api->{port}, defined($port) ? $port : 443, 'port set correctly');
|
|
is($api->{proto}, defined($proto) ? $proto : 'https', 'proto set correctly');
|
|
is($api->{timeout}, defined($timeout) ? $timeout : 10, 'timeout set correctly');
|
|
is($api->{username}, defined($username) ? $username : '', 'username set correctly');
|
|
is($api->{password}, defined($password) ? $password : '', 'password set correctly');
|
|
|
|
}
|
|
|
|
sub main {
|
|
#process_test('localhost', 443, 'https', '/v2', 10, 'user', 'pass');
|
|
process_test('localhost', 3000, 'http', undef, 10, 'login', 'password');
|
|
}
|
|
|
|
main();
|
|
|
|
done_testing();
|
|
|
|
|
|
__END__
|
|
|
|
|
|
|
|
# Test check_options method with missing username
|
|
$option_results = {
|
|
hostname => 'localhost',
|
|
port => 443,
|
|
proto => 'https',
|
|
url_path => '/v2',
|
|
timeout => 10,
|
|
password => 'pass'
|
|
};
|
|
$api->set_options(option_results => $option_results);
|
|
eval { $api->check_options() };
|
|
like($@, qr/Need to specify --username option/, 'Missing username handled correctly');
|
|
|
|
# Test check_options method with missing password
|
|
$option_results = {
|
|
hostname => 'localhost',
|
|
port => 443,
|
|
proto => 'https',
|
|
url_path => '/v2',
|
|
timeout => 10,
|
|
username => 'user'
|
|
};
|
|
$api->set_options(option_results => $option_results);
|
|
eval { $api->check_options() };
|
|
like($@, qr/Need to specify --password option/, 'Missing password handled correctly');
|
|
|
|
|
|
done_testing();
|