File: //lib/python3/dist-packages/botocore/__pycache__/stub.cpython-310.pyc
o
.&�a!8 � @ sz d dl Z d dlmZ d dlmZ d dlmZ d dlmZm Z m
Z
mZ d dlm
Z
G dd� de�Ze� ZG d d
� d
e�ZdS )� N)�deque)�pformat)�validate_parameters)�ParamValidationError�StubResponseError�StubAssertionError�UnStubbedResponseError)�AWSResponsec @ s( e Zd ZdZdd� Zdd� Zdd� ZdS ) �_ANYzZ
A helper object that compares equal to everything. Copied from
unittest.mock
c C � dS )NT� ��self�otherr r �//usr/lib/python3/dist-packages/botocore/stub.py�__eq__ � z_ANY.__eq__c C r )NFr r
r r r �__ne__ r z_ANY.__ne__c C r )Nz<ANY>r �r r r r �__repr__# r z
_ANY.__repr__N)�__name__�
__module__�__qualname__�__doc__r r r r r r r r
s
r
c @ s� e Zd ZdZdd� Zdd� Zdd� Zdd � Zd
d� Zd!d
d�Z dd� Z
d"dd�Zdd� Zdd� Z
dd� Zdd� Zdd� Zdd � ZdS )#�Stubbera�
This class will allow you to stub out requests so you don't have to hit
an endpoint to write tests. Responses are returned first in, first out.
If operations are called out of order, or are called with no remaining
queued responses, an error will be raised.
**Example:**
::
import datetime
import botocore.session
from botocore.stub import Stubber
s3 = botocore.session.get_session().create_client('s3')
stubber = Stubber(s3)
response = {
'IsTruncated': False,
'Name': 'test-bucket',
'MaxKeys': 1000, 'Prefix': '',
'Contents': [{
'Key': 'test.txt',
'ETag': '"abc123"',
'StorageClass': 'STANDARD',
'LastModified': datetime.datetime(2016, 1, 20, 22, 9),
'Owner': {'ID': 'abc123', 'DisplayName': 'myname'},
'Size': 14814
}],
'EncodingType': 'url',
'ResponseMetadata': {
'RequestId': 'abc123',
'HTTPStatusCode': 200,
'HostId': 'abc123'
},
'Marker': ''
}
expected_params = {'Bucket': 'test-bucket'}
stubber.add_response('list_objects', response, expected_params)
stubber.activate()
service_response = s3.list_objects(Bucket='test-bucket')
assert service_response == response
This class can also be called as a context manager, which will handle
activation / deactivation for you.
**Example:**
::
import datetime
import botocore.session
from botocore.stub import Stubber
s3 = botocore.session.get_session().create_client('s3')
response = {
"Owner": {
"ID": "foo",
"DisplayName": "bar"
},
"Buckets": [{
"CreationDate": datetime.datetime(2016, 1, 20, 22, 9),
"Name": "baz"
}]
}
with Stubber(s3) as stubber:
stubber.add_response('list_buckets', response, {})
service_response = s3.list_buckets()
assert service_response == response
If you have an input parameter that is a randomly generated value, or you
otherwise don't care about its value, you can use ``stub.ANY`` to ignore
it in validation.
**Example:**
::
import datetime
import botocore.session
from botocore.stub import Stubber, ANY
s3 = botocore.session.get_session().create_client('s3')
stubber = Stubber(s3)
response = {
'IsTruncated': False,
'Name': 'test-bucket',
'MaxKeys': 1000, 'Prefix': '',
'Contents': [{
'Key': 'test.txt',
'ETag': '"abc123"',
'StorageClass': 'STANDARD',
'LastModified': datetime.datetime(2016, 1, 20, 22, 9),
'Owner': {'ID': 'abc123', 'DisplayName': 'myname'},
'Size': 14814
}],
'EncodingType': 'url',
'ResponseMetadata': {
'RequestId': 'abc123',
'HTTPStatusCode': 200,
'HostId': 'abc123'
},
'Marker': ''
}
expected_params = {'Bucket': ANY}
stubber.add_response('list_objects', response, expected_params)
with stubber:
service_response = s3.list_objects(Bucket='test-bucket')
assert service_response == response
c C s || _ d| _d| _t� | _dS )zA
:param client: The client to add your stubs to.
�boto_stubber�boto_stubber_expected_paramsN)�client� _event_id�_expected_params_event_idr �_queue)r r r r r �__init__� s zStubber.__init__c C s | � � | S �N)�activater r r r � __enter__� s zStubber.__enter__c C s | � � d S r"