Skip to content

Commit 19592c0

Browse files
kimromijeremy
authored andcommitted
IMAP: fix delete_all against a readonly connection
Closes #1206
1 parent 1a8a477 commit 19592c0

File tree

4 files changed

+7
-1
lines changed

4 files changed

+7
-1
lines changed

CHANGELOG.rdoc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ Bugs:
1414
* Fix transfer encoding when message encoding is blank. (jakubonty, saks)
1515
* Fix 7bit/base64 content transfer encoding mismatch. (ahorek)
1616
* Fix UTF-8 attachment filename quoting. (ahorek)
17+
* Fix `delete_all` using a readonly IMAP connection. (kimromi)
1718

1819

1920
== Version 2.7.0 (2017-10-31)

lib/mail/network/retriever_methods/imap.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ def delete_all(mailbox='INBOX')
121121
mailbox = Net::IMAP.encode_utf7(mailbox)
122122

123123
start do |imap|
124-
imap.examine(mailbox)
124+
imap.select(mailbox)
125125
imap.uid_search(['ALL']).each do |uid|
126126
imap.uid_store(uid, "+FLAGS", [Net::IMAP::DELETED])
127127
end

spec/mail/network/retriever_methods/imap_spec.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,7 @@
190190
expect(Net::IMAP).to receive(:encode_utf7).once
191191
Mail.delete_all
192192

193+
expect(MockIMAP.readonly?).to be_falsey
193194
expect(MockIMAP.examples.size).to eq 0
194195
end
195196
end

spec/spec_helper.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -241,6 +241,7 @@ def initialize(rfc822, number, flag)
241241
class MockIMAP
242242
@@connection = false
243243
@@mailbox = nil
244+
@@readonly = false
244245
@@marked_for_deletion = []
245246
@@default_examples = {
246247
:default => (0..19).map do |i|
@@ -270,10 +271,12 @@ def disconnect
270271

271272
def select(mailbox)
272273
@@mailbox = mailbox
274+
@@readonly = false
273275
end
274276

275277
def examine(mailbox)
276278
select(mailbox)
279+
@@readonly = true
277280
end
278281

279282
def uid_search(keys, charset = nil)
@@ -298,6 +301,7 @@ def expunge
298301
end
299302

300303
def self.mailbox; @@mailbox end # test only
304+
def self.readonly?; @@readonly end # test only
301305

302306
def self.disconnected?; @@connection == false end
303307
def disconnected?; @@connection == false end

0 commit comments

Comments
 (0)