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_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_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_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_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_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.'