Exemple #1
0
        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]);
            }
        }
Exemple #2
0
        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);
        }