def test_custom_delete_errands(self, mock_get):
        mock_get.side_effect = [
            build_json_response(api_responses_1_8['pending_changes_delete'])
        ]

        product_changes = opsmgr.get_changes(delete_errands=[
            'delete_subdeployments_on_demand_service_broker',
            'unregister_on_demand_service_broker'
        ])
        changes = product_changes['product_changes']

        self.assertEquals(len(changes), 2)

        delete_one = changes[0]
        self.assertEquals(delete_one['guid'],
                          'key-value-tile-ce5a27ce8a93145ed200')
        self.assertEquals(delete_one['action'], 'delete')

        delete_one_errands = delete_one['errands']
        self.assertEquals(len(delete_one_errands), 0)

        delete_two = changes[1]
        self.assertEquals(delete_two['guid'],
                          'db-on-demand-c8ace318b641342d8420')
        self.assertEquals(delete_two['action'], 'delete')

        delete_two_errands = delete_two['errands']
        self.assertEquals(len(delete_two_errands), 2)
        self.assertEquals(delete_two_errands[0]['name'],
                          'delete_subdeployments_on_demand_service_broker')
        self.assertTrue(delete_two_errands[0]['pre_delete'])
        self.assertEquals(delete_two_errands[1]['name'],
                          'unregister_on_demand_service_broker')
        self.assertTrue(delete_two_errands[1]['pre_delete'])
    def test_default_delete_errands(self, mock_get):
        mock_get.side_effect = [
            build_json_response(api_responses_1_8['pending_changes_delete'])
        ]

        product_changes = opsmgr.get_changes()
        changes = product_changes['product_changes']

        self.assertEquals(len(changes), 2)

        delete_one = changes[0]
        self.assertEquals(delete_one['guid'],
                          'key-value-tile-ce5a27ce8a93145ed200')
        self.assertEquals(delete_one['action'], 'delete')

        delete_one_errands = delete_one['errands']
        self.assertEquals(len(delete_one_errands), 1)
        self.assertEquals(delete_one_errands[0]['name'], 'delete-all')
        self.assertTrue(delete_one_errands[0]['pre_delete'])

        delete_two = changes[1]
        self.assertEquals(delete_two['guid'],
                          'db-on-demand-c8ace318b641342d8420')
        self.assertEquals(delete_two['action'], 'delete')

        delete_two_errands = delete_two['errands']
        self.assertEquals(len(delete_two_errands), 0)
    def test_custom_delete_errands(self, mock_get):
        resp_not_found = requests.Response()
        resp_not_found.status_code = 404

        mock_get.side_effect = [
            resp_not_found,
            build_json_response(api_responses_1_7['deployed_products']),
            build_json_response(api_responses_1_7['staged_products']),
            build_json_response(api_responses_1_7['broker_one_manifest']),
            build_json_response(api_responses_1_7['tile_two_manifest']),
            build_json_response(api_responses_1_7['deleting_manifest']),
        ]

        product_changes = opsmgr.get_changes(
            deploy_errands=['deploy-all'],
            delete_errands=['delete-all', 'delete-cleanup'])

        changes = product_changes['product_changes']
        self.assertEquals(len(changes), 3)

        delete = changes[0]
        self.assertEquals(delete['action'], 'delete')
        self.assertEquals(delete['guid'], 'deleting-ecb2884a79cf44f5849b')

        delete_errands = delete['errands']
        self.assertEquals(len(delete_errands), 2)
        self.assertEquals(delete_errands[0]['name'], 'delete-all')
        self.assertTrue(delete_errands[0]['pre_delete'])
        self.assertEquals(delete_errands[1]['name'], 'delete-cleanup')
        self.assertTrue(delete_errands[1]['pre_delete'])
    def test_custom_deploy_errands(self, mock_get):
        resp_not_found = requests.Response()
        resp_not_found.status_code = 404

        mock_get.side_effect = [
            resp_not_found,
            build_json_response(api_responses_1_7['deployed_products']),
            build_json_response(api_responses_1_7['staged_products']),
            build_json_response(api_responses_1_7['broker_one_manifest']),
            build_json_response(api_responses_1_7['tile_two_manifest']),
            build_json_response(api_responses_1_7['deleting_manifest']),
        ]

        product_changes = opsmgr.get_changes(
            deploy_errands=['deploy-all', 'configure-broker', 'missing'])

        changes = product_changes['product_changes']
        self.assertEquals(len(changes), 3)

        update_one = changes[1]
        self.assertEquals(update_one['guid'],
                          'service-broker-one-9ed445129ddee5b24bff')
        self.assertEquals(len(update_one['errands']), 1)

        update_two = changes[2]
        self.assertEquals(update_two['guid'], 'tile-two-ed10ef2a821e0e810f2c')
        change_two_errands = update_two['errands']
        self.assertEquals(len(change_two_errands), 2)
        self.assertEquals(change_two_errands[0]['name'], 'deploy-all')
        self.assertTrue(change_two_errands[0]['post_deploy'])
        self.assertEquals(change_two_errands[1]['name'], 'configure-broker')
        self.assertTrue(change_two_errands[1]['post_deploy'])
    def test_default_update_errands(self, mock_get):
        mock_get.side_effect = [
            build_json_response(api_responses_1_8['pending_changes_update'])
        ]

        product_changes = opsmgr.get_changes()
        changes = product_changes['product_changes']

        self.assertEquals(len(changes), 1)

        install = changes[0]
        self.assertEquals(install['guid'],
                          'service-broker-two-e8e9996bf23a455fbee6')
        self.assertEquals(install['action'], 'update')

        install_errands = install['errands']
        self.assertEquals(len(install_errands), 1)
        self.assertEquals(install_errands[0]['name'], 'deploy-all')
        self.assertTrue(install_errands[0]['post_deploy'])
    def test_default_install_errands(self, mock_get):
        mock_get.side_effect = [
            build_json_response(api_responses_1_8['pending_changes_install'])
        ]

        product_changes = opsmgr.get_changes()
        changes = product_changes['product_changes']

        self.assertEquals(len(changes), 1)

        install = changes[0]
        self.assertEquals(install['guid'],
                          'service-broker-one-8a46337545b088152272')
        self.assertEquals(install['action'], 'install')

        install_errands = install['errands']
        self.assertEquals(len(install_errands), 1)
        self.assertEquals(install_errands[0]['name'], 'deploy-all')
        self.assertTrue(install_errands[0]['post_deploy'])