def METHOD_NAME(self):
    self.preparer2.prepare.return_value = None
    self.preparer2.get_plugin_name.return_value = "my-plugin"
    self.preparer2.mock_add_spec(PluginPreparer)
    self.installer.preparers = [self.preparer, self.preparer2]
    node = self.installer.install(self.host, self.binaries, self.all_node_ips)
    self.assertEqual(node, "fake node")
    self.preparer.prepare.assert_has_calls([
        mock.call(self.host, self.binaries)
    ])
    self.preparer2.prepare.assert_has_calls([
        mock.call(self.host, self.binaries)
    ])
    self.preparer.get_config_vars.assert_has_calls([
        mock.call(self.host, "fake node", self.all_node_ips)
    ])
    self.preparer2.get_config_vars.assert_has_calls([
        mock.call(self.host, None, self.all_node_ips)
    ])
    expected_config_vars = {"fake": "config", "new": "var", "cluster_settings": {"plugin.mandatory": ["my-plugin"]}}
    self.installer.config_applier.apply_configs.assert_has_calls([
        mock.call(self.host, "fake node", ["/tmp"], expected_config_vars),
        mock.call(self.host, None, ["/fake"], expected_config_vars)
    ])
    self.installer.java_home_resolver.resolve_java_home.assert_has_calls([
        mock.call(self.host, self.provision_config_instance)
    ])
    self.preparer.invoke_install_hook.assert_has_calls([
        mock.call(self.host, BootstrapPhase.post_install, expected_config_vars, {"JAVA_HOME": "/path/to/java/home"})
    ])
    self.preparer2.invoke_install_hook.assert_has_calls([
        mock.call(self.host, BootstrapPhase.post_install, expected_config_vars, {"JAVA_HOME": "/path/to/java/home"})
    ])