public void SetEnterpriseDefaultScriptsTest_NoItemsScriptRegistryFile() { SqlSync.SqlBuild.SqlBuildFileHelper.DefaultScriptXmlFile = this.fileThree; DefaultScriptRegistryFile srFile1 = new DefaultScriptRegistryFile(); srFile1.ApplyToGroup = "MyGroup"; File.WriteAllText(this.fileOne, "<?xml version=\"1.0\" encoding=\"utf-8\" ?><DefaultScriptRegistry xmlns=\"http://schemas.mckechney.com/DefaultScriptRegistry.xsd\"></DefaultScriptRegistry>"); srFile1.FileName = Path.GetFileName(this.fileOne); srFile1.Path = Path.GetDirectoryName(this.fileOne); DefaultScriptRegistryFile srFile2 = new DefaultScriptRegistryFile(); srFile2.ApplyToGroup = "NotMyGroup"; srFile2.FileName = Path.GetFileName(this.fileTwo); srFile2.Path = Path.GetDirectoryName(this.fileTwo); List <DefaultScriptRegistryFile> defaultScriptRegs = new List <DefaultScriptRegistryFile>(); defaultScriptRegs.Add(srFile1); defaultScriptRegs.Add(srFile2); List <string> groupMemberships = new List <string>(new string[] { "Group1", "Group2", "MyGroup" }); bool expected = false; bool actual; actual = DefaultScriptHelper.SetEnterpriseDefaultScripts(defaultScriptRegs, groupMemberships); Assert.AreEqual(expected, actual); }
public void SetEnterpriseDefaultScriptsTest_NoMatchingScriptRegistryFile() { SqlSync.SqlBuild.SqlBuildFileHelper.DefaultScriptXmlFile = this.fileThree; DefaultScriptRegistryFile srFile1 = new DefaultScriptRegistryFile(); srFile1.ApplyToGroup = "ReallyNotMyGroup"; File.WriteAllText(this.fileOne, String.Format(Properties.Resources.DefaultScriptRegistryWithToken, this.fileOne)); srFile1.FileName = Path.GetFileName(this.fileOne); srFile1.Path = Path.GetDirectoryName(this.fileOne); DefaultScriptRegistryFile srFile2 = new DefaultScriptRegistryFile(); srFile2.ApplyToGroup = "NotMyGroup"; srFile2.FileName = Path.GetFileName(this.fileTwo); srFile2.Path = Path.GetDirectoryName(this.fileTwo); List <DefaultScriptRegistryFile> defaultScriptRegs = new List <DefaultScriptRegistryFile>(); defaultScriptRegs.Add(srFile1); defaultScriptRegs.Add(srFile2); List <string> groupMemberships = new List <string>(new string[] { "Group1", "Group2", "MyGroup" }); bool expected = false; bool actual; actual = DefaultScriptHelper.SetEnterpriseDefaultScripts(defaultScriptRegs, groupMemberships); Assert.AreEqual(expected, actual); }
public void GetApplicableDefaultScriptRegTest_EmptyGroups() { DefaultScriptRegistryFile srFile1 = new DefaultScriptRegistryFile(); srFile1.ApplyToGroup = "ReallyNotMyGroup"; srFile1.FileName = Path.GetFileName(this.fileOne); srFile1.Path = Path.GetDirectoryName(this.fileOne); DefaultScriptRegistryFile srFile2 = new DefaultScriptRegistryFile(); srFile2.ApplyToGroup = "NotMyGroup"; srFile2.FileName = Path.GetFileName(this.fileTwo); srFile2.Path = Path.GetDirectoryName(this.fileTwo); List <DefaultScriptRegistryFile> defaultScriptRegs = new List <DefaultScriptRegistryFile>(); defaultScriptRegs.Add(srFile1); defaultScriptRegs.Add(srFile2); List <string> groupMemberships = new List <string>(); DefaultScriptRegistryFile actual; actual = DefaultScriptHelper.GetApplicableDefaultScriptReg(defaultScriptRegs, groupMemberships); Assert.IsNull(actual); }
public void GetApplicableDefaultScriptRegTest_FoundOneMatch_SecondInList() { DefaultScriptRegistryFile srFile1 = new DefaultScriptRegistryFile(); srFile1.ApplyToGroup = "MyGroup"; srFile1.FileName = Path.GetFileName(this.fileOne); srFile1.Path = Path.GetDirectoryName(this.fileOne); DefaultScriptRegistryFile srFile2 = new DefaultScriptRegistryFile(); srFile2.ApplyToGroup = "NotMyGroup"; srFile2.FileName = Path.GetFileName(this.fileTwo); srFile2.Path = Path.GetDirectoryName(this.fileTwo); List <DefaultScriptRegistryFile> defaultScriptRegs = new List <DefaultScriptRegistryFile>(); defaultScriptRegs.Add(srFile2); defaultScriptRegs.Add(srFile1); List <string> groupMemberships = new List <string>(new string[] { "MyGroup", "Group1", "Group2" }); DefaultScriptRegistryFile actual; actual = DefaultScriptHelper.GetApplicableDefaultScriptReg(defaultScriptRegs, groupMemberships); Assert.IsNotNull(actual); Assert.IsInstanceOfType(actual, typeof(DefaultScriptRegistryFile)); Assert.AreEqual(Path.GetFileName(this.fileOne), actual.FileName); }
internal static DefaultScriptRegistryFile GetApplicableDefaultScriptReg(List <DefaultScriptRegistryFile> defaultScriptRegs, List <string> groupMemberships) { try { if (defaultScriptRegs == null || groupMemberships == null) { return(null); } var myDefaults = from defReg in defaultScriptRegs join grp in groupMemberships on defReg.ApplyToGroup.ToLower() equals grp.ToLower() select new { defReg, grp }; if (myDefaults.Count() == 0) { log.LogInformation($"No DefaultScriptRegistryFile matches found for groups: {String.Join("; ", groupMemberships.ToArray())}"); return(null); } else { DefaultScriptRegistryFile tmp = myDefaults.ToList()[0].defReg; log.LogDebug($"Matched default script registry: {tmp.FileName} to {myDefaults.ToList()[0].grp}"); return(tmp); } } catch (Exception exe) { log.LogError(exe, "Error matching DefaultScriptRegistryFile to group memberships"); return(null); } }
public static bool SetEnterpriseDefaultScripts(List <DefaultScriptRegistryFile> defaultScriptRegs, List <string> groupMemberships) { DefaultScriptRegistryFile defaultReg = GetApplicableDefaultScriptReg(defaultScriptRegs, groupMemberships); if (defaultReg == null) { return(false); } if (!ValidateLocalToEnterprise(SqlBuildFileHelper.DefaultScriptXmlFile, Path.Combine(defaultReg.Path, defaultReg.FileName))) { if (!CopyEnterpriseToLocal(SqlBuildFileHelper.DefaultScriptXmlFile, Path.Combine(defaultReg.Path, defaultReg.FileName))) { return(false); } } sb.DefaultScriptRegistry reg = GetEnterpriseRegistrySetting(SqlBuildFileHelper.DefaultScriptXmlFile); if (reg == null) { return(false); } if (reg.Items == null) { log.LogWarning($"The enterprise default script registry file contains no default script items! ({Path.Combine(defaultReg.Path, defaultReg.FileName)}"); return(false); } string localScriptPath = Path.GetDirectoryName(SqlBuildFileHelper.DefaultScriptXmlFile); foreach (sb.DefaultScript item in reg.Items) { if (!ValidateLocalToEnterprise(Path.Combine(localScriptPath, item.ScriptName), Path.Combine(defaultReg.Path, item.ScriptName))) { CopyEnterpriseToLocal(Path.Combine(localScriptPath, item.ScriptName), Path.Combine(defaultReg.Path, item.ScriptName)); } } return(true); }