Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
aws
GitHub Repository: aws/aws-cli
Path: blob/develop/tests/unit/customizations/ec2/test_paginate.py
1569 views
1
# Copyright 2016 Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
#
3
# Licensed under the Apache License, Version 2.0 (the "License"). You
4
# may not use this file except in compliance with the License. A copy of
5
# the License is located at
6
#
7
# http://aws.amazon.com/apache2.0/
8
#
9
# or in the "license" file accompanying this file. This file is
10
# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
11
# ANY KIND, either express or implied. See the License for the specific
12
# language governing permissions and limitations under the License.
13
from argparse import Namespace
14
15
from awscli.testutils import mock, unittest
16
from awscli.customizations.ec2.paginate import EC2PageSizeInjector
17
18
19
class TestEC2PageSizeInjector(unittest.TestCase):
20
def test_register(self):
21
target_operations = {
22
'foo': [],
23
'bar': []
24
}
25
injector = EC2PageSizeInjector()
26
injector.TARGET_OPERATIONS = target_operations
27
event_emitter = mock.Mock()
28
injector.register(event_emitter)
29
30
call_args = event_emitter.register_last.call_args_list
31
events_registered = sorted([c[0][0] for c in call_args])
32
expected_events = sorted([
33
'calling-command.ec2.bar',
34
'calling-command.ec2.foo'
35
])
36
self.assertEqual(events_registered, expected_events)
37
38
def test_inject(self):
39
target_operations = {'foo': []}
40
injector = EC2PageSizeInjector()
41
injector.DEFAULT_PAGE_SIZE = 5
42
injector.TARGET_OPERATIONS = target_operations
43
parsed_globals = Namespace(paginate=True)
44
call_parameters = {}
45
event_name = 'operation-args-parsed.ec2.foo'
46
injector.inject(
47
event_name=event_name,
48
parsed_globals=parsed_globals,
49
call_parameters=call_parameters
50
)
51
page_size = call_parameters.get('PaginationConfig', {}).get('PageSize')
52
self.assertEqual(page_size, 5)
53
54
def test_no_paginate(self):
55
target_operations = {'foo': []}
56
injector = EC2PageSizeInjector()
57
injector.TARGET_OPERATIONS = target_operations
58
parsed_globals = Namespace(paginate=False)
59
call_parameters = {}
60
event_name = 'operation-args-parsed.ec2.foo'
61
injector.inject(
62
event_name=event_name,
63
parsed_globals=parsed_globals,
64
call_parameters=call_parameters
65
)
66
page_size = call_parameters.get('PaginationConfig', {}).get('PageSize')
67
self.assertIsNone(page_size)
68
69
def test_global_whitelist(self):
70
target_operations = {'foo': []}
71
injector = EC2PageSizeInjector()
72
injector.UNIVERSAL_WHITELIST = ['bar']
73
injector.TARGET_OPERATIONS = target_operations
74
parsed_globals = Namespace(paginate=True)
75
call_parameters = {'baz': True}
76
event_name = 'operation-args-parsed.ec2.foo'
77
injector.inject(
78
event_name=event_name,
79
parsed_globals=parsed_globals,
80
call_parameters=call_parameters
81
)
82
page_size = call_parameters.get('PaginationConfig', {}).get('PageSize')
83
self.assertIsNone(page_size)
84
85
def test_operation_whitelist(self):
86
target_operations = {'foo': ['bar']}
87
injector = EC2PageSizeInjector()
88
injector.UNIVERSAL_WHITELIST = []
89
injector.TARGET_OPERATIONS = target_operations
90
parsed_globals = Namespace(paginate=True)
91
call_parameters = {'baz': True}
92
event_name = 'operation-args-parsed.ec2.foo'
93
injector.inject(
94
event_name=event_name,
95
parsed_globals=parsed_globals,
96
call_parameters=call_parameters
97
)
98
page_size = call_parameters.get('PaginationConfig', {}).get('PageSize')
99
self.assertIsNone(page_size)
100
101
def test_non_target_operation(self):
102
target_operations = {'foo': []}
103
injector = EC2PageSizeInjector()
104
injector.TARGET_OPERATIONS = target_operations
105
parsed_globals = Namespace(paginate=True)
106
call_parameters = {}
107
event_name = 'operation-args-parsed.ec2.baz'
108
injector.inject(
109
event_name=event_name,
110
parsed_globals=parsed_globals,
111
call_parameters=call_parameters
112
)
113
page_size = call_parameters.get('PaginationConfig', {}).get('PageSize')
114
self.assertIsNone(page_size)
115
116