Evan-Adam eec431c060
CTOR-1656-move-centreon-plugins-sudoers-to-centreon-plugin-repository (#5598)
Co-authored-by: Kevin Duret <kduret@centreon.com>
2025-07-03 16:27:06 +02:00

97 lines
3.6 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;
# in real world one should use execute(), but as many options are not supported by windows_execute,
# the signature is not coherent, and we want to test everything on this unix_execute()
sub test_unix_execute {
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 = (
{
expect => '"string to" output "$( echo noworking)"',
msg => 'double quote stay when no interpretation',
args => {
command_path => "/bin",
command => 'echo',
command_options => '"string to" output "$( echo noworking)"',
no_shell_interpretation => 1,
}
},
{
expect => 'string to output noworking',
msg => 'double quote diseapear when interpretation is enabled',
args => {
command_path => "/bin",
command => 'echo',
command_options => '"string to" output "$( echo noworking)"',
}
},
{
expect => 'stringToOutput adding',
msg => 'interpretation by default active',
args => {
command => 'echo stringToOutput $(echo adding)',
}
},
{
expect => 'stringToOutput $(echo adding)',
msg => 'interpretation by default active',
args => {
command => 'echo stringToOutput $(echo adding)',
no_shell_interpretation => 1,
}
},
{
expect => '',
msg => "no error when no argument given to command without interpolation",
args => {
command => 'echo',
no_shell_interpretation => 1,
}
}
);
for my $test (@tests) {
my ($stdout, $exit_code) = centreon::plugins::misc::unix_execute(
output => $output,
options => { timeout => 10 },
no_quit => 1,
%{$test->{args}},
);
is($stdout, $test->{expect}, $test->{msg});
}
my ($stdout, $exit_code) = centreon::plugins::misc::unix_execute(
output => $output,
options => { timeout => 10 },
command => 'NoBinary',
command_output => '"string to" output "$( echo noworking)"',
no_shell_interpretation => 1,
no_quit => 1
);
like($stdout, qr/Can't exec "NoBinary": No such file or directory at.*/, 'no_quit option always return');
($stdout, $exit_code) = centreon::plugins::misc::unix_execute(
output => $output,
options => { timeout => 10 },
sudo => 1,
command => 'NoBinary',
command_output => '"string to" output "$( echo noworking)"',
no_shell_interpretation => 1,
no_quit => 1
);
like($stdout, qr/Can't exec "sudo": No such file or directory at.*/, 'sudo option add sudo binary before command');
}
test_unix_execute();
done_testing();