Beispiel #1
0
        public void ProcessParametersRootTest()
        {
            var parameters = new List <Parameter>
            {
                new Parameter {
                    Name = "/p1", Value = "p1"
                },
                new Parameter {
                    Name = "p2", Value = "p2"
                },
            };

            const string path = "/";

            foreach (var parameter in parameters)
            {
                _parameterProcessorMock.Setup(processor => processor.IncludeParameter(parameter, path)).Returns(true);
                _parameterProcessorMock.Setup(processor => processor.GetKey(parameter, path)).Returns(parameter.Value);
                _parameterProcessorMock.Setup(processor => processor.GetValue(parameter, path)).Returns(parameter.Value);
            }

            var data = SystemsManagerProcessor.ProcessParameters(parameters, path, _parameterProcessorMock.Object);

            Assert.All(data, item => Assert.Equal(item.Value, item.Key));

            _parameterProcessorMock.VerifyAll();
        }
Beispiel #2
0
        // If 1) reload flag is set to true and 2) OnLoadException handler is not set,
        // all exceptions raised during OnReload() will be ignored.
        private async Task LoadAsync(bool reload, bool preFetch = false)
        {
            // Wait for any already running load operations to complete before starting another.
            // This can happen if the framework calls Load before the pre-fetch completes.
            await Lock.WaitAsync().ConfigureAwait(false);

            try
            {
                // Check if the Data has been prefetched. If this is a reload,
                // ignore pre-fetched data. We only prefetch during initialization.
                if (DataHasBeenPreFetched && !reload)
                {
                    return;
                }

                var newData = await SystemsManagerProcessor.GetDataAsync().ConfigureAwait(false) ?? new Dictionary <string, string>();

                if (!Data.EquivalentTo(newData))
                {
                    Data = newData;

                    OnReload();
                }
            }
            catch (Exception ex)
            {
                if (Source.Optional)
                {
                    return;
                }

                var ignoreException = reload;
                if (Source.OnLoadException != null)
                {
                    var exceptionContext = new SystemsManagerExceptionContext
                    {
                        Provider  = this,
                        Exception = ex,
                        Reload    = reload
                    };
                    Source.OnLoadException(exceptionContext);
                    ignoreException = exceptionContext.Ignore;
                }

                if (!ignoreException)
                {
                    throw;
                }
            }
            finally
            {
                // Always reset the flag and release the lock
                DataHasBeenPreFetched = preFetch;
                Lock.Release();
            }
        }
Beispiel #3
0
        public void ProcessParametersTest()
        {
            foreach (var parameter in _parameters)
            {
                _parameterProcessorMock.Setup(processor => processor.IncludeParameter(parameter, Path)).Returns(true);
                _parameterProcessorMock.Setup(processor => processor.GetKey(parameter, Path)).Returns(parameter.Value);
                _parameterProcessorMock.Setup(processor => processor.GetValue(parameter, Path)).Returns(parameter.Value);
            }

            var data = SystemsManagerProcessor.ProcessParameters(_parameters, Path, _parameterProcessorMock.Object);

            Assert.All(data, item => Assert.Equal(item.Value, item.Key));

            _parameterProcessorMock.VerifyAll();
        }
Beispiel #4
0
        public void AddPrefixTest(string prefix)
        {
            var data = new Dictionary <string, string> {
                { "Key", "Value" }
            };
            var output = SystemsManagerProcessor.AddPrefix(data, prefix);

            if (prefix == null)
            {
                Assert.Equal(data, output);
            }
            else
            {
                foreach (var item in output)
                {
                    Assert.StartsWith($"{prefix}:", item.Key);
                }
            }
        }
Beispiel #5
0
        public void LoadTest()
        {
            foreach (var parameter in _parameters)
            {
                _parameterProcessorMock.Setup(processor => processor.IncludeParameter(parameter, Path)).Returns(true);
                _parameterProcessorMock.Setup(processor => processor.GetKey(parameter, Path)).Returns(parameter.Value);
            }

            var getData = SystemsManagerProcessor.ProcessParameters(_parameters, Path, _parameterProcessorMock.Object);

            _systemsManagerProcessorMock.Setup(p => p.GetDataAsync()).ReturnsAsync(() => getData);

            _provider.Load();

            foreach (var parameter in _parameters)
            {
                Assert.True(_provider.TryGet(parameter.Value, out _));
            }

            _parameterProcessorMock.VerifyAll();
        }
        // If 1) reload flag is set to true and 2) OnLoadException handler is not set,
        // all exceptions raised during OnReload() will be ignored.
        private async Task LoadAsync(bool reload)
        {
            try
            {
                var newData = await SystemsManagerProcessor.GetDataAsync().ConfigureAwait(false) ?? new Dictionary <string, string>();

                if (!Data.EquivalentTo(newData))
                {
                    Data = newData;

                    OnReload();
                }
            }
            catch (Exception ex)
            {
                if (Source.Optional)
                {
                    return;
                }

                var ignoreException = reload;
                if (Source.OnLoadException != null)
                {
                    var exceptionContext = new SystemsManagerExceptionContext
                    {
                        Provider  = this,
                        Exception = ex,
                        Reload    = reload
                    };
                    Source.OnLoadException(exceptionContext);
                    ignoreException = exceptionContext.Ignore;
                }

                if (!ignoreException)
                {
                    throw;
                }
            }
        }
Beispiel #7
0
 public void IsSecretsManagerPathTest(string path, bool expected)
 {
     Assert.Equal(expected, SystemsManagerProcessor.IsSecretsManagerPath(path));
 }