omercier a7d4d51198
feat(vmware8-esx): add MVP modes (#5482)
Refs:CTOR-430

Co-authored-by: Evan-Adam <152897682+Evan-Adam@users.noreply.github.com>
2025-03-04 11:56:38 +01:00

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();