public IPluginOptionViewModel Construct(IOption option) { if (option is IListOption) { var optionType = option.GetType().FindBaseType(typeof(ListOption <>)); if (optionType != null) { var tValue = optionType.GetGenericArguments().First(); var generic = _constructListOptionMethodInfo.MakeGenericMethod(tValue); var opt = generic.Invoke(this, new object?[] { option }); if (opt != null) { return((IPluginOptionViewModel)opt); } } } return(option switch { BooleanOption bOption => new PluginBooleanOptionViewModel(bOption, _localizationProvider), NumberOption nOption => new PluginNumberOptionViewModel(nOption, _localizationProvider), TextOption tOption => new PluginTextOptionViewModel(tOption, _localizationProvider), CommandOption cOption => new PluginCommandOptionViewModel(cOption, _localizationProvider), EncryptedTextOption eOption => new PluginEncryptedTextOptionViewModel(eOption, _localizationProvider), StringCollectionOption sOption => new PluginStringCollectionOptionViewModel(sOption, _localizationProvider), DisplayOption dOption => new PluginDisplayOptionViewModel(dOption, _localizationProvider), _ => ConstructDisplayOption(option) });
public void ValueShouldBeEncrypted() { // Arrange var plainValue = "test"; var sut = new EncryptedTextOption(plainValue, "name", "description"); // Act var actual = sut.Value; // Assert Assert.NotNull(actual); var decrypted = actual.PlainText(); Assert.Equal(plainValue, decrypted); }
public TfsConfiguration(IDispatcher uiDispatcher, ConfigurationFlags flags = ConfigurationFlags.None) : base(uiDispatcher) { Localizer = new TfsLocalizer(); _url = new TextOption(string.Empty, TextIds.UrlName, TextIds.UrlDescription); _collectionName = new TextOption(string.Empty, TextIds.CollectionNameName, TextIds.CollectionNameDescription); _project = new ProjectOption(); _repository = new RepositoryOption(); _authenticationType = new EnumOption <AuthenticationType>(AuthenticationType.Windows, TextIds.AuthenticationTypeName, TextIds.AuthenticationTypeDescription); _userName = new TextOption(string.Empty, TextIds.UserNameName, TextIds.UserNameDescription); _password = new EncryptedTextOption(string.Empty, TextIds.PasswordName, TextIds.PasswordDescription); _token = new EncryptedTextOption(string.Empty, TextIds.TokenName, TextIds.TokenDescription); UpdateAuthenticationFieldsVisibility(_authenticationType.Value); _authenticationType.ValueChanged += AuthenticationType_ValueChanged; if (flags.HasFlag(ConfigurationFlags.HideRepository)) { _repository.IsVisible = false; } var projectValueCalculator = CreateCalculator(FetchProjectsAsync, OnProjectsFetched); projectValueCalculator.Attach(_url, _collectionName); projectValueCalculator.Attach(_authenticationType, _token, _password, _userName); projectValueCalculator.Affect(_project); if (!flags.HasFlag(ConfigurationFlags.HideRepository)) { var repositoryValueCalculator = CreateCalculator(FetchRepositoriesAsync, OnRepositoriesFetched); repositoryValueCalculator.Attach(_url, _collectionName); repositoryValueCalculator.Attach(_project); repositoryValueCalculator.Attach(_authenticationType, _token, _password, _userName); repositoryValueCalculator.Affect(_repository); } }