@@ -71,6 +71,10 @@ public class ImapClientTests
71
71
ImapCapabilities . ESearch | ImapCapabilities . Compress | ImapCapabilities . Enable | ImapCapabilities . ListExtended |
72
72
ImapCapabilities . ListStatus | ImapCapabilities . Move | ImapCapabilities . UTF8Accept | ImapCapabilities . XList |
73
73
ImapCapabilities . GMailExt1 | ImapCapabilities . LiteralMinus | ImapCapabilities . AppendLimit ;
74
+ static readonly ImapCapabilities IMAP4rev2CoreCapabilities = ImapCapabilities . IMAP4rev2 | ImapCapabilities . Status |
75
+ ImapCapabilities . Namespace | ImapCapabilities . Unselect | ImapCapabilities . UidPlus | ImapCapabilities . ESearch |
76
+ ImapCapabilities . SearchResults | ImapCapabilities . Enable | ImapCapabilities . Idle | ImapCapabilities . SaslIR | ImapCapabilities . ListExtended |
77
+ ImapCapabilities . ListStatus | ImapCapabilities . Move | ImapCapabilities . LiteralMinus | ImapCapabilities . SpecialUse ;
74
78
static readonly ImapCapabilities AclInitialCapabilities = GMailInitialCapabilities | ImapCapabilities . Acl ;
75
79
static readonly ImapCapabilities AclAuthenticatedCapabilities = GMailAuthenticatedCapabilities | ImapCapabilities . Acl ;
76
80
static readonly ImapCapabilities MetadataInitialCapabilities = GMailInitialCapabilities | ImapCapabilities . Metadata ;
@@ -230,6 +234,47 @@ public void TestArgumentExceptions ()
230
234
}
231
235
}
232
236
237
+ static IList < ImapReplayCommand > CreateIMAP4rev2Commands ( )
238
+ {
239
+ return new List < ImapReplayCommand > {
240
+ new ImapReplayCommand ( "" , Encoding . ASCII . GetBytes ( "* OK [CAPABILITY STARTTLS AUTH=SCRAM-SHA-256 LOGINDISABLED IMAP4rev2] IMAP4rev2 Service Ready\r \n " ) ) ,
241
+ } ;
242
+ }
243
+
244
+ [ Test ]
245
+ public void TestIMAP4rev2 ( )
246
+ {
247
+ var commands = CreateIMAP4rev2Commands ( ) ;
248
+
249
+ using ( var client = new ImapClient ( ) { TagPrefix = 'A' } ) {
250
+ try {
251
+ client . Connect ( new ImapReplayStream ( commands , false ) , "localhost" , 143 , SecureSocketOptions . None ) ;
252
+ } catch ( Exception ex ) {
253
+ Assert . Fail ( "Did not expect an exception in Connect: {0}" , ex ) ;
254
+ }
255
+
256
+ Assert . AreEqual ( IMAP4rev2CoreCapabilities | ImapCapabilities . StartTLS | ImapCapabilities . LoginDisabled , client . Capabilities , "Capabilities" ) ;
257
+ Assert . IsTrue ( client . AuthenticationMechanisms . Contains ( "SCRAM-SHA-256" ) , "AUTH=SCRAM-SHA-256" ) ;
258
+ }
259
+ }
260
+
261
+ [ Test ]
262
+ public async Task TestIMAP4rev2Async ( )
263
+ {
264
+ var commands = CreateIMAP4rev2Commands ( ) ;
265
+
266
+ using ( var client = new ImapClient ( ) { TagPrefix = 'A' } ) {
267
+ try {
268
+ await client . ConnectAsync ( new ImapReplayStream ( commands , true ) , "localhost" , 143 , SecureSocketOptions . None ) ;
269
+ } catch ( Exception ex ) {
270
+ Assert . Fail ( "Did not expect an exception in Connect: {0}" , ex ) ;
271
+ }
272
+
273
+ Assert . AreEqual ( IMAP4rev2CoreCapabilities | ImapCapabilities . StartTLS | ImapCapabilities . LoginDisabled , client . Capabilities , "Capabilities" ) ;
274
+ Assert . IsTrue ( client . AuthenticationMechanisms . Contains ( "SCRAM-SHA-256" ) , "AUTH=SCRAM-SHA-256" ) ;
275
+ }
276
+ }
277
+
233
278
[ Test ]
234
279
public void TestEscapeUserName ( )
235
280
{
0 commit comments