Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
More tests plus changes
  • Loading branch information
rakshith91 committed Jul 15, 2019
commit 4531e2ca6b1b7ce2c0c544b15b9b93ea10493723
Original file line number Diff line number Diff line change
Expand Up @@ -511,7 +511,7 @@ async def enqueue_message( # type: ignore
except StorageErrorException as error:
process_storage_error(error)

def receive_messages(self, messages_per_page=None, visibility_timeout=None, timeout=None, **kwargs): # type: ignore
async def receive_messages(self, messages_per_page=None, visibility_timeout=None, timeout=None, **kwargs): # type: ignore
# type: (Optional[int], Optional[int], Optional[int], Optional[Any]) -> QueueMessage
"""Removes one or more messages from the front of the queue.

Expand Down Expand Up @@ -556,7 +556,7 @@ def receive_messages(self, messages_per_page=None, visibility_timeout=None, time
self.key_resolver_function)
try:
command = functools.partial(
self._client.messages.dequeue,
await self._client.messages.dequeue,
visibilitytimeout=visibility_timeout,
timeout=timeout,
cls=self._config.message_decode_policy,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -300,7 +300,7 @@ async def set_service_properties( # type: ignore
except StorageErrorException as error:
process_storage_error(error)

def list_queues(
async def list_queues(
self, name_starts_with=None, # type: Optional[str]
include_metadata=False, # type: Optional[bool]
marker=None, # type: Optional[str]
Expand Down Expand Up @@ -343,15 +343,15 @@ def list_queues(
"""
include = ['metadata'] if include_metadata else None
command = functools.partial(
self._client.service.list_queues_segment,
await self._client.service.list_queues_segment,
prefix=name_starts_with,
include=include,
timeout=timeout,
**kwargs)
return QueuePropertiesPaged(
command, prefix=name_starts_with, results_per_page=results_per_page, marker=marker)

def create_queue(
async def create_queue(
self, name, # type: str
metadata=None, # type: Optional[Dict[str, str]]
timeout=None, # type: Optional[int]
Expand Down Expand Up @@ -381,11 +381,11 @@ def create_queue(
:caption: Create a queue in the service.
"""
queue = self.get_queue_client(name)
queue.create_queue(
await queue.create_queue(
metadata=metadata, timeout=timeout, **kwargs)
return queue

def delete_queue(
async def delete_queue(
self, queue, # type: Union[QueueProperties, str]
timeout=None, # type: Optional[int]
**kwargs
Expand Down Expand Up @@ -418,7 +418,7 @@ def delete_queue(
:caption: Delete a queue in the service.
"""
queue_client = self.get_queue_client(queue)
queue_client.delete_queue(timeout=timeout, **kwargs)
await queue_client.delete_queue(timeout=timeout, **kwargs)

def get_queue_client(self, queue, **kwargs):
# type: (Union[QueueProperties, str], Optional[Any]) -> QueueClient
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,23 +6,28 @@
# license information.
# --------------------------------------------------------------------------
import unittest
import pytest

from azure.core.exceptions import HttpResponseError, DecodeError, ResourceExistsError
from azure.storage.queue import (
QueueClient,
QueueServiceClient,
TextBase64EncodePolicy,
TextBase64DecodePolicy,
BinaryBase64EncodePolicy,
BinaryBase64DecodePolicy,
TextXMLEncodePolicy,
TextXMLDecodePolicy,
NoEncodePolicy,
NoDecodePolicy)
NoDecodePolicy
)

from azure.storage.queue.aio import (
QueueClient,
QueueServiceClient
)

from queuetestcase import (
QueueTestCase,
record,
record
)

# ------------------------------------------------------------------------------
Expand Down Expand Up @@ -56,60 +61,64 @@ def _get_queue_reference(self, prefix=TEST_QUEUE_PREFIX):
self.test_queues.append(queue)
return queue

def _create_queue(self, prefix=TEST_QUEUE_PREFIX):
async def _create_queue(self, prefix=TEST_QUEUE_PREFIX):
queue = self._get_queue_reference(prefix)
try:
created = queue.create_queue()
created = await queue.create_queue()
except ResourceExistsError:
pass
return queue

def _validate_encoding(self, queue, message):
async def _validate_encoding(self, queue, message):
# Arrange
try:
created = queue.create_queue()
created = await queue.create_queue()
except ResourceExistsError:
pass

# Action.
queue.enqueue_message(message)
await queue.enqueue_message(message)

# Asserts
dequeued = next(queue.receive_messages())
dequeued = await next(queue.receive_messages())
self.assertEqual(message, dequeued.content)

# --------------------------------------------------------------------------

@record
def test_message_text_xml(self):
@pytest.mark.asyncio
async def test_message_text_xml(self):
# Arrange.
message = u'<message1>'
queue = self.qsc.get_queue_client(self.get_resource_name(TEST_QUEUE_PREFIX))

# Asserts
self._validate_encoding(queue, message)
await self._validate_encoding(queue, message)

@record
def test_message_text_xml_whitespace(self):
@pytest.mark.asyncio
async def test_message_text_xml_whitespace(self):
# Arrange.
message = u' mess\t age1\n'
queue = self.qsc.get_queue_client(self.get_resource_name(TEST_QUEUE_PREFIX))

# Asserts
self._validate_encoding(queue, message)
await self._validate_encoding(queue, message)

@record
def test_message_text_xml_invalid_chars(self):
@pytest.mark.asyncio
async def test_message_text_xml_invalid_chars(self):
# Action.
queue = self._get_queue_reference()
message = u'\u0001'

# Asserts
with self.assertRaises(HttpResponseError):
queue.enqueue_message(message)
await queue.enqueue_message(message)

@record
def test_message_text_base64(self):
@pytest.mark.asyncio
async def test_message_text_base64(self):
# Arrange.
queue_url = self._get_queue_url()
credentials = self._get_shared_key_credential()
Expand All @@ -123,10 +132,11 @@ def test_message_text_base64(self):
message = u'\u0001'

# Asserts
self._validate_encoding(queue, message)
await self._validate_encoding(queue, message)

@record
def test_message_bytes_base64(self):
@pytest.mark.asyncio
async def test_message_bytes_base64(self):
# Arrange.
queue_url = self._get_queue_url()
credentials = self._get_shared_key_credential()
Expand All @@ -140,23 +150,25 @@ def test_message_bytes_base64(self):
message = b'xyz'

# Asserts
self._validate_encoding(queue, message)
await self._validate_encoding(queue, message)

@record
def test_message_bytes_fails(self):
@pytest.mark.asyncio
async def test_message_bytes_fails(self):
# Arrange
queue = self._get_queue_reference()

# Action.
with self.assertRaises(TypeError) as e:
message = b'xyz'
queue.enqueue_message(message)
await queue.enqueue_message(message)

# Asserts
self.assertTrue(str(e.exception).startswith('Message content must be text'))

@record
def test_message_text_fails(self):
@pytest.mark.asyncio
async def test_message_text_fails(self):
# Arrange
queue_url = self._get_queue_url()
credentials = self._get_shared_key_credential()
Expand All @@ -170,13 +182,14 @@ def test_message_text_fails(self):
# Action.
with self.assertRaises(TypeError) as e:
message = u'xyz'
queue.enqueue_message(message)
await queue.enqueue_message(message)

# Asserts
self.assertTrue(str(e.exception).startswith('Message content must be bytes'))

@record
def test_message_base64_decode_fails(self):
@pytest.mark.asyncio
async def test_message_base64_decode_fails(self):
# Arrange
queue_url = self._get_queue_url()
credentials = self._get_shared_key_credential()
Expand All @@ -187,15 +200,15 @@ def test_message_base64_decode_fails(self):
message_encode_policy=TextXMLEncodePolicy(),
message_decode_policy=BinaryBase64DecodePolicy())
try:
queue.create_queue()
await queue.create_queue()
except ResourceExistsError:
pass
message = u'xyz'
queue.enqueue_message(message)
await queue.enqueue_message(message)

# Action.
with self.assertRaises(DecodeError) as e:
queue.peek_messages()
await queue.peek_messages()

# Asserts
self.assertNotEqual(-1, str(e.exception).find('Message content is not valid base 64'))
Expand Down