Azure Storage Queue
Create and Manage Azure Storage Queues and Messages.
IT Services · Azure Storage Queue
Details
| ID | Azure Storage Queue |
|---|---|
| Provider | Microsoft |
| Category | IT Services |
| From Version | 6.0.0 |
| Docker Image | demisto/python3:3.12.13.10116658 |
| Supported Modules | Agentix XSIAM |
README
Azure Storage Queue
Create and Manage Azure Storage Queues and Messages.
This integration was integrated and tested with version “2020-10-02” of Azure Storage Queue
Configure Azure Storage Queue in Cortex
| Parameter | Description | Required |
|---|---|---|
| Storage account name | True | |
| Account SAS Token | False | |
| Use Azure Managed Identities | Relevant only if the integration is running on Azure VM. If selected, authenticates based on the value provided for the Azure Managed Identities Client ID field. If no value is provided for the Azure Managed Identities Client ID field, authenticates based on the System Assigned Managed Identity. For additional information, see the Help tab. | False |
| Azure Managed Identities Client ID | The Managed Identities client ID for authentication - relevant only if the integration is running on Azure VM. | False |
| Use system proxy settings | False | |
| Trust any certificate (not secure) | False | |
| Maximum incidents for one fetch. | Default is 10. Maximum is 32 (due to an API limit). | False |
| Queue name | The name of the queue from which the messages will be retrieved. | False |
| Incident type | False | |
| Fetch incidents | False |
Shared Access Signatures (SAS) Permissions
In order to use the integration use-cases,
please make sure your SAS token contains the following permissions:
- ‘Queue’ service.
- ‘Service’ and ‘Object’ resource types.
- ‘Read’, ‘Write’, ‘Delete’, ‘List’, ‘Create’, ‘Add’, ‘Update’, ‘Process’ and ‘Immutable storage’ permissions.
Commands
You can execute these commands from the CLI, as part of an automation, or in a playbook.
After you successfully execute a command, a DBot message appears in the War Room with the command details.
azure-storage-queue-list
List queues in storage account.
Base Command
azure-storage-queue-list
Input
| Argument Name | Description | Required |
|---|---|---|
| limit | Number of queues to retrieve. Default is 50. Default is 50. | Optional |
| prefix | Filters the results to return only queues with names that begin with the specified prefix. | Optional |
| page | Page number. Default is 1. Default is 1. | Optional |
Context Output
| Path | Type | Description |
|---|---|---|
| AzureStorageQueue.Queue.name | String | Queue name. |
Command Example
!azure-storage-queue-list limit="2" prefix="xs"
Context Example
{
"AzureStorageQueue": {
"Queue": [
{
"name": "xsoar-new-test"
},
{
"name": "xsoar-test"
}
]
}
}
Human Readable Output
Queues List
Current page size: 2
Showing page 1 out others that may exist
Name xsoar-new-test xsoar-test
azure-storage-queue-create
Create new queue in storage account.
Base Command
azure-storage-queue-create
Input
| Argument Name | Description | Required |
|---|---|---|
| queue_name | The name of the Queue to create. Rules for naming queues can be found here: https://docs.microsoft.com/en-us/rest/api/storageservices/naming-queues-and-metadata. | Required |
Context Output
There is no context output for this command.
Command Example
!azure-storage-queue-create queue_name="xsoar-test"
Human Readable Output
Queue xsoar-test successfully created.
azure-storage-queue-delete
Delete queue from storage account.
Base Command
azure-storage-queue-delete
Input
| Argument Name | Description | Required |
|---|---|---|
| queue_name | The name of the Queue to delete. | Required |
Context Output
There is no context output for this command.
Command Example
!azure-storage-queue-delete queue_name="xsoar-test"
Human Readable Output
Queue xsoar-test successfully deleted.
azure-storage-queue-message-create
Add a new message to the back of the queue.
Base Command
azure-storage-queue-message-create
Input
| Argument Name | Description | Required |
|---|---|---|
| message_content | The text content of the new message. | Required |
| queue_name | The name of the Queue. | Required |
| base64_encoding | Indicates whether the message should be encoded or not. Default is ‘False’. Possible values are: False, True. Default is False. | Optional |
| visibility_time_out | Specifies the new visibility timeout value, in seconds, relative to server time. Must be larger than or equal to 0, and cannot be larger than 7 days. The visibility timeout of a message cannot be set to a value later than the expiry time. Default is 0. |
Optional |
| expiration | Specifies the time-to-live (expiration) interval for the message, in seconds. the maximum time-to-live can be any positive number, as well as -1 indicating that the message does not expire. Default expiration time is 7 days. |
Optional |
Context Output
| Path | Type | Description |
|---|---|---|
| AzureStorageQueue.Queue.Message.MessageId | String | Message ID. |
| AzureStorageQueue.Queue.Message.InsertionTime | Date | Message insertion time. |
| AzureStorageQueue.Queue.Message.ExpirationTime | Date | Message expiration time. |
| AzureStorageQueue.Queue.Message.PopReceipt | String | Message pop receipt value. This value changes each time the message is retrieved or updated and used to ensure that message has not been dequeued by another user before deleting or updating the message. |
| AzureStorageQueue.Queue.Message.TimeNextVisible | Date | Message next visible time. |
| AzureStorageQueue.Queue.name | String | Queue name. |
Command Example
!azure-storage-queue-message-create message_content="test demo" queue_name="xsoar-test" base64_encoding="True"
Context Example
{
"AzureStorageQueue": {
"Queue": {
"Message": {
"ExpirationTime": "2021-12-05T11:55:31",
"InsertionTime": "2021-11-28T11:55:31",
"MessageId": "0d579602-222f-4256-9003-8772f0d65399",
"PopReceipt": "AgAAAAMAAAAAAAAAN734107k1wE=",
"TimeNextVisible": "2021-11-28T11:55:31"
},
"name": "xsoar-test"
}
}
}
Human Readable Output
xsoar-test Queue message
Message Id Expiration Time Insertion Time Time Next Visible Pop Receipt 0d579602-222f-4256-9003-8772f0d65399 2021-12-05T11:55:31 2021-11-28T11:55:31 2021-11-28T11:55:31 AgAAAAMAAAAAAAAAN734107k1wE=
azure-storage-queue-message-get
Retrieves messages from the front of the queue. Retrieved messages will move to the end of the queue,and will be visible after ‘TimeNextVisible’ param.
Base Command
azure-storage-queue-message-get
Input
| Argument Name | Description | Required |
|---|---|---|
| limit | Number of messages to retrieve. Default is 1, maximum is 32. Default is 1. | Optional |
| queue_name | The name of the Queue. | Required |
| visibility_time_out | Specifies the new visibility timeout value, in seconds, relative to server time. The default value is 30 seconds. A specified value must be larger than or equal to 1. |
Optional |
Context Output
| Path | Type | Description |
|---|---|---|
| AzureStorageQueue.Queue.Message.MessageId | String | Message ID. |
| AzureStorageQueue.Queue.Message.InsertionTime | Date | Message insertion time. |
| AzureStorageQueue.Queue.Message.ExpirationTime | Date | Message expiration time. |
| AzureStorageQueue.Queue.Message.PopReceipt | String | Message pop receipt value. This value changes each time the message is retrieved or updated and used to ensure that message has not been dequeued by another user before deleting or updating the message. |
| AzureStorageQueue.Queue.Message.TimeNextVisible | Date | Message next visible time. |
| AzureStorageQueue.Queue.Message.MessageText | String | Message text content. |
| AzureStorageQueue.Queue.name | String | Queue name. |
| AzureStorageQueue.Queue.Message.DequeueCount | Number | Indicates how many times a message has been retrieved. |
Command Example
!azure-storage-queue-message-get limit="1" queue_name="xsoar-test"
Context Example
{
"AzureStorageQueue": {
"Queue": {
"Message": [
{
"DequeueCount": "1",
"ExpirationTime": "2021-12-05T11:55:31",
"InsertionTime": "2021-11-28T11:55:31",
"MessageId": "0d579602-222f-4256-9003-8772f0d65399",
"MessageText": "test demo",
"PopReceipt": "AgAAAAMAAAAAAAAAziUx7U7k1wE=",
"TimeNextVisible": "2021-11-28T11:56:06"
}
],
"name": "xsoar-test"
}
}
}
Human Readable Output
xsoar-test Queue messages
Message Text Message Id Pop Receipt Dequeue Count Expiration Time Insertion Time Time Next Visible test demo 0d579602-222f-4256-9003-8772f0d65399 AgAAAAMAAAAAAAAAziUx7U7k1wE= 1 2021-12-05T11:55:31 2021-11-28T11:55:31 2021-11-28T11:56:06
azure-storage-queue-message-peek
Retrieves messages from the front of the queue. The command does not alter the visibility of the message.
Base Command
azure-storage-queue-message-peek
Input
| Argument Name | Description | Required |
|---|---|---|
| limit | Number of messages to retrieve. Default is 1, maximum is 32. Default is 1. | Optional |
| queue_name | The name of the Queue. | Required |
Context Output
| Path | Type | Description |
|---|---|---|
| AzureStorageQueue.Queue.Message.MessageId | String | Message ID. |
| AzureStorageQueue.Queue.Message.InsertionTime | Date | Message insertion time. |
| AzureStorageQueue.Queue.Message.ExpirationTime | Date | Message expiration time. |
| AzureStorageQueue.Queue.Message.MessageText | String | Message text content. |
| AzureStorageQueue.Queue.name | String | Queue name. |
| AzureStorageQueue.Queue.Message.DequeueCount | Number | Indicates how many times a message has been retrieved. |
Command Example
!azure-storage-queue-message-peek limit="1" queue_name="xsoar-test"
Context Example
{
"AzureStorageQueue": {
"Queue": {
"Message": [],
"name": "xsoar-test"
}
}
}
Human Readable Output
xsoar-test Queue messages
No entries.
azure-storage-queue-message-dequeue
Dequeue a message from the front of the queue.
Base Command
azure-storage-queue-message-dequeue
Input
| Argument Name | Description | Required |
|---|---|---|
| queue_name | The name of the Queue. | Required |
Context Output
There is no context output for this command.
Command Example
!azure-storage-queue-message-dequeue queue_name="xsoar-test"
Human Readable Output
There are no messages in xsoar-test queue.
azure-storage-queue-message-update
Update message content in the queue.
Base Command
azure-storage-queue-message-update
Input
| Argument Name | Description | Required |
|---|---|---|
| queue_name | The name of the Queue. | Required |
| message_content | New message content. | Required |
| message_id | The ID of the message to update. | Required |
| pop_receipt | Message PopReceipt parameter. This value changes each time the message is retrieved or updated and used to ensure that message has not been dequeued by another user before deleting or updating the message. | Required |
| base64_encoding | Indicates whether the message content should be encoded or not. Default is ‘False’. Possible values are: False, True. Default is False. | Optional |
| visibility_time_out | Specifies the new visibility timeout value of the message. The new value must be larger than or equal to 0, and cannot be larger than 7 days. The visibility timeout of a message cannot be set to a value later than the expiry time. Default is 0. Possible values are: . Default is 0. | Optional |
Context Output
There is no context output for this command.
Command Example
!azure-storage-queue-message-update queue_name="test-xsoar" message_content="new content" message_id="ea0db196-dad3-4c12-b845-dc6223739870" pop_receipt="AgAAAAMAAAAAAAAA0xNSmE7k1wE="
Human Readable Output
The message in test-xsoar successfully updated.
azure-storage-queue-message-delete
Delete message from a Queue.
Base Command
azure-storage-queue-message-delete
Input
| Argument Name | Description | Required |
|---|---|---|
| message_id | The ID of the message to delete. | Required |
| pop_receipt | Message PopReceipt parameter. This value changes each time the message is retrieved or updated and used to ensure that message has not been dequeued by another user before deleting or updating the message. | Required |
| queue_name | The name of the Queue. | Required |
Context Output
There is no context output for this command.
Command Example
!azure-storage-queue-message-delete queue_name="test-xsoar" message_id="66df94e9-4a66-428a-9c4a-e2a3c4fe7284" pop_receipt="AgAAAAMAAAAAAAAA0xNSmE7k1wE="
Human Readable Output
Message in test-xsoar successfully deleted.
azure-storage-queue-message-clear
Delete all messages from the specified Queue.
Base Command
azure-storage-queue-message-clear
Input
| Argument Name | Description | Required |
|---|---|---|
| queue_name | The name of the queue. | Required |
Context Output
There is no context output for this command.
Command Example
!azure-storage-queue-message-clear queue_name="xsoar-test"
Human Readable Output
xsoar-test was cleared of messages successfully.
Configuration parameters
credentials— Storage account nameuse_managed_identities— Use Azure Managed Identitiesmanaged_identities_client_id—proxy— Use system proxy settingsinsecure— Trust any certificate (not secure)max_fetch— Maximum incidents for one fetch.queue_name— Queue nameincidentType— Incident typeincidentFetchInterval— Incidents Fetch IntervalisFetch— Fetch incidents
Commands (10)
-
azure-storage-queue-createCreate new queue in storage account.
-
azure-storage-queue-deleteDelete queue from storage account.
-
azure-storage-queue-listList queues in storage account.
-
azure-storage-queue-message-clearDelete all messages from the specified Queue.
-
azure-storage-queue-message-createAdd a new message to the back of the queue.
-
azure-storage-queue-message-deleteDelete message from a Queue.
-
azure-storage-queue-message-dequeueDequeue a message from the front of the queue.
-
azure-storage-queue-message-getRetrieves messages from the front of the queue. Retrieved messages will move to the end of the queue,and will be visible after 'TimeNextVisible' param.
-
azure-storage-queue-message-peekRetrieves messages from the front of the queue. The command does not alter the visibility of the message.
-
azure-storage-queue-message-updateUpdate message content in the queue.
import defusedxml.ElementTree as defused_ET import pytest from CommonServerPython import * ACCOUNT_NAME = "test" BASE_URL = f"https://{ACCOUNT_NAME}.queue.core.windows.net" SAS_TOKEN = "XXXX" API_VERSION = "2020-10-02" def load_xml_mock_response(file_name: str) -> str: """ Load one of the mock responses to be used for assertion. Args: file_name (str): Name of the mock response XML file to return. """ file_path = f"test_data/{file_name}" top = defused_ET.parse(file_path) return ET.tostring(top.getroot(), encoding="utf8").decode("utf-8") def test_azure_storage_queue_list_queues_command(requests_mock): """ Scenario: List queues. Given: - User has provided valid credentials. When: - azure-storage-queue-list called. Then: - Ensure number of items is correct. - Ensure outputs prefix is correct. - Ensure a sample value from the API matches what is generated in the context. """ from AzureStorageQueue import Client, list_queues_command url = f"{BASE_URL}/?{SAS_TOKEN}&comp=list&maxresults=50" mock_response = load_xml_mock_response("queues.xml") requests_mock.get(url, text=mock_response) client = Client( server_url=BASE_URL, verify=False, proxy=False, account_sas_token=SAS_TOKEN, storage_account_name=ACCOUNT_NAME, api_version=API_VERSION, ) result = list_queues_command(client, {}) assert len(result.outputs) == 3 assert result.outputs_prefix == "AzureStorageQueue.Queue" assert result.outputs[0].get("name") == "my-queue" assert result.outputs[1].get("name") == "test" assert result.outputs[2].get("name") == "xsoar-test" def test_azure_storage_queue_create_queue_command(requests_mock): """ Scenario: Create queue. Given: - User has provided valid credentials. When: - azure-storage-queue-queue-create called. Then: - Ensure that the output is empty (None). - Ensure validation of the queue name. - Ensure readable output message content. """ from AzureStorageQueue import Client, create_queue_command queue_name = "test-queue" url = f"{BASE_URL}/{queue_name}?{SAS_TOKEN}" requests_mock.put(url, text="", status_code=201) client = Client( server_url=BASE_URL, verify=False, proxy=False, account_sas_token=SAS_TOKEN, storage_account_name=ACCOUNT_NAME, api_version=API_VERSION, ) result = create_queue_command(client, {"queue_name": queue_name}) assert result.outputs is None assert result.outputs_prefix is None assert result.readable_output == f"Queue {queue_name} successfully created." invalid_queue_name = "test--1" with pytest.raises(Exception): create_queue_command(client, {"queue_name": invalid_queue_name}) def test_azure_storage_queue_delete_queue_command(requests_mock): """ Scenario: Delete queue. Given: - User has provided valid credentials. When: - azure-storage-queue-delete called. Then: - Ensure that the output is empty (None). - Ensure readable output message content. """ from AzureStorageQueue import Client, delete_queue_command queue_name = "test-queue" url = f"{BASE_URL}/{queue_name}?{SAS_TOKEN}" requests_mock.delete(url, text="") client = Client( server_url=BASE_URL, verify=False, proxy=False, account_sas_token=SAS_TOKEN, storage_account_name=ACCOUNT_NAME, api_version=API_VERSION, ) result = delete_queue_command(client, {"queue_name": queue_name}) assert result.outputs is None assert result.outputs_prefix is None assert result.readable_output == f"Queue {queue_name} successfully deleted." def test_azure_storage_queue_create_message_command(requests_mock): """ Scenario: Create message. Given: - User has provided valid credentials. When: - azure-storage-queue-message-create called. Then: - Ensure number of items is correct. - Ensure outputs prefix is correct. - Ensure a sample value from the API matches what is generated in the context. """ from AzureStorageQueue import Client, create_message_command queue_name = "test-queue" url = f"{BASE_URL}/{queue_name}/messages?{SAS_TOKEN}" mock_response = load_xml_mock_response("create_message.xml") requests_mock.post(url, text=mock_response) client = Client( server_url=BASE_URL, verify=False, proxy=False, account_sas_token=SAS_TOKEN, storage_account_name=ACCOUNT_NAME, api_version=API_VERSION, ) result = create_message_command(client, {"message_content": "test", "queue_name": queue_name}) assert len(result.outputs) == 2 assert result.outputs_prefix == "AzureStorageQueue.Queue" assert result.outputs.get("name") == queue_name assert len(result.outputs.get("Message")) == 5 assert result.outputs.get("Message").get("MessageId") == "111111111" assert result.outputs.get("Message").get("InsertionTime") == "2021-08-10T13:42:46" def test_azure_storage_queue_get_messages_command(requests_mock): """ Scenario: Get messages. Given: - User has provided valid credentials. When: - azure-storage-queue-message-get called. Then: - Ensure number of items is correct. - Ensure outputs prefix is correct. - Ensure a sample value from the API matches what is generated in the context. """ from AzureStorageQueue import Client, get_messages_command queue_name = "test-queue" url = f"{BASE_URL}/{queue_name}/messages?{SAS_TOKEN}&numofmessages=1" mock_response = load_xml_mock_response("get_message.xml") requests_mock.get(url, text=mock_response) client = Client( server_url=BASE_URL, verify=False, proxy=False, account_sas_token=SAS_TOKEN, storage_account_name=ACCOUNT_NAME, api_version=API_VERSION, ) result = get_messages_command(client, {"queue_name": queue_name}) assert len(result.outputs) == 2 assert len(result.outputs.get("Message")) == 1 assert len(result.outputs.get("Message")[0]) == 7 assert result.outputs_prefix == "AzureStorageQueue.Queue" assert result.outputs.get("Message")[0].get("MessageId") == "1111111111111" assert result.outputs.get("Message")[0].get("InsertionTime") == "2021-08-22T13:00:49" assert result.outputs.get("name") == queue_name def test_azure_storage_queue_peek_messages_command(requests_mock): """ Scenario: Peek message. Given: - User has provided valid credentials. When: - azure-storage-queue-message-peek called. Then: - Ensure number of items is correct. - Ensure outputs prefix is correct. - Ensure a sample value from the API matches what is generated in the context. """ from AzureStorageQueue import Client, peek_messages_command queue_name = "test-queue" url = f"{BASE_URL}/{queue_name}/messages?{SAS_TOKEN}&numofmessages=1&peekonly=true" mock_response = load_xml_mock_response("peek_message.xml") requests_mock.get(url, text=mock_response) client = Client( server_url=BASE_URL, verify=False, proxy=False, account_sas_token=SAS_TOKEN, storage_account_name=ACCOUNT_NAME, api_version=API_VERSION, ) result = peek_messages_command(client, {"queue_name": queue_name}) assert len(result.outputs) == 2 assert len(result.outputs.get("Message")) == 1 assert len(result.outputs.get("Message")[0]) == 5 assert result.outputs_prefix == "AzureStorageQueue.Queue" assert result.outputs.get("Message")[0].get("MessageId") == "222222222" assert result.outputs.get("Message")[0].get("InsertionTime") == "2021-08-22T13:00:49" assert result.outputs.get("Message")[0].get("TimeNextVisible") is None assert result.outputs.get("name") == queue_name def test_azure_storage_queue_dequeue_messages_command(requests_mock): """ Scenario: Dequeue message. Given: - User has provided valid credentials. When: - azure-storage-queue-message-dequeue called. Then: - Ensure that the output is empty (None). - Ensure readable output message content. """ from AzureStorageQueue import Client, dequeue_message_command queue_name = "test-queue" get_url = f"{BASE_URL}/{queue_name}/messages?{SAS_TOKEN}&numofmessages=1&visibilitytimeout=30" mock_response = load_xml_mock_response("get_message.xml") requests_mock.get(get_url, text=mock_response) message_id = "1111111111111" pop_receipt = "AgAAAAMAAAAAAAAAsIN/0VWX1wE=" delete_url = f"{BASE_URL}/{queue_name}/messages/{message_id}?{SAS_TOKEN}&popreceipt={pop_receipt}" requests_mock.delete(delete_url, text="") client = Client( server_url=BASE_URL, verify=False, proxy=False, account_sas_token=SAS_TOKEN, storage_account_name=ACCOUNT_NAME, api_version=API_VERSION, ) result = dequeue_message_command(client, {"queue_name": queue_name}) assert result.outputs is None assert result.outputs_prefix is None assert result.readable_output == f"Message in {queue_name} successfully deleted." def test_azure_storage_queue_update_messages_command(requests_mock): """ Scenario: Update message. Given: - User has provided valid credentials. When: - azure-storage-queue-message-update called. Then: - Ensure that the output is empty (None). - Ensure readable output message content. """ from AzureStorageQueue import Client, update_message_command queue_name = "test-queue" message_id = "1111111111111" pop_receipt = "AgAAAAMAAAAAAAAAsIN/0VWX1wE=" visibility_time_out = "30" url = ( f"{BASE_URL}/{queue_name}/messages/{message_id}?{SAS_TOKEN}" f"&popreceipt={pop_receipt}&visibilitytimeout={visibility_time_out}" ) requests_mock.put(url, text="") client = Client( server_url=BASE_URL, verify=False, proxy=False, account_sas_token=SAS_TOKEN, storage_account_name=ACCOUNT_NAME, api_version=API_VERSION, ) result = update_message_command( client, { "queue_name": queue_name, "message_id": message_id, "pop_receipt": pop_receipt, "message_content": "update test", "visibility_time_out": visibility_time_out, }, ) assert result.outputs is None assert result.outputs_prefix is None assert result.readable_output == f"The message in {queue_name} successfully updated." def test_azure_storage_queue_delete_messages_command(requests_mock): """ Scenario: Delete message. Given: - User has provided valid credentials. When: - azure-storage-queue-message-delete called. Then: - Ensure that the output is empty (None). - Ensure readable output message content. """ from AzureStorageQueue import Client, delete_message_command queue_name = "test-queue" message_id = "1111111111111" pop_receipt = "AgAAAAMAAAAAAAAAsIN/0VWX1wE=" delete_url = f"{BASE_URL}/{queue_name}/messages/{message_id}?{SAS_TOKEN}&popreceipt={pop_receipt}" requests_mock.delete(delete_url, text="") client = Client( server_url=BASE_URL, verify=False, proxy=False, account_sas_token=SAS_TOKEN, storage_account_name=ACCOUNT_NAME, api_version=API_VERSION, ) result = delete_message_command(client, {"queue_name": queue_name, "message_id": message_id, "pop_receipt": pop_receipt}) assert result.outputs is None assert result.outputs_prefix is None assert result.readable_output == f"Message in {queue_name} successfully deleted." def test_azure_storage_queue_clear_queue_command(requests_mock): """ Scenario: Clear queue messages command. Given: - User has provided valid credentials. When: - azure-storage-queue-message-clear called. Then: - Ensure that the output is empty (None). - Ensure readable output message content. """ from AzureStorageQueue import Client, clear_messages_command queue_name = "test-queue" url = f"/{queue_name}/messages?{SAS_TOKEN}" requests_mock.delete(url, text="") client = Client( server_url=BASE_URL, verify=False, proxy=False, account_sas_token=SAS_TOKEN, storage_account_name=ACCOUNT_NAME, api_version=API_VERSION, ) result = clear_messages_command(client, {"queue_name": queue_name}) assert result.outputs is None assert result.outputs_prefix is None assert result.readable_output == f"{queue_name} was cleared of messages successfully." @pytest.mark.parametrize(argnames="client_id", argvalues=["test_client_id", None]) def test_test_module_command_with_managed_identities(mocker, requests_mock, client_id): """ Given: - Managed Identities client id for authentication. When: - Calling test_module. Then: - Ensure the output are as expected. """ import re import AzureStorageQueue import demistomock as demisto from AzureStorageQueue import MANAGED_IDENTITIES_TOKEN_URL, main mock_token = {"access_token": "test_token", "expires_in": "86400"} get_mock = requests_mock.get(MANAGED_IDENTITIES_TOKEN_URL, json=mock_token) requests_mock.get(re.compile(".queue.core.windows.net/.*")) params = { "managed_identities_client_id": {"password": client_id}, "use_managed_identities": "True", "credentials": {"identifier": "test_storage_account_name"}, "max_fetch": 20, } mocker.patch.object(demisto, "params", return_value=params) mocker.patch.object(demisto, "command", return_value="test-module") mocker.patch.object(AzureStorageQueue, "return_results", return_value=params) main() assert "ok" in AzureStorageQueue.return_results.call_args[0][0] qs = get_mock.last_request.qs assert (client_id and qs["client_id"] == [client_id]) or "client_id" not in qs