public void SetServiceEndPointValueTest()
        {
            List<string> TestLog = new List<string>();
            configUpdater target = new configUpdater(TestConfigFile);
            const string endpointName = "DebtService.DebtService";
            const string endpointAddress = "net.msmq://test/private/debtcollection.svc";
            bool actual = target.SetServiceEndPointValue(endpointName, "address", endpointAddress, TestLog.Add);
            Assert.AreEqual(true, actual);

            XmlNode node = TestConfigFile.SelectSingleNode("//services");
            XmlElement Elem = (XmlElement)node.SelectSingleNode(String.Format("//service[@name='{0}']/endpoint", endpointName));
            string attribute = Elem.GetAttribute("address");
            Assert.AreEqual("net.msmq://test/private/debtcollection.svc", attribute);
        }
 /// <summary>
 /// Iterates through the settings retrieved from the Installer Settings Service, and updates the selected .config file
 /// </summary>
 /// <param name="session">The session object from the installer for log file writing</param>
 /// <param name="settings">A list of settings retrieved from the Installer Settings Service</param>
 /// <param name="configUpdater">Instance of the configUpdater Class to perform the updates on the file</param>
 private static void UpdateConfigurationFile(Action<string> sessionLog, List<ApplicationConfigSettings.Setting> settings, string configPath)
 {
     foreach (ApplicationConfigSettings.Setting setting in settings)
     {
         configUpdater thisConfig = new configUpdater() { docName = Path.Combine(configPath, setting.configFile) };
         bool result = false;
         switch (setting.settingType)
         {
             case ApplicationConfigSettings.SettingType.ConnectionString:
                 result = thisConfig.SetConnectionStringValue(setting.settingKey, setting.settingValue, sessionLog);
                 if (result)
                 {
                     sessionLog(String.Format("Connection String {0} updated", setting.settingName));
                 }
                 else
                 {
                     sessionLog(String.Format("Error: Connection String {0} update failed", setting.settingName));
                 }
                 break;
             case ApplicationConfigSettings.SettingType.AppSetting:
                 result = thisConfig.SetAppSettingValue(setting.settingKey, setting.settingValue, sessionLog);
                 if (result)
                 {
                     sessionLog(String.Format("App Setting {0} updated", setting.settingName));
                 }
                 else
                 {
                     sessionLog(String.Format("Error: App Setting {0} update failed", setting.settingName));
                 }
                 break;
             case ApplicationConfigSettings.SettingType.ClientEndpoint:
                 result = thisConfig.SetClientEndpointValue(setting.settingKey, setting.settingValue, sessionLog);
                 if (result)
                 {
                     sessionLog(String.Format("Client Endpoint {0} updated", setting.settingName));
                 }
                 else
                 {
                     sessionLog(String.Format("Error: Client Endpoint {0} update failed", setting.settingName));
                 }
                 break;
             case ApplicationConfigSettings.SettingType.ServiceEndpoint:
                 result = thisConfig.SetServiceEndPointValue(setting.settingName, setting.settingKey, setting.settingValue, sessionLog);
                 if (result)
                 {
                     sessionLog(String.Format("Service Endpoint {0} updated", setting.settingName));
                 }
                 else
                 {
                     sessionLog(String.Format("Error: Service Endpoint {0} update failed", setting.settingName));
                 }
                 break;
             case ApplicationConfigSettings.SettingType.ConfigurationSetting:
                 result = thisConfig.SetCustomConfigSectionAttribute(setting.settingName, setting.settingKey, setting.settingValue, sessionLog);
                 if (result)
                 {
                     sessionLog(String.Format("Configuration Section {0} updated", setting.settingName));
                 }
                 else
                 {
                     sessionLog(String.Format("Error: Configuration Section {0} update failed", setting.settingName));
                 }
                 break;
             case ApplicationConfigSettings.SettingType.ConfigurationValue:
                 result = thisConfig.SetCustomConfigSectionValue(setting.settingName, setting.settingKey, setting.settingValue, sessionLog);
                 if (result)
                 {
                     sessionLog(String.Format("Configuration Value {0} updated", setting.settingName));
                 }
                 else
                 {
                     sessionLog(String.Format("Error: Configuration Value {0} update failed", setting.settingName));
                 }
                 break;
             case ApplicationConfigSettings.SettingType.ServiceBaseAddress:
                 result = thisConfig.SetServiceBaseAddress(setting.settingName, setting.settingKey, setting.settingValue, sessionLog);
                 if (result)
                 {
                     sessionLog(String.Format("Service Base Address {0} updated", setting.settingName));
                 }
                 else
                 {
                     sessionLog(String.Format("Error: Service Base Address {0} update failed", setting.settingName));
                 }
                 break;
             case ApplicationConfigSettings.SettingType.XMLNodeValue:
                 result = thisConfig.SetXMLNodeValue(setting.settingKey, setting.settingValue, sessionLog);
                 if (result)
                 {
                     sessionLog(String.Format("XML Node value {0} updated", setting.settingName));
                 }
                 else
                 {
                     sessionLog(String.Format("Error: XML Node value {0} update failed", setting.settingName));
                 }
                 break;
             case ApplicationConfigSettings.SettingType.DefaultProxy:
                 result = thisConfig.SetDefaultProxy(setting.settingValue, sessionLog);
                 if (result)
                 {
                     sessionLog(String.Format("Default Proxy value {0} updated", setting.settingName));
                 }
                 else
                 {
                     sessionLog(String.Format("Error: Default Proxy value {0} update failed", setting.settingName));
                 }
                 break;
             case ApplicationConfigSettings.SettingType.XMLNodeAttribute:
                 result = thisConfig.SetXMLNodeAttributeValue(setting.settingName, setting.settingKey, setting.settingValue, sessionLog);
                 if (result)
                 {
                     sessionLog(String.Format("XML Node value {0} updated", setting.settingName));
                 }
                 else
                 {
                     sessionLog(String.Format("Error: XML Node value {0} update failed", setting.settingName));
                 }
                 break;
             default:
                 sessionLog("Error: An unknown setting was found, please check the configuration database");
                 break;
         }
     }
 }