The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use lib 't/lib';
use strict;
use warnings;

use Net::IMAP::Server::Test;
my $t = "Net::IMAP::Server::Test";

$t->start_server_ok;

# Invalid over SSL
$t->connect_ok;
$t->cmd_like("STARTTLS" => "tag NO STARTTLS is disabled");
$t->cmd_ok("LOGOUT");

# Connect over TCP
$t->connect_ok( "Non-SSL connection OK",
    Class => "IO::Socket::INET",
    PeerPort => $t->PORT,
);

$t->cmd_like("STARTTLS" => "tag OK");
$t->start_tls_ok;

# Check that you can't STARTTLS twice
$t->cmd_like("STARTTLS" => "tag NO STARTTLS is disabled");

# Check that it fails after auth
$t->cmd_ok("LOGIN username password");
$t->cmd_like("STARTTLS" => "tag BAD Already logged in");

done_testing;