@@ -1501,3 +1501,60 @@ def my_client(rtype, *args):
15011501 catch_exceptions = False )
15021502 assert "created" in result .output
15031503 assert "updated" in result .output
1504+
1505+
1506+ def test_wait_in_progress (monkeypatch ):
1507+ cf = MagicMock ()
1508+ stack1 = {'StackName' : 'test-1' ,
1509+ 'CreationTime' : datetime .datetime .utcnow (),
1510+ 'StackStatus' : 'CREATE_IN_PROGRESS' }
1511+
1512+ cf .list_stacks .return_value = {'StackSummaries' : [stack1 ]}
1513+ monkeypatch .setattr ('boto3.client' , MagicMock (return_value = cf ))
1514+
1515+ def my_resource (rtype , * args ):
1516+ return MagicMock ()
1517+
1518+ monkeypatch .setattr ('boto3.resource' , my_resource )
1519+ monkeypatch .setattr ('time.sleep' , MagicMock ())
1520+
1521+ runner = CliRunner ()
1522+
1523+ data = {'SenzaInfo' : {'StackName' : 'test' }}
1524+
1525+ with runner .isolated_filesystem ():
1526+ result = runner .invoke (cli ,
1527+ ['wait' , 'test' , '1' , '--region=aa-fakeregion-1' , '--timeout=1' ],
1528+ catch_exceptions = False )
1529+ assert "Waiting up to 1 more secs for stack test-1 (CREATE_IN_PROGRESS).." in result .output
1530+ assert 'Aborted!' in result .output
1531+ assert 1 == result .exit_code
1532+
1533+
1534+ def test_wait_failure (monkeypatch ):
1535+ cf = MagicMock ()
1536+ stack1 = {'StackName' : 'test-1' ,
1537+ 'CreationTime' : datetime .datetime .utcnow (),
1538+ 'StackStatus' : 'ROLLBACK_COMPLETE' }
1539+
1540+ cf .list_stacks .return_value = {'StackSummaries' : [stack1 ]}
1541+ cf .describe_stack_events .return_value = {'StackEvents' : [{'Timestamp' : 0 , 'ResourceStatus' : 'FAIL' , 'ResourceStatusReason' : 'myreason' , 'LogicalResourceId' : 'foo' }]}
1542+ monkeypatch .setattr ('boto3.client' , MagicMock (return_value = cf ))
1543+
1544+ def my_resource (rtype , * args ):
1545+ return MagicMock ()
1546+
1547+ monkeypatch .setattr ('boto3.resource' , my_resource )
1548+ monkeypatch .setattr ('time.sleep' , MagicMock ())
1549+
1550+ runner = CliRunner ()
1551+
1552+ data = {'SenzaInfo' : {'StackName' : 'test' }}
1553+
1554+ with runner .isolated_filesystem ():
1555+ result = runner .invoke (cli ,
1556+ ['wait' , 'test' , '1' , '--region=aa-fakeregion-1' ],
1557+ catch_exceptions = False )
1558+ assert 'ERROR: foo FAIL: myreason' in result .output
1559+ assert 'ERROR: Stack test-1 has status ROLLBACK_COMPLETE' in result .output
1560+ assert 1 == result .exit_code
0 commit comments