public void Fail_InvalidVersionBuild() { // Setup var xml = XmlGenerators.ProjectManifestFile(ProtectionLevel.DontSaveSensitive, 1, 1, Fakes.RandomString(), 1, Fakes.RandomString(), new string[] { }, new string[] { }, new ParameterSetupData[] { }); var path = Path.Combine(_workingFolder, Guid.NewGuid().ToString("N")); var xmlDoc = new XmlDocument(); xmlDoc.LoadXml(xml); var versionBuildNode = xmlDoc.SelectSingleNode("/SSIS:Project/SSIS:Properties/SSIS:Property[@SSIS:Name = \"VersionBuild\"]", xmlDoc.GetNameSpaceManager()); if (versionBuildNode != null) { versionBuildNode.InnerText = Fakes.RandomString(); } ; File.WriteAllText(path, xmlDoc.OuterXml); // Execute var projectManifest = new ProjectManifest(); var exception = Record.Exception(() => projectManifest.Initialize(path, null)); // Assert Assert.NotNull(exception); Assert.IsType <InvalidXmlException>(exception); Assert.True(exception.Message.Contains("Build")); }
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_New(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); // Assert Assert.NotNull(projectManifest); foreach (var parameterSetupData in parameters) { var fullName = $"Project::{parameterSetupData.Name}"; Assert.True(projectManifest.Parameters.ContainsKey(fullName)); Assert.Equal(parameterSetupData.Value, projectManifest.Parameters[fullName].Value); Assert.Equal(parameterSetupData.Sensitive, projectManifest.Parameters[fullName].Sensitive); Assert.Equal(parameterSetupData.DataType.ToString("G"), projectManifest.Parameters[fullName].ParameterDataType.Name); } foreach (var package in packages) { Assert.True(projectManifest.PackageNames.Contains(package)); foreach (var parameterSetupData in parameters) { var fullName = $"{package}::{parameterSetupData.Name}"; Assert.True(projectManifest.Parameters.ContainsKey(fullName)); Assert.Equal(parameterSetupData.Value, projectManifest.Parameters[fullName].Value); Assert.Equal(parameterSetupData.Sensitive, projectManifest.Parameters[fullName].Sensitive); Assert.Equal(parameterSetupData.DataType.ToString("G"), projectManifest.Parameters[fullName].ParameterDataType.Name); } } foreach (var connectionManager in connectionManagers) { Assert.True(projectManifest.ConnectionManagerNames.Contains(connectionManager)); } Assert.Equal(versionMajor, projectManifest.VersionMajor); Assert.Equal(versionMinor, projectManifest.VersionMinor); Assert.Equal(versionBuild, projectManifest.VersionBuild); Assert.Equal(versionComments, projectManifest.VersionComments); Assert.Equal(description, projectManifest.Description); Assert.Equal(protectionLevel, projectManifest.ProtectionLevel); }
public void Fail_UserKeyProtectionLevel(ProtectionLevel protectionLevel) { // Setup var xml = XmlGenerators.ProjectManifestFile(protectionLevel, 1, 1, Fakes.RandomString(), 1, Fakes.RandomString(), new string[] {}, new string[] {}, new ParameterSetupData[] {}); var path = Path.Combine(_workingFolder, Guid.NewGuid().ToString("N")); File.WriteAllText(path, xml); // Execute var projectManifest = new ProjectManifest(); var exception = Record.Exception(() => projectManifest.Initialize(path, null)); // Assert Assert.NotNull(exception); Assert.IsType <InvalidProtectionLevelException>(exception); Assert.Equal(((InvalidProtectionLevelException)exception).ProtectionLevel, protectionLevel); }
public void Fail_InvalidProtectionLevelString(ProtectionLevel protectionLevel, int versionMajor, int versionMinor, string versionComments, int versionBuild, string description, string[] packages, string[] connectionManagers, ParameterSetupData[] parameters) { // Setup var projectManifestXmlDoc = new XmlDocument(); var xml = XmlGenerators.ProjectManifestFile(protectionLevel, versionMajor, versionMinor, versionComments, versionBuild, description, packages, connectionManagers, parameters); projectManifestXmlDoc.LoadXml(xml); projectManifestXmlDoc.DocumentElement.Attributes["SSIS:ProtectionLevel"].Value = Fakes.RandomString(); var path = Path.Combine(_workingFolder, Guid.NewGuid().ToString("N")); File.WriteAllText(path, projectManifestXmlDoc.OuterXml); // Execute var projectManifest = new ProjectManifest(); var exception = Record.Exception(() => projectManifest.Initialize(path, null)); // Assert Assert.NotNull(exception); Assert.IsType <InvalidXmlException>(exception); Assert.True(exception.Message.Contains("Invalid Protection Level")); }
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); }
internal void CreateDtprojFiles(string projectName, string configurationName) { var packages = new[] { $"p_{Fakes.RandomString()}.dtsx", $"p_{Fakes.RandomString()}.dtsx" }; var connections = new[] { $"c_{Fakes.RandomString()}.conmgr", $"c_{Fakes.RandomString()}.conmgr" }; var paramName = Fakes.RandomString(); var projectParamsXml = XmlGenerators.ProjectParamsFile(new List <ParameterSetupData>() { { new ParameterSetupData { Value = Fakes.RandomString(), Name = paramName, DataType = DataType.String, Sensitive = false } } }); var projectManifestXml = XmlGenerators.ProjectManifestFile(ProtectionLevel.DontSaveSensitive, 1, 2, Fakes.RandomString(), 3, "Descr", packages, connections, new[] { new ParameterSetupData() { Value = Fakes.RandomString(), DataType = DataType.String, Name = Fakes.RandomString(), Sensitive = false }, }); var configurationXml = XmlGenerators.ConfigurationFile(configurationName, new Dictionary <string, string>() { { $"Project::{paramName}", Fakes.RandomString() } }); var configurationsXmlDoc = new XmlDocument(); configurationsXmlDoc.LoadXml(configurationXml); var userConfigurationXml = XmlGenerators.UserConfigurationFile(configurationName, new Dictionary <string, string>() { { $"Project::{paramName}", Fakes.RandomString() } }); var dtprojXml = $@"<?xml version=""1.0"" encoding=""utf-8""?> <Project xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema""> <DeploymentModel>Project</DeploymentModel> <DeploymentModelSpecificContent> <Manifest> {projectManifestXml} </Manifest> </DeploymentModelSpecificContent> <Configurations> {configurationsXmlDoc.SelectSingleNode("//Configuration", configurationsXmlDoc.GetNameSpaceManager())?.OuterXml} </Configurations> </Project>"; var dtproj = projectName; File.WriteAllText(Path.Combine(_workingFolder, dtproj), dtprojXml); File.WriteAllText(Path.Combine(_workingFolder, "Project.params"), projectParamsXml); File.WriteAllText($"{Path.Combine(_workingFolder, dtproj)}.user", userConfigurationXml); foreach (var package in packages) { var packageXml = XmlGenerators.PackageFile(Fakes.RandomString(), (int)ProtectionLevel.EncryptSensitiveWithPassword, Fakes.RandomString()); File.WriteAllText($"{Path.Combine(_workingFolder, package)}", packageXml); } foreach (var connection in connections) { var projectConnectionsXml = XmlGenerators.ProjectConnectionsFile(); File.WriteAllText($"{Path.Combine(_workingFolder, connection)}", projectConnectionsXml); } }