public void Pass_SetProtectionLevel(ProtectionLevel protectionLevel, int versionMajor, int versionMinor, string versionComments, int versionBuild, string description, string[] packages, string[] connectionManagers, ParameterSetupData[] parameters) { // Setup var xml = XmlGenerators.ProjectManifestFile(protectionLevel, versionMajor, versionMinor, versionComments, versionBuild, description, packages, connectionManagers, parameters); var path = Path.Combine(_workingFolder, Guid.NewGuid().ToString("N")); File.WriteAllText(path, xml); var projectManifest = new ProjectManifest(); projectManifest.Initialize(path, null); var desiredProtectionLevel = projectManifest.ProtectionLevel; //== ProtectionLevel.DontSaveSensitive //? ProtectionLevel.DontSaveSensitive // : ProtectionLevel.ServerStorage; string savedXml; using (var stream = new MemoryStream()) { projectManifest.Save(stream, desiredProtectionLevel, Fakes.RandomString()); stream.Flush(); stream.Position = 0; var sr = new StreamReader(stream); savedXml = sr.ReadToEnd(); } // Execute var testXmlDoc = new XmlDocument(); testXmlDoc.LoadXml(savedXml); var projectProtectionLevel = testXmlDoc.DocumentElement?.Attributes["SSIS:ProtectionLevel"]?.Value; var packageProtectionLevelNodes = testXmlDoc.SelectNodes("//SSIS:Properties/SSIS:Property[@SSIS:Name = \"ProtectionLevel\"]", testXmlDoc.GetNameSpaceManager()); // Assert ProtectionLevel testProtectionLevel; Assert.True(Enum.TryParse(projectProtectionLevel, out testProtectionLevel)); Assert.Equal(desiredProtectionLevel, testProtectionLevel); Assert.NotNull(packageProtectionLevelNodes); foreach (XmlElement packageProtectionElement in packageProtectionLevelNodes) { Assert.Equal(desiredProtectionLevel, (ProtectionLevel)int.Parse(packageProtectionElement.InnerText)); } Assert.Equal(desiredProtectionLevel, projectManifest.ProtectionLevel); }
public void Pass_SetVersion(ProtectionLevel protectionLevel, int versionMajor, int versionMinor, string versionComments, int versionBuild, string description, string[] packages, string[] connectionManagers, ParameterSetupData[] parameters) { // Setup var xml = XmlGenerators.ProjectManifestFile(protectionLevel, versionMajor, versionMinor, versionComments, versionBuild, description, packages, connectionManagers, parameters); var path = Path.Combine(_workingFolder, Guid.NewGuid().ToString("N")); File.WriteAllText(path, xml); // Execute var projectManifest = new ProjectManifest(); projectManifest.Initialize(path, null); var newVersionMajor = projectManifest.VersionMajor * 2; var newVersionMinor = projectManifest.VersionMinor * 2; var newVersionBuild = projectManifest.VersionBuild * 2; var newVersionComments = Fakes.RandomString(); var newDescription = Fakes.RandomString(); projectManifest.VersionBuild = newVersionBuild; projectManifest.VersionMajor = newVersionMajor; projectManifest.VersionMinor = newVersionMinor; projectManifest.VersionComments = newVersionComments; projectManifest.Description = newDescription; string savedXml; using (var stream = new MemoryStream()) { projectManifest.Save(stream, ProtectionLevel.DontSaveSensitive, Fakes.RandomString()); stream.Flush(); stream.Position = 0; var sr = new StreamReader(stream); savedXml = sr.ReadToEnd(); } var testXmlDoc = new XmlDocument(); testXmlDoc.LoadXml(savedXml); var versionMajorNodes = testXmlDoc.SelectNodes("/SSIS:Project/SSIS:Properties/SSIS:Property[@SSIS:Name = \"VersionMajor\"]", testXmlDoc.GetNameSpaceManager()); var versionMinorNodes = testXmlDoc.SelectNodes("/SSIS:Project/SSIS:Properties/SSIS:Property[@SSIS:Name = \"VersionMinor\"]", testXmlDoc.GetNameSpaceManager()); var versionBuildNodes = testXmlDoc.SelectNodes("/SSIS:Project/SSIS:Properties/SSIS:Property[@SSIS:Name = \"VersionBuild\"]", testXmlDoc.GetNameSpaceManager()); var versionCommentsNodes = testXmlDoc.SelectNodes("/SSIS:Project/SSIS:Properties/SSIS:Property[@SSIS:Name = \"VersionComments\"]", testXmlDoc.GetNameSpaceManager()); var descriptionNodes = testXmlDoc.SelectNodes("/SSIS:Project/SSIS:Properties/SSIS:Property[@SSIS:Name = \"Description\"]", testXmlDoc.GetNameSpaceManager()); // Assert Assert.NotNull(versionMajorNodes); foreach (XmlElement versionMajorNode in versionMajorNodes) { Assert.Equal(newVersionMajor, int.Parse(versionMajorNode.InnerText)); } Assert.NotNull(versionMinorNodes); foreach (XmlElement versionMinorNode in versionMinorNodes) { Assert.Equal(newVersionMinor, int.Parse(versionMinorNode.InnerText)); } Assert.NotNull(versionBuildNodes); foreach (XmlElement versionBuildNode in versionBuildNodes) { Assert.Equal(newVersionBuild, int.Parse(versionBuildNode.InnerText)); } Assert.NotNull(versionCommentsNodes); foreach (XmlElement versionCommentsNode in versionCommentsNodes) { Assert.Equal(newVersionComments, versionCommentsNode.InnerText); } Assert.NotNull(descriptionNodes); foreach (XmlElement descriptionNode in descriptionNodes) { Assert.Equal(newDescription, descriptionNode.InnerText); } Assert.Equal(newVersionBuild, projectManifest.VersionBuild); Assert.Equal(newVersionMajor, projectManifest.VersionMajor); Assert.Equal(newVersionMinor, projectManifest.VersionMinor); Assert.Equal(newVersionComments, projectManifest.VersionComments); Assert.Equal(newDescription, projectManifest.Description); }