def test_get_stacks_correctly_aggregates_paged_results(self, cloudformation_mock): stacks_1 = [Mock(spec=Stack), Mock(spec=Stack)] stacks_2 = [Mock(spec=Stack), Mock(spec=Stack)] result_1 = ResultSet() result_1.extend(stacks_1) result_1.next_token = "my-next-token" result_2 = ResultSet() result_2.extend(stacks_2) result_2.next_token = None cloudformation_mock.connect_to_region.return_value.describe_stacks.side_effect = [result_1, result_2] cfn = CloudFormation() self.assertListEqual(stacks_1 + stacks_2, cfn.get_stacks())
def test_resultset_two_next(self): e1 = Mock() e2 = Mock() rs1 = ResultSet() rs1.append(e1) rs1.append(e2) rs1.next_token = 't1' e3 = Mock() e4 = Mock() rs2 = ResultSet() rs2.append(e3) rs2.append(e4) rs2.next_token = 't2' e5 = Mock() e6 = Mock() rs3 = ResultSet() rs3.append(e5) rs3.append(e6) func = Mock() results = [rs2, rs3] def se_invoke(f, *args, **argv): return results.pop(0) with patch('%s.invoke_with_throttling_retries' % pbm) as mock_invoke: mock_invoke.side_effect = se_invoke res = _paginate_resultset(rs1, func, 'foo', bar='barval') assert isinstance(res, ResultSet) assert len(res) == 6 assert res[0] == e1 assert res[1] == e2 assert res[2] == e3 assert res[3] == e4 assert res[4] == e5 assert res[5] == e6 assert mock_invoke.mock_calls == [ call(func, 'foo', bar='barval', next_token='t1'), call(func, 'foo', bar='barval', next_token='t2') ]
def test_get_stacks_correctly_aggregates_paged_results( self, cloudformation_mock): stacks_1 = [Mock(spec=Stack), Mock(spec=Stack)] stacks_2 = [Mock(spec=Stack), Mock(spec=Stack)] result_1 = ResultSet() result_1.extend(stacks_1) result_1.next_token = "my-next-token" result_2 = ResultSet() result_2.extend(stacks_2) result_2.next_token = None cloudformation_mock.connect_to_region.return_value.describe_stacks.side_effect = [ result_1, result_2 ] cfn = CloudFormation() self.assertListEqual(stacks_1 + stacks_2, cfn.get_stacks())
def test_get_stacks_correctly_calls_aws_api(self, cloudformation_mock): stacks = [Mock(spec=Stack), Mock(spec=Stack)] result = ResultSet() result.extend(stacks) result.next_token = None cloudformation_mock.connect_to_region.return_value.describe_stacks.return_value = result cfn = CloudFormation() self.assertListEqual(stacks, cfn.get_stacks())
def test_get_stacks_correctly_calls_aws_api(self, cloudformation_mock): stacks = [Mock(spec=Stack), Mock(spec=Stack)] result = ResultSet() result.extend(stacks) result.next_token = None cloudformation_mock.connect_to_region.return_value.describe_stacks.return_value = result cfn = CloudFormation() self.assertListEqual(stacks, cfn.get_stacks())
def get_all_groups(names=None, max_records=None, next_token=None): groups = ResultSet() for i in xrange(1, 3): tags = [ boto.ec2.autoscale.tag.Tag( None, key='aws:cloudformation:stack-name', value='test{0}'.format(i)) ] asg = AutoScalingGroup() asg.name = 'test{0}'.format(i) asg.tags = tags groups.append(asg) groups.next_token = None return groups
def test_resultset_next_token(self): result = ResultSet() result.next_token = 'foo' func = Mock() final_result = Mock() with patch.multiple( pbm, invoke_with_throttling_retries=DEFAULT, _paginate_resultset=DEFAULT, _paginate_dict=DEFAULT, ) as mocks: mocks['invoke_with_throttling_retries'].return_value = result mocks['_paginate_resultset'].return_value = final_result res = paginate_query(func, 'foo', bar='barval') assert res == final_result assert mocks['invoke_with_throttling_retries'].mock_calls == [ call(func, 'foo', bar='barval') ] assert mocks['_paginate_resultset'].mock_calls == [ call(result, func, 'foo', bar='barval') ] assert mocks['_paginate_dict'].mock_calls == []