def test_should_not_raise_exceptions_when_deleting_a_complete_cluster(self):
        versions = [{'version': 'test-version1'}, {'version': 'test-version2'}]
        senza_mock = SenzaWrapper(CONFIG)
        senza_versions_mock = senza_mock.get_all_stack_versions = MagicMock(return_value=versions)
        senza_switch_mock = senza_mock.switch_traffic = MagicMock(return_value=True)
        senza_delete_mock = senza_mock.delete_stack_version = MagicMock()
        controller = ClusterDeleteController(base_url=BASE_URL, stack_name=STACK_NAME, oauth_token=OAUTH_TOKEN,
                                             senza_wrapper=senza_mock)

        urlopen_mock = MagicMock(side_effect=self.__side_effect_return_cluster_state)
        urllib.request.urlopen = urlopen_mock
        controller.delete_cluster()

        senza_versions_mock.assert_called_once_with(STACK_NAME)

        switch_calls = senza_switch_mock.call_args_list
        self.assertEquals(2, len(switch_calls), 'Unexpected number of switch calls')
        self.assertEqual(switch_calls[0][0][0], STACK_NAME)
        self.assertEqual(switch_calls[0][0][1], 'test-version1')
        self.assertEqual(switch_calls[0][0][2], 0)
        self.assertEqual(switch_calls[1][0][0], STACK_NAME)
        self.assertEqual(switch_calls[1][0][1], 'test-version2')
        self.assertEqual(switch_calls[1][0][2], 0)

        delete_calls = senza_delete_mock.call_args_list
        self.assertEquals(2, len(delete_calls), 'Unexpected number of delete calls')
        self.assertEqual(delete_calls[0][0][0], STACK_NAME)
        self.assertEqual(delete_calls[0][0][1], 'test-version1')
        self.assertEqual(delete_calls[1][0][0], STACK_NAME)
        self.assertEqual(delete_calls[1][0][1], 'test-version2')
    def test_should_raise_exception_when_deleting_a_complete_cluster_without_version(self):
        versions = []
        senza_mock = SenzaWrapper(CONFIG)
        senza_versions_mock = senza_mock.get_all_stack_versions = MagicMock(return_value=versions)
        controller = ClusterDeleteController(base_url=BASE_URL, stack_name=STACK_NAME, oauth_token=OAUTH_TOKEN,
                                             senza_wrapper=senza_mock)

        with self.assertRaisesRegex(Exception, 'No active stack version found'):
            controller.delete_cluster()
        senza_versions_mock.assert_called_once_with(STACK_NAME)