@@ -1016,7 +1016,7 @@ def test_id
10161016 end
10171017 end
10181018
1019- def test_uidplus_uid_expunge
1019+ test "#uid_expunge with EXPUNGE responses" do
10201020 with_fake_server ( select : "INBOX" ,
10211021 extensions : %i[ UIDPLUS ] ) do |server , imap |
10221022 server . on "UID EXPUNGE" do |resp |
@@ -1032,6 +1032,24 @@ def test_uidplus_uid_expunge
10321032 end
10331033 end
10341034
1035+ test "#uid_expunge with VANISHED response" do
1036+ with_fake_server ( select : "INBOX" ,
1037+ extensions : %i[ UIDPLUS ] ) do |server , imap |
1038+ server . on "UID EXPUNGE" do |resp |
1039+ resp . untagged ( "VANISHED 1001,1003" )
1040+ resp . done_ok
1041+ end
1042+ response = imap . uid_expunge ( 1000 ..1003 )
1043+ cmd = server . commands . pop
1044+ assert_equal [ "UID EXPUNGE" , "1000:1003" ] , [ cmd . name , cmd . args ]
1045+ assert_equal (
1046+ Net ::IMAP ::VanishedData [ uids : [ 1001 , 1003 ] , earlier : false ] ,
1047+ response
1048+ )
1049+ assert_equal ( [ ] , imap . clear_responses ( "VANISHED" ) )
1050+ end
1051+ end
1052+
10351053 def test_uidplus_appenduid
10361054 with_fake_server ( select : "INBOX" ,
10371055 extensions : %i[ UIDPLUS ] ) do |server , imap |
@@ -1168,6 +1186,65 @@ def test_enable
11681186 end
11691187 end
11701188
1189+ test "#expunge with EXPUNGE responses" do
1190+ with_fake_server ( select : "INBOX" ) do |server , imap |
1191+ server . on "EXPUNGE" do |resp |
1192+ resp . untagged ( "1 EXPUNGE" )
1193+ resp . untagged ( "1 EXPUNGE" )
1194+ resp . untagged ( "99 EXPUNGE" )
1195+ resp . done_ok
1196+ end
1197+ response = imap . expunge
1198+ cmd = server . commands . pop
1199+ assert_equal [ "EXPUNGE" , nil ] , [ cmd . name , cmd . args ]
1200+ assert_equal [ 1 , 1 , 99 ] , response
1201+ assert_equal [ ] , imap . clear_responses ( "EXPUNGED" )
1202+ end
1203+ end
1204+
1205+ test "#expunge with a VANISHED response" do
1206+ with_fake_server ( select : "INBOX" ) do |server , imap |
1207+ server . on "EXPUNGE" do |resp |
1208+ resp . untagged ( "VANISHED 15:456" )
1209+ resp . done_ok
1210+ end
1211+ response = imap . expunge
1212+ cmd = server . commands . pop
1213+ assert_equal [ "EXPUNGE" , nil ] , [ cmd . name , cmd . args ]
1214+ assert_equal (
1215+ Net ::IMAP ::VanishedData [ uids : [ 15 ..456 ] , earlier : false ] ,
1216+ response
1217+ )
1218+ assert_equal ( [ ] , imap . clear_responses ( "VANISHED" ) )
1219+ end
1220+ end
1221+
1222+ test "#expunge with multiple VANISHED responses" do
1223+ with_fake_server ( select : "INBOX" ) do |server , imap |
1224+ server . unsolicited ( "VANISHED 86" )
1225+ server . on "EXPUNGE" do |resp |
1226+ resp . untagged ( "VANISHED (EARLIER) 1:5,99,123" )
1227+ resp . untagged ( "VANISHED 15,456" )
1228+ resp . untagged ( "VANISHED (EARLIER) 987,1001" )
1229+ resp . done_ok
1230+ end
1231+ response = imap . expunge
1232+ cmd = server . commands . pop
1233+ assert_equal [ "EXPUNGE" , nil ] , [ cmd . name , cmd . args ]
1234+ assert_equal (
1235+ Net ::IMAP ::VanishedData [ uids : [ 15 , 86 , 456 ] , earlier : false ] ,
1236+ response
1237+ )
1238+ assert_equal (
1239+ [
1240+ Net ::IMAP ::VanishedData [ uids : [ 1 ..5 , 99 , 123 ] , earlier : true ] ,
1241+ Net ::IMAP ::VanishedData [ uids : [ 987 , 1001 ] , earlier : true ] ,
1242+ ] ,
1243+ imap . clear_responses ( "VANISHED" )
1244+ )
1245+ end
1246+ end
1247+
11711248 def test_close
11721249 with_fake_server ( select : "inbox" ) do |server , imap |
11731250 resp = imap . close
0 commit comments