Path: blob/develop/tests/unit/customizations/ec2/test_paginate.py
1569 views
# Copyright 2016 Amazon.com, Inc. or its affiliates. All Rights Reserved.1#2# Licensed under the Apache License, Version 2.0 (the "License"). You3# may not use this file except in compliance with the License. A copy of4# the License is located at5#6# http://aws.amazon.com/apache2.0/7#8# or in the "license" file accompanying this file. This file is9# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF10# ANY KIND, either express or implied. See the License for the specific11# language governing permissions and limitations under the License.12from argparse import Namespace1314from awscli.testutils import mock, unittest15from awscli.customizations.ec2.paginate import EC2PageSizeInjector161718class TestEC2PageSizeInjector(unittest.TestCase):19def test_register(self):20target_operations = {21'foo': [],22'bar': []23}24injector = EC2PageSizeInjector()25injector.TARGET_OPERATIONS = target_operations26event_emitter = mock.Mock()27injector.register(event_emitter)2829call_args = event_emitter.register_last.call_args_list30events_registered = sorted([c[0][0] for c in call_args])31expected_events = sorted([32'calling-command.ec2.bar',33'calling-command.ec2.foo'34])35self.assertEqual(events_registered, expected_events)3637def test_inject(self):38target_operations = {'foo': []}39injector = EC2PageSizeInjector()40injector.DEFAULT_PAGE_SIZE = 541injector.TARGET_OPERATIONS = target_operations42parsed_globals = Namespace(paginate=True)43call_parameters = {}44event_name = 'operation-args-parsed.ec2.foo'45injector.inject(46event_name=event_name,47parsed_globals=parsed_globals,48call_parameters=call_parameters49)50page_size = call_parameters.get('PaginationConfig', {}).get('PageSize')51self.assertEqual(page_size, 5)5253def test_no_paginate(self):54target_operations = {'foo': []}55injector = EC2PageSizeInjector()56injector.TARGET_OPERATIONS = target_operations57parsed_globals = Namespace(paginate=False)58call_parameters = {}59event_name = 'operation-args-parsed.ec2.foo'60injector.inject(61event_name=event_name,62parsed_globals=parsed_globals,63call_parameters=call_parameters64)65page_size = call_parameters.get('PaginationConfig', {}).get('PageSize')66self.assertIsNone(page_size)6768def test_global_whitelist(self):69target_operations = {'foo': []}70injector = EC2PageSizeInjector()71injector.UNIVERSAL_WHITELIST = ['bar']72injector.TARGET_OPERATIONS = target_operations73parsed_globals = Namespace(paginate=True)74call_parameters = {'baz': True}75event_name = 'operation-args-parsed.ec2.foo'76injector.inject(77event_name=event_name,78parsed_globals=parsed_globals,79call_parameters=call_parameters80)81page_size = call_parameters.get('PaginationConfig', {}).get('PageSize')82self.assertIsNone(page_size)8384def test_operation_whitelist(self):85target_operations = {'foo': ['bar']}86injector = EC2PageSizeInjector()87injector.UNIVERSAL_WHITELIST = []88injector.TARGET_OPERATIONS = target_operations89parsed_globals = Namespace(paginate=True)90call_parameters = {'baz': True}91event_name = 'operation-args-parsed.ec2.foo'92injector.inject(93event_name=event_name,94parsed_globals=parsed_globals,95call_parameters=call_parameters96)97page_size = call_parameters.get('PaginationConfig', {}).get('PageSize')98self.assertIsNone(page_size)99100def test_non_target_operation(self):101target_operations = {'foo': []}102injector = EC2PageSizeInjector()103injector.TARGET_OPERATIONS = target_operations104parsed_globals = Namespace(paginate=True)105call_parameters = {}106event_name = 'operation-args-parsed.ec2.baz'107injector.inject(108event_name=event_name,109parsed_globals=parsed_globals,110call_parameters=call_parameters111)112page_size = call_parameters.get('PaginationConfig', {}).get('PageSize')113self.assertIsNone(page_size)114115116