Ejemplo n.º 1
0
        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)
            });
Ejemplo n.º 2
0
        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);
            }
        }