# HG changeset patch # User Maxim Dounin # Date 1621387987 -10800 # Node ID 994d1b58cbe8efdedba043c0b69ae05fc6e00863 # Parent 57ff833158187d9ba3a1e7c848f014eab9afc52b Tests: POP3 pipelining tests. diff --git a/mail_pop3.t b/mail_pop3.t --- a/mail_pop3.t +++ b/mail_pop3.t @@ -12,6 +12,7 @@ use strict; use Test::More; use MIME::Base64; +use Socket qw/ CRLF /; BEGIN { use FindBin; chdir($FindBin::Bin); } @@ -89,7 +90,7 @@ http { EOF $t->run_daemon(\&Test::Nginx::POP3::pop3_test_daemon); -$t->run()->plan(20); +$t->run()->plan(28); $t->waitforsocket('127.0.0.1:' . port(8111)); @@ -193,6 +194,51 @@ is(get_auth_caps($s), 'PLAIN:LOGIN:CRAM- $s->send('AUTH EXTERNAL ' . encode_base64('test@example.com', '')); $s->ok('auth external with username'); +# pipelining + +$s = Test::Nginx::POP3->new(); +$s->read(); + +$s->send('INVALID COMMAND WITH ARGUMENTS' . CRLF + . 'NOOP'); +$s->check(qr/^-ERR/, 'pipelined invalid command'); + +TODO: { +local $TODO = 'not yet' unless $t->has_version('1.21.0'); + +$s->ok('pipelined noop after invalid command'); + +} + +$s->send('USER test@example.com' . CRLF + . 'PASS secret' . CRLF + . 'QUIT'); +$s->ok('pipelined user'); + +TODO: { +local $TODO = 'not yet' unless $t->has_version('1.21.0'); + +$s->ok('pipelined pass'); +$s->ok('pipelined quit'); + +} + +$s = Test::Nginx::POP3->new(); +$s->read(); + +$s->send('AUTH LOGIN' . CRLF + . encode_base64('test@example.com', '') . CRLF + . encode_base64('secret', '')); +$s->check(qr/\+ VXNlcm5hbWU6/, 'pipelined auth username challenge'); + +TODO: { +local $TODO = 'not yet' unless $t->has_version('1.21.0'); + +$s->check(qr/\+ UGFzc3dvcmQ6/, 'pipelined auth password challenge'); +$s->ok('pipelined auth'); + +} + ############################################################################### sub get_auth_caps {