]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
auth: test-mech - No mechanism is expected to log errors anymore in this test
authorStephan Bosch <stephan.bosch@open-xchange.com>
Sun, 26 Oct 2025 02:34:24 +0000 (03:34 +0100)
committerStephan Bosch <stephan.bosch@open-xchange.com>
Sun, 26 Oct 2025 02:39:49 +0000 (03:39 +0100)
src/auth/test-mech.c

index 1d114f4b698bd09a78f5dd5e4c19e4f0c7f82a63..8339d50931c9a895ec78bf7815f32ffca6c02309 100644 (file)
@@ -22,7 +22,6 @@ struct test_case {
        const unsigned char *in;
        size_t len;
        const char *username;
-       const char *expect_error;
        bool success;
        bool set_username_before_test;
        bool set_cert_username;
@@ -177,104 +176,104 @@ static void test_mechs(void)
 
        static struct test_case tests[] = {
                /* Expected to be successful */
-               {"ANONYMOUS", UCHAR_LEN("\0any \0 bad \0 content"), "anonuser", NULL, TRUE, FALSE, FALSE},
-               {"APOP", NULL, 0, "testuser", NULL, TRUE, FALSE, FALSE},
-               {"CRAM-MD5", UCHAR_LEN("testuser b913a602c7eda7a495b4e6e7334d3890"), "testuser", NULL, TRUE, FALSE, FALSE},
-               {"DIGEST-MD5", UCHAR_LEN("username=\"testuser@example.com\",realm=\"example.com\",nonce=\"OA6MG9tEQGm2hh\",cnonce=\"OA6MHXh6VqTrRk\",nc=00000001,digest-uriresponse=d388dad90d4bbd760a152321f2143af7,qop=\"auth\""), "testuser@example.com", NULL,TRUE, FALSE, FALSE},
-               {"DIGEST-MD5", UCHAR_LEN("username=\"testuser@example.com\",realm=\"example.com\",nonce=\"OA6MG9tEQGm2hh\",cnonce=\"OA6MHXh6VqTrRk\",nc=00000001,digest-uriresponse=d388dad90d4bbd760a152321f2143af7,qop=\"auth\",authzid=\"masteruser\""), "testuser@example.com", NULL, TRUE, FALSE, FALSE},
-               {"DIGEST-MD5", UCHAR_LEN("username=\"test\xc3\xbaser@example.com\",realm=\"example.com\",nonce=\"OA6MG9tEQGm2hh\",cnonce=\"OA6MHXh6VqTrRk\",nc=00000001,digest-uriresponse=d388dad90d4bbd760a152321f2143af7,qop=\"auth\",authzid=\"masteruser\""), "test\xc3\xbaser@example.com", NULL, TRUE, FALSE, FALSE},
-               {"DIGEST-MD5", UCHAR_LEN("username=\"test\xc3\xbaser@example.com\",realm=\"example.com\",nonce=\"OA6MG9tEQGm2hh\",cnonce=\"OA6MHXh6VqTrRk\",charset=\"utf-8\",cipher=unsupported,nc=00000001,digest-uri=imap/server.com,response=d388dad90d4bbd760a152321f2143af7,qop=\"auth\",authzid=\"masteruser\""), "test\xc3\xbaser@example.com", NULL, TRUE, FALSE, FALSE},
-               {"DIGEST-MD5", UCHAR_LEN("username=\"testuser\",realm=\"example.com\",nonce=\"OA6MG9tEQGm2hh\",cnonce=\"OA6MHXh6VqTrRk\",charset=\"utf-8\",cipher=unsupported,nc=00000001,digest-uri=imap/server.com,response=d388dad90d4bbd760a152321f2143af7,qop=\"auth\",authzid=\"masteruser\""), "testuser@example.com", NULL, TRUE, FALSE, FALSE},
-               {"EXTERNAL", UCHAR_LEN(""), "testuser", NULL, TRUE, FALSE, TRUE},
-               {"DOVECOT-TOKEN", NULL, 0, "testuser", NULL, TRUE, FALSE, FALSE},
-               {"LOGIN", UCHAR_LEN("testuser"), "testuser", NULL, TRUE, FALSE, FALSE},
-               {"PLAIN", UCHAR_LEN("\0testuser\0testpass"), "testuser", NULL, TRUE, FALSE, FALSE},
-               {"PLAIN", UCHAR_LEN("normaluser\0masteruser\0masterpass"), "masteruser", NULL, TRUE, FALSE, FALSE},
-               {"PLAIN", UCHAR_LEN("normaluser\0normaluser\0masterpass"), "normaluser", NULL, TRUE, FALSE, FALSE},
-               {"OTP", UCHAR_LEN("hex:5Bf0 75d9 959d 036f"), "otp_phase_2", NULL, TRUE, TRUE, FALSE},
-               {"OTP", UCHAR_LEN("word:BOND FOGY DRAB NE RISE MART"), "otp_phase_2", NULL, TRUE, TRUE, FALSE},
-               {"OTP", UCHAR_LEN("init-hex:f6bd 6b33 89b8 7203:md5 499 ke6118:23d1 b253 5ae0 2b7e"), "otp_phase_2", NULL, TRUE, TRUE, FALSE},
-               {"OTP", UCHAR_LEN("init-word:END KERN BALM NICK EROS WAVY:md5 499 ke1235:BABY FAIN OILY NIL TIDY DADE"), "otp_phase_2", NULL , TRUE, TRUE, FALSE},
-               {"OAUTHBEARER", UCHAR_LEN("n,a=testuser,p=cHJvb2Y=,f=nonstandart\x01host=server\x01port=143\x01""auth=Bearer vF9dft4qmTc2Nvb3RlckBhbHRhdmlzdGEuY29tCg==\x01\x01"), "testuser", NULL, FALSE, TRUE, FALSE},
-               {"SCRAM-SHA-1", UCHAR_LEN("n,,n=testuser,r=rOprNGfwEbeRWgbNEkqO"), "testuser", NULL, TRUE, FALSE, FALSE},
-               {"SCRAM-SHA-256", UCHAR_LEN("n,,n=testuser,r=rOprNGfwEbeRWgbNEkqO"), "testuser",  NULL, TRUE, FALSE, FALSE},
-               {"XOAUTH2", UCHAR_LEN("user=testuser\x01""auth=Bearer vF9dft4qmTc2Nvb3RlckBhdHRhdmlzdGEuY29tCg==\x01\x01"), "testuser", NULL, TRUE, FALSE, FALSE},
+               {"ANONYMOUS", UCHAR_LEN("\0any \0 bad \0 content"), "anonuser", TRUE, FALSE, FALSE},
+               {"APOP", NULL, 0, "testuser", TRUE, FALSE, FALSE},
+               {"CRAM-MD5", UCHAR_LEN("testuser b913a602c7eda7a495b4e6e7334d3890"), "testuser", TRUE, FALSE, FALSE},
+               {"DIGEST-MD5", UCHAR_LEN("username=\"testuser@example.com\",realm=\"example.com\",nonce=\"OA6MG9tEQGm2hh\",cnonce=\"OA6MHXh6VqTrRk\",nc=00000001,digest-uriresponse=d388dad90d4bbd760a152321f2143af7,qop=\"auth\""), "testuser@example.com", TRUE, FALSE, FALSE},
+               {"DIGEST-MD5", UCHAR_LEN("username=\"testuser@example.com\",realm=\"example.com\",nonce=\"OA6MG9tEQGm2hh\",cnonce=\"OA6MHXh6VqTrRk\",nc=00000001,digest-uriresponse=d388dad90d4bbd760a152321f2143af7,qop=\"auth\",authzid=\"masteruser\""), "testuser@example.com", TRUE, FALSE, FALSE},
+               {"DIGEST-MD5", UCHAR_LEN("username=\"test\xc3\xbaser@example.com\",realm=\"example.com\",nonce=\"OA6MG9tEQGm2hh\",cnonce=\"OA6MHXh6VqTrRk\",nc=00000001,digest-uriresponse=d388dad90d4bbd760a152321f2143af7,qop=\"auth\",authzid=\"masteruser\""), "test\xc3\xbaser@example.com", TRUE, FALSE, FALSE},
+               {"DIGEST-MD5", UCHAR_LEN("username=\"test\xc3\xbaser@example.com\",realm=\"example.com\",nonce=\"OA6MG9tEQGm2hh\",cnonce=\"OA6MHXh6VqTrRk\",charset=\"utf-8\",cipher=unsupported,nc=00000001,digest-uri=imap/server.com,response=d388dad90d4bbd760a152321f2143af7,qop=\"auth\",authzid=\"masteruser\""), "test\xc3\xbaser@example.com", TRUE, FALSE, FALSE},
+               {"DIGEST-MD5", UCHAR_LEN("username=\"testuser\",realm=\"example.com\",nonce=\"OA6MG9tEQGm2hh\",cnonce=\"OA6MHXh6VqTrRk\",charset=\"utf-8\",cipher=unsupported,nc=00000001,digest-uri=imap/server.com,response=d388dad90d4bbd760a152321f2143af7,qop=\"auth\",authzid=\"masteruser\""), "testuser@example.com", TRUE, FALSE, FALSE},
+               {"EXTERNAL", UCHAR_LEN(""), "testuser", TRUE, FALSE, TRUE},
+               {"DOVECOT-TOKEN", NULL, 0, "testuser", TRUE, FALSE, FALSE},
+               {"LOGIN", UCHAR_LEN("testuser"), "testuser", TRUE, FALSE, FALSE},
+               {"PLAIN", UCHAR_LEN("\0testuser\0testpass"), "testuser", TRUE, FALSE, FALSE},
+               {"PLAIN", UCHAR_LEN("normaluser\0masteruser\0masterpass"), "masteruser", TRUE, FALSE, FALSE},
+               {"PLAIN", UCHAR_LEN("normaluser\0normaluser\0masterpass"), "normaluser", TRUE, FALSE, FALSE},
+               {"OTP", UCHAR_LEN("hex:5Bf0 75d9 959d 036f"), "otp_phase_2", TRUE, TRUE, FALSE},
+               {"OTP", UCHAR_LEN("word:BOND FOGY DRAB NE RISE MART"), "otp_phase_2", TRUE, TRUE, FALSE},
+               {"OTP", UCHAR_LEN("init-hex:f6bd 6b33 89b8 7203:md5 499 ke6118:23d1 b253 5ae0 2b7e"), "otp_phase_2", TRUE, TRUE, FALSE},
+               {"OTP", UCHAR_LEN("init-word:END KERN BALM NICK EROS WAVY:md5 499 ke1235:BABY FAIN OILY NIL TIDY DADE"), "otp_phase_2", TRUE, TRUE, FALSE},
+               {"OAUTHBEARER", UCHAR_LEN("n,a=testuser,p=cHJvb2Y=,f=nonstandart\x01host=server\x01port=143\x01""auth=Bearer vF9dft4qmTc2Nvb3RlckBhbHRhdmlzdGEuY29tCg==\x01\x01"), "testuser", FALSE, TRUE, FALSE},
+               {"SCRAM-SHA-1", UCHAR_LEN("n,,n=testuser,r=rOprNGfwEbeRWgbNEkqO"), "testuser", TRUE, FALSE, FALSE},
+               {"SCRAM-SHA-256", UCHAR_LEN("n,,n=testuser,r=rOprNGfwEbeRWgbNEkqO"), "testuser",  TRUE, FALSE, FALSE},
+               {"XOAUTH2", UCHAR_LEN("user=testuser\x01""auth=Bearer vF9dft4qmTc2Nvb3RlckBhdHRhdmlzdGEuY29tCg==\x01\x01"), "testuser", TRUE, FALSE, FALSE},
 
                /* Below tests are expected to fail */
                /* Empty input tests*/
-               {"APOP", UCHAR_LEN(""), NULL, NULL, FALSE, FALSE, FALSE},
-               {"CRAM-MD5", UCHAR_LEN(""), NULL, NULL, FALSE, FALSE, FALSE},
-               {"DIGEST-MD5", UCHAR_LEN(""), NULL, NULL, FALSE, FALSE, FALSE},
-               {"DOVECOT-TOKEN", UCHAR_LEN(""), NULL, NULL, FALSE, FALSE, FALSE},
-               {"EXTERNAL", UCHAR_LEN(""), "testuser", NULL, FALSE, TRUE, FALSE},
-               {"EXTERNAL", UCHAR_LEN(""), NULL, NULL, FALSE, FALSE, FALSE},
-               {"LOGIN", UCHAR_LEN(""), NULL, NULL, FALSE, FALSE, FALSE},
-               {"OTP", UCHAR_LEN(""), NULL, NULL, FALSE, FALSE, FALSE},
-               {"OTP", UCHAR_LEN(""), "testuser", NULL, FALSE, FALSE, FALSE},
-               {"PLAIN", UCHAR_LEN(""), NULL, NULL, FALSE, FALSE, FALSE},
-               {"OAUTHBEARER", UCHAR_LEN(""), NULL, NULL, FALSE, FALSE, FALSE},
-               {"XOAUTH2", UCHAR_LEN(""), NULL, NULL, FALSE, FALSE, FALSE},
-               {"SCRAM-SHA-1", UCHAR_LEN(""), NULL, NULL, FALSE, FALSE, FALSE},
-               {"SCRAM-SHA-256", UCHAR_LEN(""), NULL, NULL, FALSE, FALSE, FALSE},
+               {"APOP", UCHAR_LEN(""), NULL, FALSE, FALSE, FALSE},
+               {"CRAM-MD5", UCHAR_LEN(""), NULL, FALSE, FALSE, FALSE},
+               {"DIGEST-MD5", UCHAR_LEN(""), NULL, FALSE, FALSE, FALSE},
+               {"DOVECOT-TOKEN", UCHAR_LEN(""), NULL, FALSE, FALSE, FALSE},
+               {"EXTERNAL", UCHAR_LEN(""), "testuser", FALSE, TRUE, FALSE},
+               {"EXTERNAL", UCHAR_LEN(""), NULL, FALSE, FALSE, FALSE},
+               {"LOGIN", UCHAR_LEN(""), NULL, FALSE, FALSE, FALSE},
+               {"OTP", UCHAR_LEN(""), NULL, FALSE, FALSE, FALSE},
+               {"OTP", UCHAR_LEN(""), "testuser", FALSE, FALSE, FALSE},
+               {"PLAIN", UCHAR_LEN(""), NULL, FALSE, FALSE, FALSE},
+               {"OAUTHBEARER", UCHAR_LEN(""), NULL, FALSE, FALSE, FALSE},
+               {"XOAUTH2", UCHAR_LEN(""), NULL,  FALSE, FALSE, FALSE},
+               {"SCRAM-SHA-1", UCHAR_LEN(""), NULL, FALSE, FALSE, FALSE},
+               {"SCRAM-SHA-256", UCHAR_LEN(""), NULL, FALSE, FALSE, FALSE},
 
                /* Bad input tests*/
-               {"APOP", UCHAR_LEN("1.1.1\0test\0user\0response"), NULL, NULL, FALSE, FALSE, FALSE},
-               {"APOP", UCHAR_LEN("1.1.1\0testuser\0tooshort"), NULL, NULL, FALSE, FALSE, FALSE},
-               {"APOP", UCHAR_LEN("1.1.1\0testuser\0responseoflen16-"), NULL, NULL, FALSE, FALSE, FALSE},
-               {"APOP", UCHAR_LEN("1.1.1"), NULL, NULL, FALSE, FALSE, FALSE},
-               {"OTP", UCHAR_LEN("somebody\0testuser"), "testuser", NULL, FALSE, TRUE, FALSE},
-               {"CRAM-MD5", UCHAR_LEN("testuser\0response"), "testuser", NULL, FALSE, FALSE, FALSE},
-               {"PLAIN", UCHAR_LEN("testuser\0"), "testuser", NULL, FALSE, FALSE, FALSE},
+               {"APOP", UCHAR_LEN("1.1.1\0test\0user\0response"), NULL, FALSE, FALSE, FALSE},
+               {"APOP", UCHAR_LEN("1.1.1\0testuser\0tooshort"), NULL, FALSE, FALSE, FALSE},
+               {"APOP", UCHAR_LEN("1.1.1\0testuser\0responseoflen16-"), NULL, FALSE, FALSE, FALSE},
+               {"APOP", UCHAR_LEN("1.1.1"), NULL, FALSE, FALSE, FALSE},
+               {"OTP", UCHAR_LEN("somebody\0testuser"), "testuser", FALSE, TRUE, FALSE},
+               {"CRAM-MD5", UCHAR_LEN("testuser\0response"), "testuser",  FALSE, FALSE, FALSE},
+               {"PLAIN", UCHAR_LEN("testuser\0"), "testuser", FALSE, FALSE, FALSE},
 
                /* Covering most of the digest md5 parsing */
-               {"DIGEST-MD5", UCHAR_LEN("username=\"testuser@example.com\",realm=\"example.com\",cnonce=\"OA6MHXh6VqTrRk\",response=d388dad90d4bbd760a152321f2143af7,qop=\"auth\""), NULL, NULL, FALSE, FALSE, FALSE},
-               {"DIGEST-MD5", UCHAR_LEN("realm=\"example.com\",cnonce=\"OA6MHXh6VqTrRk\",nonce=\"OA6MG9tEQGm2hh\""), NULL, NULL, FALSE, FALSE, FALSE},
-               {"DIGEST-MD5", UCHAR_LEN("username=\"testuser@example.com\",realm=\"example.com\", nonce=\"OA6MG9tEQGm2hh\""), NULL, NULL, FALSE, FALSE, FALSE},
-               {"DIGEST-MD5", UCHAR_LEN("qop=\"auth-int\""), NULL, NULL, FALSE, FALSE, FALSE},
-               {"DIGEST-MD5", UCHAR_LEN("qop=\"auth-int\""), NULL, NULL, FALSE, FALSE, FALSE},
-               {"DIGEST-MD5", UCHAR_LEN("qop=\"auth-conf\",\"cipher=rc4\""), NULL, NULL, FALSE, FALSE, FALSE},
-               {"DIGEST-MD5", UCHAR_LEN("cnonce=\"OA6MHXh6VqTrRk\",cnonce=\"OA6MHXh6VqTrRk\""), NULL, NULL, FALSE, FALSE, FALSE},
-               {"DIGEST-MD5", UCHAR_LEN("cnonce=\"\""), NULL, NULL, FALSE, FALSE, FALSE},
-               {"DIGEST-MD5", UCHAR_LEN("nonce=\"not matching\""), NULL, NULL, FALSE, FALSE, FALSE},
-               {"DIGEST-MD5", UCHAR_LEN("nc=00000001,nc=00000002"), NULL, NULL, FALSE, FALSE, FALSE},
-               {"DIGEST-MD5", UCHAR_LEN("nc=NAN"), NULL, NULL, FALSE, FALSE, FALSE},
-               {"DIGEST-MD5", UCHAR_LEN("nc=00000002"), NULL, NULL, FALSE, FALSE, FALSE},
-               {"DIGEST-MD5", UCHAR_LEN("cipher=unsupported"), NULL, NULL, FALSE, FALSE, FALSE},
-               {"DIGEST-MD5", UCHAR_LEN("digest-uri="), NULL, NULL, FALSE, FALSE, FALSE},
-               {"DIGEST-MD5", UCHAR_LEN("username=\"\""), NULL, NULL, FALSE, FALSE, FALSE},
-               {"DIGEST-MD5", UCHAR_LEN("username=\"a\",username=\"b\""), NULL, NULL, FALSE, FALSE, FALSE},
-               {"DIGEST-MD5", UCHAR_LEN("response=broken"), NULL, NULL, FALSE, FALSE, FALSE},
-               {"DIGEST-MD5", UCHAR_LEN("maxbuf=32,maxbuf=1024"), NULL, NULL, FALSE, FALSE, FALSE},
-               {"DIGEST-MD5", UCHAR_LEN("maxbuf=broken"), NULL, NULL, FALSE, FALSE, FALSE},
-               {"DIGEST-MD5", UCHAR_LEN("authzid=\"somebody\",authzid=\"else\""), NULL, NULL, FALSE, FALSE, FALSE},
-               {"DIGEST-MD5", UCHAR_LEN("authzid=\"\""), NULL, NULL, FALSE, FALSE, FALSE},
-               {"DIGEST-MD5", UCHAR_LEN("charset=unsupported"), NULL, NULL, FALSE, FALSE, FALSE},
-               {"DIGEST-MD5", UCHAR_LEN("qop=unsupported"), NULL, NULL, FALSE, FALSE, FALSE},
+               {"DIGEST-MD5", UCHAR_LEN("username=\"testuser@example.com\",realm=\"example.com\",cnonce=\"OA6MHXh6VqTrRk\",response=d388dad90d4bbd760a152321f2143af7,qop=\"auth\""), NULL, FALSE, FALSE, FALSE},
+               {"DIGEST-MD5", UCHAR_LEN("realm=\"example.com\",cnonce=\"OA6MHXh6VqTrRk\",nonce=\"OA6MG9tEQGm2hh\""), NULL, FALSE, FALSE, FALSE},
+               {"DIGEST-MD5", UCHAR_LEN("username=\"testuser@example.com\",realm=\"example.com\", nonce=\"OA6MG9tEQGm2hh\""), NULL, FALSE, FALSE, FALSE},
+               {"DIGEST-MD5", UCHAR_LEN("qop=\"auth-int\""), NULL, FALSE, FALSE, FALSE},
+               {"DIGEST-MD5", UCHAR_LEN("qop=\"auth-int\""), NULL, FALSE, FALSE, FALSE},
+               {"DIGEST-MD5", UCHAR_LEN("qop=\"auth-conf\",\"cipher=rc4\""), NULL, FALSE, FALSE, FALSE},
+               {"DIGEST-MD5", UCHAR_LEN("cnonce=\"OA6MHXh6VqTrRk\",cnonce=\"OA6MHXh6VqTrRk\""), NULL, FALSE, FALSE, FALSE},
+               {"DIGEST-MD5", UCHAR_LEN("cnonce=\"\""), NULL, FALSE, FALSE, FALSE},
+               {"DIGEST-MD5", UCHAR_LEN("nonce=\"not matching\""), NULL, FALSE, FALSE, FALSE},
+               {"DIGEST-MD5", UCHAR_LEN("nc=00000001,nc=00000002"), NULL, FALSE, FALSE, FALSE},
+               {"DIGEST-MD5", UCHAR_LEN("nc=NAN"), NULL, FALSE, FALSE, FALSE},
+               {"DIGEST-MD5", UCHAR_LEN("nc=00000002"), NULL, FALSE, FALSE, FALSE},
+               {"DIGEST-MD5", UCHAR_LEN("cipher=unsupported"), NULL, FALSE, FALSE, FALSE},
+               {"DIGEST-MD5", UCHAR_LEN("digest-uri="), NULL, FALSE, FALSE, FALSE},
+               {"DIGEST-MD5", UCHAR_LEN("username=\"\""), NULL, FALSE, FALSE, FALSE},
+               {"DIGEST-MD5", UCHAR_LEN("username=\"a\",username=\"b\""), NULL, FALSE, FALSE, FALSE},
+               {"DIGEST-MD5", UCHAR_LEN("response=broken"), NULL, FALSE, FALSE, FALSE},
+               {"DIGEST-MD5", UCHAR_LEN("maxbuf=32,maxbuf=1024"), NULL, FALSE, FALSE, FALSE},
+               {"DIGEST-MD5", UCHAR_LEN("maxbuf=broken"), NULL, FALSE, FALSE, FALSE},
+               {"DIGEST-MD5", UCHAR_LEN("authzid=\"somebody\",authzid=\"else\""), NULL, FALSE, FALSE, FALSE},
+               {"DIGEST-MD5", UCHAR_LEN("authzid=\"\""), NULL, FALSE, FALSE, FALSE},
+               {"DIGEST-MD5", UCHAR_LEN("charset=unsupported"), NULL, FALSE, FALSE, FALSE},
+               {"DIGEST-MD5", UCHAR_LEN("qop=unsupported"), NULL, FALSE, FALSE, FALSE},
 
                /* Too much nuls */
-               {"DOVECOT-TOKEN", UCHAR_LEN("service\0pid\0fail\0se\0ssion_id\0deadbeef"), NULL , NULL, FALSE, FALSE, FALSE},
-               {"LOGIN", UCHAR_LEN("test user\0user"), NULL, NULL, FALSE, FALSE, FALSE},
-               {"OAUTHBEARER", UCHAR_LEN("n,a==testuser,\x01""auth=Bearer token\x01\x01"), NULL, NULL, FALSE, FALSE, FALSE},
-               {"OAUTHBEARER", UCHAR_LEN("F,n,a=testuser,f=non-standard\x01""auth=Bearer token\x01\x01"), "testuser", NULL, FALSE, FALSE, FALSE},
-               {"OAUTHBEARER", UCHAR_LEN("n,a=testuser,f=non-standard\x01""auth=Bearer token\x01\x01"), "testuser", NULL, FALSE, TRUE, FALSE},
-               {"OAUTHBEARER", UCHAR_LEN("n,a=testuser\x01""auth=token\x01\x01"), "testuser", NULL, FALSE, FALSE, FALSE},
-               {"XOAUTH2", UCHAR_LEN("testuser\x01auth=Bearer token\x01\x01"), NULL, NULL, FALSE, FALSE, FALSE},
+               {"DOVECOT-TOKEN", UCHAR_LEN("service\0pid\0fail\0se\0ssion_id\0deadbeef"), NULL, FALSE, FALSE, FALSE},
+               {"LOGIN", UCHAR_LEN("test user\0user"), NULL, FALSE, FALSE, FALSE},
+               {"OAUTHBEARER", UCHAR_LEN("n,a==testuser,\x01""auth=Bearer token\x01\x01"), NULL, FALSE, FALSE, FALSE},
+               {"OAUTHBEARER", UCHAR_LEN("F,n,a=testuser,f=non-standard\x01""auth=Bearer token\x01\x01"), "testuser", FALSE, FALSE, FALSE},
+               {"OAUTHBEARER", UCHAR_LEN("n,a=testuser,f=non-standard\x01""auth=Bearer token\x01\x01"), "testuser", FALSE, TRUE, FALSE},
+               {"OAUTHBEARER", UCHAR_LEN("n,a=testuser\x01""auth=token\x01\x01"), "testuser", FALSE, FALSE, FALSE},
+               {"XOAUTH2", UCHAR_LEN("testuser\x01auth=Bearer token\x01\x01"), NULL, FALSE, FALSE, FALSE},
                /* does not start with [B|b]earer */
-               {"XOAUTH2", UCHAR_LEN("user=testuser\x01""auth=token\x01\x01"), "testuser", NULL, FALSE, FALSE, FALSE},
+               {"XOAUTH2", UCHAR_LEN("user=testuser\x01""auth=token\x01\x01"), "testuser", FALSE, FALSE, FALSE},
                /* Too much nuls */
-               {"PLAIN", UCHAR_LEN("\0fa\0il\0ing\0withthis"), NULL, NULL, FALSE, FALSE, FALSE},
-               {"PLAIN", UCHAR_LEN("failingwiththis"), NULL, NULL, FALSE, FALSE, FALSE},
-               {"PLAIN", UCHAR_LEN("failing\0withthis"), NULL, NULL, FALSE, FALSE, FALSE},
-               {"OTP", UCHAR_LEN("someb\0ody\0testuser"), NULL, NULL, FALSE, FALSE, FALSE},
+               {"PLAIN", UCHAR_LEN("\0fa\0il\0ing\0withthis"), NULL, FALSE, FALSE, FALSE},
+               {"PLAIN", UCHAR_LEN("failingwiththis"), NULL, FALSE, FALSE, FALSE},
+               {"PLAIN", UCHAR_LEN("failing\0withthis"), NULL, FALSE, FALSE, FALSE},
+               {"OTP", UCHAR_LEN("someb\0ody\0testuser"), NULL, FALSE, FALSE, FALSE},
                /* phase 2 */
-               {"OTP", UCHAR_LEN("someb\0ody\0testuser"), "testuser", NULL, FALSE, TRUE, FALSE},
-               {"SCRAM-SHA-1", UCHAR_LEN("c=biws,r=fyko+d2lbbFgONRv9qkxdawL3rfcNHYJY1ZVvWVs7j,p=v0X8v3Bz2T0CJGbJQyF0X+HI4Ts="), NULL, NULL, FALSE, FALSE, FALSE},
-               {"SCRAM-SHA-1", UCHAR_LEN("iws0X8v3Bz2T0CJGbJQyF0X+HI4Ts=,,,,"), NULL, NULL, FALSE, FALSE, FALSE},
-               {"SCRAM-SHA-1", UCHAR_LEN("n,a=masteruser,,"), NULL, NULL, FALSE, FALSE, FALSE},
-               {"SCRAM-SHA-1", UCHAR_LEN("n,a==masteruser,,"), NULL, NULL, FALSE, FALSE, FALSE},
-               {"SCRAM-SHA-1", UCHAR_LEN("n,,m=testuser,,"), NULL, NULL, FALSE, FALSE, FALSE},
-               {"SCRAM-SHA-1", UCHAR_LEN("broken\0input"), NULL, NULL, FALSE, FALSE, FALSE},
-               {"SCRAM-SHA-256", UCHAR_LEN("broken\0input"), NULL, NULL, FALSE, FALSE, FALSE},
+               {"OTP", UCHAR_LEN("someb\0ody\0testuser"), "testuser", FALSE, TRUE, FALSE},
+               {"SCRAM-SHA-1", UCHAR_LEN("c=biws,r=fyko+d2lbbFgONRv9qkxdawL3rfcNHYJY1ZVvWVs7j,p=v0X8v3Bz2T0CJGbJQyF0X+HI4Ts="), NULL, FALSE, FALSE, FALSE},
+               {"SCRAM-SHA-1", UCHAR_LEN("iws0X8v3Bz2T0CJGbJQyF0X+HI4Ts=,,,,"), NULL, FALSE, FALSE, FALSE},
+               {"SCRAM-SHA-1", UCHAR_LEN("n,a=masteruser,,"), NULL, FALSE, FALSE, FALSE},
+               {"SCRAM-SHA-1", UCHAR_LEN("n,a==masteruser,,"), NULL, FALSE, FALSE, FALSE},
+               {"SCRAM-SHA-1", UCHAR_LEN("n,,m=testuser,,"), NULL, FALSE, FALSE, FALSE},
+               {"SCRAM-SHA-1", UCHAR_LEN("broken\0input"), NULL, FALSE, FALSE, FALSE},
+               {"SCRAM-SHA-256", UCHAR_LEN("broken\0input"), NULL, FALSE, FALSE, FALSE},
        };
 
        test_auth_init();
@@ -308,9 +307,6 @@ static void test_mechs(void)
                        test_case->len = d_token->used;
                }
 
-               if (test_case->expect_error != NULL)
-                       test_expect_error_string(test_case->expect_error);
-
                request->state = AUTH_REQUEST_STATE_NEW;
                unsigned char *input_dup = i_malloc(I_MAX(test_case->len, 1));
                memcpy(input_dup, test_case->in, test_case->len);