Example #1
0
        public void GenerateCertificate(string appName, uint keySize, uint days, string organization)
        {
            // Arrange
            var          projectDirectory      = appName;
            const string certificateFolder     = "certificate-folder";
            const string certificateConfigPath = "certificate-config-file";
            const string privateKeyPEM         = "private-key-pem";

            _fileSystemMock.Setup(x => x.CombinePaths(projectDirectory, Constants.DirectoryName.Certificates)).Returns(certificateFolder);
            _fileSystemMock.Setup(x => x.CombinePaths(certificateFolder, Constants.FileName.CertificateConfig)).Returns(certificateConfigPath);
            _fileSystemMock.Setup(x => x.CombinePaths(certificateFolder, Constants.FileName.PrivateKeyPEM)).Returns(privateKeyPEM);
            _fileSystemMock.Setup(x => x.LoadTemplateFile(Resources.Resources.OpenSSLConfigTemplateFileName)).Returns(TemplateConfig);

            // Act
            _objectUnderTest.Generate(appName, string.Empty, keySize, days, organization);

            // Assert
            _fileSystemMock.Verify(fs => fs.CreateDirectory(certificateFolder), Times.Once);
            _fileSystemMock.Verify(fs => fs.CreateFile(certificateConfigPath, GetExpectedConfig(keySize, appName, organization)), Times.Once);
            _fileSystemMock.Verify(fs => fs.CallExecutable(Constants.ExecutableName.OpenSSL, certificateFolder, string.Format(Constants.ExternalExecutableArguments.OpenSSL, string.Empty, days)), Times.Once);
            _fileSystemMock.Verify(fs => fs.CallExecutable(Constants.ExecutableName.OpenSSL, certificateFolder, string.Format(Constants.ExternalExecutableArguments.OpenSSLConvertKeyFromPEM, Constants.FileName.PrivateKeyPEM, Constants.FileName.PrivateKeyDER)), Times.Once);
            _fileSystemMock.Verify(fs => fs.LoadTemplateFile(Resources.Resources.OpenSSLConfigTemplateFileName), Times.Once);
            _fileSystemMock.Verify(fs => fs.DeleteFile(privateKeyPEM), Times.Once);
            _loggerListenerMock.Verify(listener => listener.Info(string.Format(LoggingText.CertificateGeneratorSuccess, projectDirectory)));
        }