コード例 #1
0
        public void SignCommandArgParsing_MultipleCertificateOptions(
            string certificatePath,
            string certificateSubjectName,
            string certificateFingerprint)
        {
            // Arrange
            var packagePath           = @"\\path\package.nupkg";
            var timestamper           = "https://timestamper.test";
            var mockSignCommandRunner = new Mock <ISignCommandRunner>();
            var mockConsole           = new Mock <IConsole>();
            var signCommand           = new SignCommand
            {
                Console                = mockConsole.Object,
                Timestamper            = timestamper,
                CertificatePath        = certificatePath,
                CertificateSubjectName = certificateSubjectName,
                CertificateFingerprint = certificateFingerprint
            };

            signCommand.Arguments.Add(packagePath);

            // Act & Assert
            var ex = Assert.Throws <ArgumentException>(() => signCommand.GetSignArgs());

            Assert.Equal(_multipleCertificateException, ex.Message);
        }
コード例 #2
0
        public void SignCommandArgParsing_ValidCertificateStoreName(string storeName)
        {
            // Arrange
            var packagePath            = @"\\path\package.nupkg";
            var timestamper            = "https://timestamper.test";
            var certificateFingerprint = new Guid().ToString();
            var parsable    = Enum.TryParse(storeName, ignoreCase: true, result: out StoreName parsedStoreName);
            var mockConsole = new Mock <IConsole>();
            var signCommand = new SignCommand
            {
                Console                = mockConsole.Object,
                Timestamper            = timestamper,
                CertificateFingerprint = certificateFingerprint,
                CertificateStoreName   = storeName
            };

            signCommand.Arguments.Add(packagePath);

            // Act & Assert
            Assert.True(parsable);
            var signArgs = signCommand.GetSignArgs();

            Assert.Equal(parsedStoreName, signArgs.CertificateStoreName);
            Assert.Equal(StoreLocation.CurrentUser, signArgs.CertificateStoreLocation);
        }
コード例 #3
0
        public void SignCommandArgParsing_ValidTimestampHashAlgorithm(string timestampHashAlgorithm)
        {
            // Arrange
            var packagePath     = @"\\path\package.nupkg";
            var timestamper     = "https://timestamper.test";
            var certificatePath = @"\\path\file.pfx";
            var parsable        = Enum.TryParse(timestampHashAlgorithm, ignoreCase: true, result: out HashAlgorithmName parsedTimestampHashAlgorithm);
            var mockConsole     = new Mock <IConsole>();
            var signCommand     = new SignCommand
            {
                Console                = mockConsole.Object,
                Timestamper            = timestamper,
                CertificatePath        = certificatePath,
                TimestampHashAlgorithm = timestampHashAlgorithm
            };

            signCommand.Arguments.Add(packagePath);

            // Act & Assert
            Assert.True(parsable);
            var signArgs = signCommand.GetSignArgs();

            Assert.Equal(HashAlgorithmName.SHA256, signArgs.SignatureHashAlgorithm);
            Assert.Equal(parsedTimestampHashAlgorithm, signArgs.TimestampHashAlgorithm);
        }
コード例 #4
0
        public void TestColor()
        {
            Action      action = VP.Create().Sign(color: Color.Red);
            SignCommand sign   = action.Create.GetCommandOfType <SignCommand>();

            Assert.IsNotNull(sign);
            Assert.IsTrue(sign.ForeColor.Equals(System.Drawing.Color.Red));
        }
コード例 #5
0
 private void RaiseCommandsCanExecute()
 {
     SignCommand.RaiseCanExecuteChanged();
     BuildCommand.RaiseCanExecuteChanged();
     ChooseFileCommand.RaiseCanExecuteChanged();
     ChooseFolderCommand.RaiseCanExecuteChanged();
     InstallFrameworkCommand.RaiseCanExecuteChanged();
     ShowSearchWindowCommand.RaiseCanExecuteChanged();
 }
