Completed
Pull Request — master (#18)
by
unknown
02:06
created

mock_boto_client_sns()   A

Complexity

Conditions 1

Size

Total Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
dl 0
loc 5
rs 9.4285
c 0
b 0
f 0
1
# -*- coding: utf-8 -*-
2
# vi:si:et:sw=4:sts=4:ts=4
3
4
from unittest import mock
5
6
from aiomock import AIOMock
0 ignored issues
show
Configuration introduced by
The import aiomock could not be resolved.

This can be caused by one of the following:

1. Missing Dependencies

This error could indicate a configuration issue of Pylint. Make sure that your libraries are available by adding the necessary commands.

# .scrutinizer.yml
before_commands:
    - sudo pip install abc # Python2
    - sudo pip3 install abc # Python3
Tip: We are currently not using virtualenv to run pylint, when installing your modules make sure to use the command for the correct version.

2. Missing __init__.py files

This error could also result from missing __init__.py files in your module folders. Make sure that you place one file in each sub-folder.

Loading history...
7
import pytest
8
9
10
# boto client methods mock
11
12
@pytest.fixture
13
def queue_url():
14
    queue_url = 'https://sqs.us-east-1.amazonaws.com/123456789012/queue-name'
15
    return {'QueueUrl': queue_url}
16
17
18
@pytest.fixture
19
def mock_get_queue_url(queue_url):
20
    return mock.Mock(return_value=queue_url)
21
22
23
@pytest.fixture
24
def mock_message():
25
    message = {'Body': 'test'}
26
    return {'Messages': [message]}
27
28
29
@pytest.fixture
30
def mock_receive_message(mock_message):
31
    return mock.Mock(return_value=mock_message)
32
33
34
@pytest.fixture
35
def mock_send_message():
36
    response = {'MessageId': 'uuid', 'MD5OfMessageBody': 'md5',
37
                'ResponseMetada': {'RequestId': 'uuid', 'HTTPStatusCode': 200}}
38
    return mock.Mock(return_value=response)
39
40
41
@pytest.fixture
42
def mock_sns_list_topics():
43
    topics = {'Topics': [{'TopicArn': 'arn:aws:sns:region:id:topic-name'}]}
44
    return mock.Mock(return_value=topics)
45
46
47
@pytest.fixture
48
def mock_sns_publish():
49
    response = {'ResponseMetadata': {'HTTPStatusCode': 200, 'RequestId': 'uuid'},
50
                'MessageId': 'uuid'}
51
    return mock.Mock(return_value=response)
52
53
54
# boto client mock
55
56
57
@pytest.fixture
58
def boto_client_sqs(queue_url, mock_message):
59
    mock_client = AIOMock()
60
    mock_client.get_queue_url.async_return_value = queue_url
61
    mock_client.delete_message.async_return_value = mock.Mock()
62
    mock_client.receive_message.async_return_value = mock_message
63
    return mock_client
64
65
66
@pytest.fixture
67
def mock_boto_session(boto_client_sqs):
68
    mock_session = mock.Mock()
69
    mock_session.create_client = mock.Mock(return_value=boto_client_sqs)
70
    return mock_session
71
72
73
@pytest.fixture
74
def mock_boto_session_sqs(mock_boto_session):
75
    return mock.patch('aiobotocore.get_session', return_value=mock_boto_session)
76
77
78
@pytest.fixture
79
def mock_boto_sync_client_sns(mock_sns_publish, mock_sns_list_topics):
80
    mock_client = mock.Mock(publish=mock_sns_publish,
81
                            list_topics=mock_sns_list_topics)
82
    return mock.patch('boto3.client', return_value=mock_client)
83
84
85
@pytest.fixture
86
def mock_boto_sync_client_sqs(mock_get_queue_url, mock_send_message):
87
    mock_client = mock.Mock(get_queue_url=mock_get_queue_url,
88
                            send_message=mock_send_message)
89
    return mock.patch('boto3.client', return_value=mock_client)
90