public void ValidateSettings(params ClientCertItem[] expectedItems) { var settings = LoadSettingsFromConfigFile(); var clientCertificateProvider = new ClientCertificateProvider(settings); var existingItems = clientCertificateProvider.GetClientCertificates(); var comparison = Compare(expectedItems, existingItems); Assert.Empty(comparison.PresentInFirstOnly); Assert.Empty(comparison.PresentInSecondOnly); foreach (Tuple <ClientCertItem, ClientCertItem> tuple in comparison.PresentInBoth) { var expectedItem = tuple.Item1; var existItem = tuple.Item2; Assert.Equal(expectedItem.GetType(), existItem.GetType()); if (expectedItem is FileClientCertItem expectedFileClientCertItem && existItem is FileClientCertItem existFileClientCertItem) { Assert.Equal(expectedFileClientCertItem.FilePath, existFileClientCertItem.FilePath); Assert.Equal(expectedFileClientCertItem.Password, existFileClientCertItem.Password); Assert.Equal(expectedFileClientCertItem.IsPasswordIsClearText, existFileClientCertItem.IsPasswordIsClearText); }
public static void Run(ListClientCertArgs args, Func <ILogger> getLogger) { var settings = RunnerHelper.GetSettings(args.Configfile); var clientCertificateProvider = new ClientCertificateProvider(settings); var items = clientCertificateProvider.GetClientCertificates(); if (!items.Any()) { getLogger().LogInformation(Strings.NoClientCertificates); return; } var clientCertificatesLogs = new List <LogMessage>(); getLogger().LogInformation(Strings.RegsiteredClientCertificates); getLogger().LogInformation(string.Empty); var defaultIndentation = string.Empty.PadRight(PaddingWidth); for (var i = 0; i < items.Count; i++) { var item = items[i]; var builder = new StringBuilder(); var indexIndentation = $" {i + 1}.".PadRight(PaddingWidth); builder.AppendFormat(CultureInfo.CurrentCulture, Strings.ClientCertificatesLogTitle, indexIndentation, item.PackageSource, item.ElementName); builder.AppendLine(); switch (item) { case FileClientCertItem fileCertItem: { builder.AppendFormat(CultureInfo.CurrentCulture, Strings.ClientCertificatesFileCertFilePath, defaultIndentation, fileCertItem.FilePath); builder.AppendLine(); if (string.IsNullOrEmpty(fileCertItem.Password)) { builder.AppendFormat(CultureInfo.CurrentCulture, Strings.ClientCertificatesFileCertNoPassword, defaultIndentation); } else { builder.AppendFormat(CultureInfo.CurrentCulture, Strings.ClientCertificatesFileCertWithPassword, defaultIndentation); } builder.AppendLine(); break; } case StoreClientCertItem storeCertItem: builder.AppendFormat(CultureInfo.CurrentCulture, Strings.ClientCertificatesStoreCertStoreLocation, defaultIndentation, StoreClientCertItem.GetString(storeCertItem.StoreLocation)); builder.AppendLine(); builder.AppendFormat(CultureInfo.CurrentCulture, Strings.ClientCertificatesStoreCertStoreName, defaultIndentation, StoreClientCertItem.GetString(storeCertItem.StoreName)); builder.AppendLine(); builder.AppendFormat(CultureInfo.CurrentCulture, Strings.ClientCertificatesStoreCertFindBy, defaultIndentation, StoreClientCertItem.GetString(storeCertItem.FindType)); builder.AppendLine(); builder.AppendFormat(CultureInfo.CurrentCulture, Strings.ClientCertificatesStoreCertFindValue, defaultIndentation, storeCertItem.FindValue); builder.AppendLine(); break; } try { var certificates = item.Search(); foreach (var certificate in certificates) { builder.AppendFormat(CultureInfo.CurrentCulture, Strings.ClientCertificatesItemCertificateMessage, defaultIndentation, certificate.GetCertHashString()); builder.AppendLine(); } } catch (Exception e) { builder.AppendFormat(CultureInfo.CurrentCulture, Strings.ClientCertificatesItemCertificateError, defaultIndentation, e.GetBaseException().Message); builder.AppendLine(); } clientCertificatesLogs.Add(new LogMessage(LogLevel.Information, builder.ToString())); } getLogger().LogMessages(clientCertificatesLogs); }