コード例 #6
0
        public void SignCommandArgParsing_ValidArgs_CertSubjectNameAsync()
        {
            //Debugger.Launch();
            // Arrange
            var packagePath            = @"\\path\package.nupkg";
            var timestamper            = "https://timestamper.test";
            var certificateSubjectName = new Guid().ToString();
            var hashAlgorithm          = "sha256";

            Enum.TryParse(hashAlgorithm, ignoreCase: true, result: out HashAlgorithmName parsedHashAlgorithm);
            var timestampHashAlgorithm = "sha512";

            Enum.TryParse(timestampHashAlgorithm, ignoreCase: true, result: out HashAlgorithmName parsedTimestampHashAlgorithm);
            var storeName = "CertificateAuthority";

            Enum.TryParse(storeName, ignoreCase: true, result: out StoreName parsedStoreName);
            var storeLocation = "LocalMachine";

            Enum.TryParse(storeLocation, ignoreCase: true, result: out StoreLocation parsedStoreLocation);
            var nonInteractive = true;
            var overwrite      = true;
            var outputDir      = @".\test\output\path";
            var mockConsole    = new Mock <IConsole>();

            mockConsole.Setup(c => c.Verbosity).Returns(Verbosity.Detailed);

            var signCommand = new SignCommand
            {
                Console                  = mockConsole.Object,
                Timestamper              = timestamper,
                CertificateSubjectName   = certificateSubjectName,
                CertificateStoreName     = storeName,
                CertificateStoreLocation = storeLocation,
                HashAlgorithm            = hashAlgorithm,
                TimestampHashAlgorithm   = timestampHashAlgorithm,
                OutputDirectory          = outputDir,
                NonInteractive           = nonInteractive,
                Overwrite                = overwrite,
            };

            signCommand.Arguments.Add(packagePath);

            // Act & Assert
            var signArgs = signCommand.GetSignArgs();

            Assert.Null(signArgs.CertificatePath);
            Assert.Null(signArgs.CertificateFingerprint);
            Assert.Equal(certificateSubjectName, signArgs.CertificateSubjectName, StringComparer.Ordinal);
            Assert.Equal(parsedStoreLocation, signArgs.CertificateStoreLocation);
            Assert.Equal(parsedStoreName, signArgs.CertificateStoreName);
            Assert.Equal(mockConsole.Object, signArgs.Logger);
            Assert.Equal(nonInteractive, signArgs.NonInteractive);
            Assert.Equal(overwrite, signArgs.Overwrite);
            Assert.Equal(packagePath, signArgs.PackagePath, StringComparer.Ordinal);
            Assert.Equal(timestamper, signArgs.Timestamper, StringComparer.Ordinal);
            Assert.Equal(outputDir, signArgs.OutputDirectory, StringComparer.Ordinal);
        }
コード例 #7
0
 public NuGetSignService(IKeyVaultService keyVaultService,
                         ILogger <NuGetSignService> logger,
                         ITelemetryLogger telemetryLogger)
 {
     this.keyVaultService = keyVaultService;
     this.logger          = logger;
     this.telemetryLogger = telemetryLogger;
     signToolName         = nameof(NuGetSignService);
     signCommand          = new SignCommand(logger);
 }
コード例 #8
0
        public void SignCommandArgParsing_NoPackagePath()
        {
            // Arrange
            var mockSignCommandRunner = new Mock <ISignCommandRunner>();
            var mockConsole           = new Mock <IConsole>();
            var signCommand           = new SignCommand
            {
                Console = mockConsole.Object,
            };

            // Act & Assert
            var ex = Assert.Throws <ArgumentException>(() => signCommand.GetSignArgs());

            Assert.Equal(_noPackageException, ex.Message);
        }
コード例 #9
0
        public void TestSignWithDefaultValues()
        {
            Action      action = Action.Parse("create sign");
            SignCommand sign   = action.Create.GetCommandOfType <SignCommand>();

            Assert.IsNotNull(sign);
            Assert.AreEqual("sign", sign.CommandName, true);
            Assert.AreEqual(String.Empty, sign.Text);
            Assert.AreEqual(Color.DefaultSignBackColor, sign.BackColor);
            Assert.AreEqual(Color.White, sign.ForeColor);
            Assert.AreEqual(String.Empty, sign.TargetName);
            Assert.AreEqual(TextAlignment.Center, sign.Alignment);
            Assert.IsFalse(sign.Shadow);
            Assert.IsFalse(sign.IsGlobal);
            Assert.IsFalse(sign.IsLocked);
        }
