Allow deleting of SQS invisible messages. Closes #352.

This commit is contained in:
Steve Pulec 2015-05-29 23:26:43 -04:00
parent 6b44e41249
commit 0195e04053
2 changed files with 23 additions and 2 deletions

View File

@ -259,7 +259,7 @@ class SQSBackend(BaseBackend):
for message in queue._messages:
# Only delete message if it is not visible and the reciept_handle
# matches.
if not message.visible and message.receipt_handle == receipt_handle:
if message.receipt_handle == receipt_handle:
continue
new_messages.append(message)
queue._messages = new_messages

View File

@ -1,7 +1,7 @@
from __future__ import unicode_literals
import boto
from boto.exception import SQSError
from boto.sqs.message import RawMessage
from boto.sqs.message import RawMessage, Message
import requests
import sure # noqa
@ -441,3 +441,24 @@ def test_purge_action():
queue.purge()
queue.count().should.equal(0)
@mock_sqs
def test_delete_message_after_visibility_timeout():
VISIBILITY_TIMEOUT = 1
conn = boto.sqs.connect_to_region("us-east-1")
new_queue = conn.create_queue('new-queue', visibility_timeout=VISIBILITY_TIMEOUT)
m1 = Message()
m1.set_body('Message 1!')
new_queue.write(m1)
assert new_queue.count() == 1
m1_retrieved = new_queue.read()
time.sleep(VISIBILITY_TIMEOUT + 1)
m1_retrieved.delete()
assert new_queue.count() == 0