public void Pass_UpdateVersionInfo() { // Setup var manifestMock = new Mock <IProjectManifest>(); var protectionLevel = Fakes.RandomEnum <ProtectionLevel>(); manifestMock.SetupGet(m => m.ProtectionLevel).Returns(protectionLevel); manifestMock.SetupAllProperties(); var manifest = manifestMock.Object; var project = new Project(); typeof(Project).GetField("_projectManifest", BindingFlags.NonPublic | BindingFlags.Instance)?.SetValue(project, manifest); typeof(Project).GetField("_isLoaded", BindingFlags.NonPublic | BindingFlags.Instance)?.SetValue(project, true); // Execute project.VersionMajor = Fakes.RandomInt(0, 100); project.VersionMinor = Fakes.RandomInt(0, 100); project.VersionBuild = Fakes.RandomInt(0, 100); project.VersionComments = Fakes.RandomString(); project.Description = Fakes.RandomString(); // Assert Assert.Equal(project.VersionMajor, manifest.VersionMajor); Assert.Equal(project.VersionMinor, manifest.VersionMinor); Assert.Equal(project.VersionBuild, manifest.VersionBuild); Assert.Equal(project.VersionComments, manifest.VersionComments); Assert.Equal(project.Description, manifest.Description); Assert.Equal(project.ProtectionLevel, manifest.ProtectionLevel); }
public void Pass_ProcessRecord() { // Setup var projectPath = Fakes.RandomString(); var workingFolder = Fakes.RandomString(); var protectionLevelString = new[] { nameof(ProtectionLevel.EncryptAllWithPassword), nameof(ProtectionLevel.EncryptSensitiveWithPassword) }[Fakes.RandomInt(0, 199) / 200]; var configuration = Fakes.RandomString(); var password = Fakes.RandomString(); var newPassword = Fakes.RandomString(); var outputFolder = Fakes.RandomString(); var releaseNotes = Fakes.RandomString(); var parametersCount = Fakes.RandomInt(1, 10); var parameters = new Dictionary <string, string>(); for (var i = 0; i < parametersCount; i++) { parameters.Add(Fakes.RandomString(), Fakes.RandomString()); } BuildArguments buildArguments = null; _builder.Setup(b => b.Build(It.IsAny <IBuildArguments>())).Callback((IBuildArguments ba) => { buildArguments = ba as BuildArguments; }); // Execute var powershellCmd = new SsisBuildPowershell { ProtectionLevel = protectionLevelString, Configuration = configuration, NewPassword = newPassword, OutputFolder = outputFolder, Parameters = new Hashtable(parameters), Password = password, ProjectPath = projectPath, ReleaseNotes = releaseNotes }; powershellCmd.ProcessRecordInternal(_builder.Object, workingFolder); // Assert Assert.NotNull(buildArguments); Assert.Equal(projectPath, buildArguments.ProjectPath); Assert.Equal(workingFolder, buildArguments.WorkingFolder); Assert.Equal(protectionLevelString, buildArguments.ProtectionLevel); Assert.Equal(configuration, buildArguments.Configuration); Assert.Equal(password, buildArguments.Password); Assert.Equal(newPassword, buildArguments.NewPassword); Assert.Equal(outputFolder, buildArguments.OutputFolder); Assert.Equal(releaseNotes, buildArguments.ReleaseNotes); Assert.NotNull(buildArguments.Parameters); Assert.Equal(parametersCount, buildArguments.Parameters.Count); foreach (var parameter in parameters) { Assert.True(buildArguments.Parameters.ContainsKey(parameter.Key)); Assert.Equal(parameter.Value, buildArguments.Parameters[parameter.Key]); } }
public void Pass_Execute_BuildArgumentsParametersUpdate() { // Setup var outputParameters = new List <TestBuildParameterUpdateResult>(); var inputParameers = new List <TestBuildParameterUpdateInput>(); var paramsCount = Fakes.RandomInt(20, 100); for (var i = 0; i < paramsCount; i++) { inputParameers.Add(new TestBuildParameterUpdateInput() { Value = Fakes.RandomString(), // to ensure it is unique Name = $"{Guid.NewGuid():N}-{Fakes.RandomString()}" }); } _projectMock.Setup(p => p.ProtectionLevel).Returns(ProtectionLevel.DontSaveSensitive); _projectMock.Setup(p => p.Parameters).Returns(new Dictionary <string, IParameter>()); _projectMock.Setup(p => p.UpdateParameter(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <ParameterSource>())).Callback( (string parameterName, string value, ParameterSource parameterSource) => { outputParameters.Add(new TestBuildParameterUpdateResult { Name = parameterName, Value = value, Source = parameterSource }); }); _buildArgumentsMock.Setup(ba => ba.ProjectPath).Returns(Path.GetTempFileName()); _buildArgumentsMock.Setup(ba => ba.Parameters).Returns(new ReadOnlyDictionary <string, string>(inputParameers.ToDictionary(i => i.Name, i => i.Value))); _buildArgumentsMock.Setup(ba => ba.Configuration).Returns(Fakes.RandomString()); var project = _projectMock.Object; var buildArguments = _buildArgumentsMock.Object; var logger = _loggerMock.Object; var builder = new Builder.Builder(logger, project); // Execute var exception = Record.Exception(() => builder.Build(buildArguments)); // Assert Assert.Null(exception); Assert.True(outputParameters.Count == paramsCount); for (var cnt = 0; cnt < paramsCount; cnt++) { Assert.True( outputParameters[cnt].Value == inputParameers[cnt].Value && outputParameters[cnt].Name == inputParameers[cnt].Name && outputParameters[cnt].Source == ParameterSource.Manual ); } }
public void Pass_Process_AllProperties() { // Setup var projectPath = Fakes.RandomString(); var workingFolder = Fakes.RandomString(); var protectionLevelString = new[] { nameof(ProtectionLevel.EncryptAllWithPassword), nameof(ProtectionLevel.EncryptSensitiveWithPassword) }[Fakes.RandomInt(0, 200) / 200]; var configuration = Fakes.RandomString(); var password = Fakes.RandomString(); var newPassword = Fakes.RandomString(); var outputFolder = Fakes.RandomString(); var releaseNotes = Fakes.RandomString(); var parametersCount = Fakes.RandomInt(0, 10); var parameters = new Dictionary <string, string>(); for (var i = 0; i < parametersCount; i++) { parameters.Add(Fakes.RandomString(), Fakes.RandomString()); } // Execute var buildArguments = new BuildArguments(workingFolder, projectPath, outputFolder, protectionLevelString, password, newPassword, configuration, releaseNotes, parameters); // Assert Assert.Equal(projectPath, buildArguments.ProjectPath); Assert.Equal(configuration, buildArguments.Configuration); Assert.Equal(protectionLevelString, buildArguments.ProtectionLevel); Assert.Equal(newPassword, buildArguments.NewPassword); Assert.Equal(password, buildArguments.Password); Assert.Equal(outputFolder, buildArguments.OutputFolder); Assert.Equal(releaseNotes, buildArguments.ReleaseNotes); Assert.Equal(workingFolder, buildArguments.WorkingFolder); Assert.NotNull(buildArguments.Parameters); Assert.Equal(parametersCount, buildArguments.Parameters.Count); foreach (var parameter in parameters) { Assert.True(buildArguments.Parameters.ContainsKey(parameter.Key)); Assert.Equal(parameter.Value, buildArguments.Parameters[parameter.Key]); } }
public void Fail_ProcessRecord() { // Setup var projectPath = Fakes.RandomString(); var workingFolder = Fakes.RandomString(); var protectionLevelString = new[] { nameof(ProtectionLevel.EncryptAllWithPassword), nameof(ProtectionLevel.EncryptSensitiveWithPassword) }[Fakes.RandomInt(0, 199) / 200]; var configuration = Fakes.RandomString(); var password = Fakes.RandomString(); var newPassword = Fakes.RandomString(); var outputFolder = Fakes.RandomString(); var releaseNotes = Fakes.RandomString(); var parametersCount = Fakes.RandomInt(0, 10); var parameters = new Dictionary <string, string>(); for (var i = 0; i < parametersCount; i++) { parameters.Add(Fakes.RandomString(), Fakes.RandomString()); } _builder.Setup(b => b.Build(It.IsAny <IBuildArguments>())).Throws(new Exception("TEST")); var powershellCmd = new SsisBuildPowershell { ProtectionLevel = protectionLevelString, Configuration = configuration, NewPassword = newPassword, OutputFolder = outputFolder, Parameters = new Hashtable(parameters), Password = password, ProjectPath = projectPath, ReleaseNotes = releaseNotes }; // Execute var exception = Record.Exception(() => powershellCmd.ProcessRecordInternal(_builder.Object, Fakes.RandomString())); Assert.NotNull(exception); Assert.IsType <Exception>(exception); Assert.Equal("TEST", exception.Message); }
internal static IEnumerable <object[]> ParameterData() { var protectionLevels = new[] { ProtectionLevel.DontSaveSensitive, ProtectionLevel.EncryptSensitiveWithPassword, ProtectionLevel.EncryptAllWithPassword }; var testsCount = Fakes.RandomInt(1, 20); for (var cnt = 0; cnt < testsCount; cnt++) { var paramsCount = Fakes.RandomInt(0, 20); var paramsData = new List <ParameterSetupData>(); for (var cnt1 = 0; cnt1 < paramsCount; cnt1++) { paramsData.Add(new ParameterSetupData() { Name = Fakes.RandomString(), Value = Fakes.RandomString(), DataType = DataType.String, Sensitive = Fakes.RandomBool() }); } var packages = new List <string>(); var packageNum = Fakes.RandomInt(0, 20); for (var cnt1 = 0; cnt1 < packageNum; cnt1++) { packages.Add(Fakes.RandomString()); } var connections = new List <string>(); var connectionsNum = Fakes.RandomInt(0, 20); for (var cnt1 = 0; cnt1 < connectionsNum; cnt1++) { connections.Add(Fakes.RandomString()); } //ProtectionLevel protectionLevel, //string versionMajor, //string versionMinor, //string versionComments, //string versionBuild, //string description, //string[] packages, //string[] connectionManagers, //ParameterSetupData[] parameters yield return(new object[] { protectionLevels[Fakes.RandomInt(0, 299) / 100], Fakes.RandomInt(0, 100), Fakes.RandomInt(0, 100), Fakes.RandomInt(0, 100) < 30 ? string.Empty : Fakes.RandomString(), Fakes.RandomInt(0, 100), Fakes.RandomInt(0, 100) < 30 ? string.Empty : Fakes.RandomString(), packages.ToArray(), connections.ToArray(), paramsData.ToArray() }); } }
public void Pass_Process_AllProperties_ExplicitProjectPathNoRoot() { // Setup var filePath = $"{Fakes.RandomString()}.dtproj"; var protectionLevelString = new[] { "EncryptAllWithPassword", "EncryptSensitiveWithPassword" }[Fakes.RandomInt(0, 199) / 200]; var args = new[] { Path.GetFileName(filePath), $"-{nameof(BuildArguments.Configuration)}", Fakes.RandomString(), $"-{nameof(BuildArguments.ProtectionLevel)}", protectionLevelString, $"-{nameof(BuildArguments.NewPassword)}", Fakes.RandomString(), $"-{nameof(BuildArguments.Password)}", Fakes.RandomString(), $"-{nameof(BuildArguments.OutputFolder)}", $".\\{Fakes.RandomString()}", $"-{nameof(BuildArguments.ReleaseNotes)}", $".\\{Fakes.RandomString()}", $"-Parameter:{Fakes.RandomString()}::{Fakes.RandomString()}", Fakes.RandomString(), $"-Parameter:{Fakes.RandomString()}::{Fakes.RandomString()}", Fakes.RandomString(), }; IBuildArguments buildArguments = null; _builderMock.Setup(b => b.Build(It.IsAny<IBuildArguments>())).Callback((IBuildArguments ba) => buildArguments = ba); // Execute Program.MainInternal(_builderMock.Object, args); // Assert Assert.NotNull(buildArguments); Assert.Equal(filePath, buildArguments.ProjectPath); Assert.Equal(args[2], buildArguments.Configuration); Assert.Equal(args[4], buildArguments.ProtectionLevel); Assert.Equal(args[6], buildArguments.NewPassword); Assert.Equal(args[8], buildArguments.Password); Assert.Equal(args[10], buildArguments.OutputFolder); Assert.Equal(args[12], buildArguments.ReleaseNotes); Assert.NotNull(buildArguments.Parameters); Assert.True(buildArguments.Parameters.Count == 2); Assert.Equal(args[14], buildArguments.Parameters[args[13].Split(new[] { ':' }, 2)[1]]); Assert.Equal(args[16], buildArguments.Parameters[args[15].Split(new[] { ':' }, 2)[1]]); }