コード例 #10
0
        public void TestSignWithCustomValues()
        {
            Action action =
                Action.Parse(
                    "create sign color=red \"Hello World\" bcolor=white align=left shadow name=foo global lock");
            SignCommand sign = action.Create.GetCommandOfType <SignCommand>();

            Assert.IsNotNull(sign);
            Assert.AreEqual("sign", sign.CommandName, true);
            Assert.AreEqual("Hello World", sign.Text);
            Assert.AreEqual(Color.White, sign.BackColor);
            Assert.AreEqual(Color.Red, sign.ForeColor);
            Assert.AreEqual("foo", sign.TargetName);
            Assert.AreEqual(TextAlignment.Left, sign.Alignment);
            Assert.IsTrue(sign.Shadow);
            Assert.IsTrue(sign.IsGlobal);
            Assert.IsTrue(sign.IsLocked);
        }
コード例 #11
0
        public void SignCommandArgParsing_InvalidTimestampHashAlgorithm()
        {
            // Arrange
            var packagePath            = @"\\path\package.nupkg";
            var timestamper            = "https://timestamper.test";
            var certificatePath        = @"\\path\file.pfx";
            var timestampHashAlgorithm = "MD5";
            var mockConsole            = new Mock <IConsole>();
            var signCommand            = new SignCommand
            {
                Console                = mockConsole.Object,
                Timestamper            = timestamper,
                CertificatePath        = certificatePath,
                TimestampHashAlgorithm = timestampHashAlgorithm
            };

            signCommand.Arguments.Add(packagePath);

            // Act & Assert
            var ex = Assert.Throws <ArgumentException>(() => signCommand.GetSignArgs());

            Assert.Equal(string.Format(_invalidArgException, nameof(signCommand.TimestampHashAlgorithm)), ex.Message);
        }
コード例 #12
0
        public void SignCommandArgParsing_InvalidCertificateStoreLocation()
        {
            // Arrange
            var packagePath            = @"\\path\package.nupkg";
            var timestamper            = "https://timestamper.test";
            var certificateFingerprint = new Guid().ToString();
            var storeLocation          = "random_location";
            var mockConsole            = new Mock <IConsole>();
            var signCommand            = new SignCommand
            {
                Console                  = mockConsole.Object,
                Timestamper              = timestamper,
                CertificateFingerprint   = certificateFingerprint,
                CertificateStoreLocation = storeLocation
            };

            signCommand.Arguments.Add(packagePath);

            // Act & Assert
            var ex = Assert.Throws <ArgumentException>(() => signCommand.GetSignArgs());

            Assert.Equal(string.Format(_invalidArgException, nameof(signCommand.CertificateStoreLocation)), ex.Message);
        }
コード例 #13
0
        private void SignCommandArgs(Action <Mock <ISignCommandRunner>, CommandLineApplication, Func <LogLevel>, Func <SignArgs> > verify)
        {
            // Arrange
            var logLevel          = LogLevel.Information;
            var logger            = new TestCommandOutputLogger();
            var testApp           = new CommandLineApplication();
            var mockCommandRunner = new Mock <ISignCommandRunner>();

            SignArgs parsedArgs = null;

            mockCommandRunner
            .Setup(m => m.ExecuteCommandAsync(It.IsAny <SignArgs>()))
            .Callback <SignArgs>(x => parsedArgs = x)
            .Returns(Task.FromResult(0));

            testApp.Name = "dotnet nuget_test";
            SignCommand.Register(testApp,
                                 () => logger,
                                 ll => logLevel = ll,
                                 () => mockCommandRunner.Object);

            // Act & Assert
            verify(mockCommandRunner, testApp, () => logLevel, () => parsedArgs);
        }
コード例 #14
0
 public virtual void ExecuteSign(SignCommand command) {
     command.Sender = NoticeScreen;
     NoticeScreen.Sign.OnNext(command);
 }
コード例 #15
0
 public virtual void SignHandler(SignCommand command) {
     this.Sign(command.Sender as NoticeScreenViewModel);
 }