Esempio n. 1
0
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.'
Esempio n. 2
0
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})
Esempio n. 3
0
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.'
Esempio n. 4
0
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'
Esempio n. 5
0
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
Esempio n. 6
0
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.'