about summary refs log tree commit homepage
path: root/t
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2019-06-30 04:27:55 +0000
committerEric Wong <e@80x24.org>2019-06-30 22:33:17 +0000
commit5769d488526b88a394b4b6741e77dd0e7441d248 (patch)
tree0c3df04121a6d5876976a672a37d7acb74415378 /t
parent38ba41513ee4c42414fbfadb6e6d2bf281fbedfd (diff)
downloadpublic-inbox-5769d488526b88a394b4b6741e77dd0e7441d248.tar.gz
Some clients may rely on this for STARTTLS support.
Diffstat (limited to 't')
-rw-r--r--t/nntpd-tls.t18
-rw-r--r--t/nntpd.t5
2 files changed, 23 insertions, 0 deletions
diff --git a/t/nntpd-tls.t b/t/nntpd-tls.t
index 82b63f3e..4cf53daa 100644
--- a/t/nntpd-tls.t
+++ b/t/nntpd-tls.t
@@ -128,6 +128,8 @@ for my $args (
         my $c = Net::NNTP->new($nntps_addr, %o, SSL => 1);
         my $list = $c->list;
         is_deeply($list, $expect, 'NNTPS LIST works');
+        unlike(get_capa($c), qr/\bSTARTTLS\r\n/,
+                'STARTTLS not advertised for NNTPS');
         is($c->command('QUIT')->response(), Net::Cmd::CMD_OK(), 'QUIT works');
         is(0, sysread($c, my $buf, 1), 'got EOF after QUIT');
 
@@ -139,6 +141,8 @@ for my $args (
         is($c->code, 382, 'got 382 for STARTTLS');
         $list = $c->list;
         is_deeply($list, $expect, 'LIST works after STARTTLS');
+        unlike(get_capa($c), qr/\bSTARTTLS\r\n/,
+                'STARTTLS not advertised after STARTTLS');
 
         # Net::NNTP won't let us do dumb things, but we need to test
         # dumb things, so use Net::Cmd directly:
@@ -149,6 +153,7 @@ for my $args (
         # STARTTLS with bad hostname
         $o{SSL_hostname} = $o{SSL_verifycn_name} = 'server.invalid';
         $c = Net::NNTP->new($starttls_addr, %o);
+        like(get_capa($c), qr/\bSTARTTLS\r\n/, 'STARTTLS advertised');
         $list = $c->list;
         is_deeply($list, $expect, 'plain LIST works again');
         ok(!$c->starttls, 'STARTTLS fails with bad hostname');
@@ -217,4 +222,17 @@ for my $args (
         }
 }
 done_testing();
+
+sub get_capa {
+        my ($sock) = @_;
+        syswrite($sock, "CAPABILITIES\r\n");
+        my $capa = '';
+        do {
+                my $r = sysread($sock, $capa, 8192, length($capa));
+                die "unexpected: $!" unless defined($r);
+                die 'unexpected EOF' if $r == 0;
+        } until $capa =~ /\.\r\n\z/;
+        $capa;
+}
+
 1;
diff --git a/t/nntpd.t b/t/nntpd.t
index 0e59de07..1c5ae8d7 100644
--- a/t/nntpd.t
+++ b/t/nntpd.t
@@ -143,6 +143,11 @@ EOF
                 'got greeting');
         $s->autoflush(1);
 
+        syswrite($s, "CAPABILITIES\r\n");
+        $buf = read_til_dot($s);
+        like($buf, qr/\r\nVERSION 2\r\n/s, 'CAPABILITIES works');
+        unlike($buf, qr/STARTTLS/s, 'STARTTLS not advertised');
+
         syswrite($s, "NEWGROUPS 19990424 000000 GMT\r\n");
         $buf = read_til_dot($s);
         like($buf, qr/\A231 list of /, 'newgroups OK');