The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl 
use strict;
use warnings;
use Test::More tests => 4;
use FindBin qw($Bin);
use lib "$Bin/../lib";
use lib "$Bin/lib";


use Net::SSH::Mechanize;
use MyTest::Mock::ConnectParams;

my $connection = MyTest::Mock::ConnectParams->detect;    
my $timeout = 10;

note "using command:";
note "    ", join " ", $connection->ssh_cmd;

my $ssh = Net::SSH::Mechanize->new(
    connection_params => $connection,
    login_timeout => $timeout,
);


my $session = $ssh->login;

is $session->login_timeout, $timeout, "timeout set ok";

my @exchanges = (
    [q(id),
     qr/uid=\d+\(\S+\) gid=\d+\(\S+\)/],
    [q(printf "stdout output\n"; printf >&2 "stderr output\n" ),
     qr/\Astdout output\n\z/],
    [q(printf "eoled\nnot eoled"),
     qr/\Aeoled\nnot eoled\z/sm],
);

foreach my $exchange (@exchanges) {
    my ($cmd, $expect) = @$exchange;

    my $data = $session->sudo_capture($cmd);

    like $data, $expect, "$cmd: got expected data"
}

$session->logout;