예제 #1
0
        public void GetAllKeys_DeserializerThrowException_ShouldReturnsWithEmptyArray()
        {
            // Arrange

            configServiceMock.Setup(m => m.GetConfigAsync()).ReturnsAsync(ProjectConfig.Empty);
            var o = new SettingsWithPreferences();

            configDeserializerMock
            .Setup(m => m.TryDeserialize(It.IsAny <string>(), out o))
            .Throws <Exception>();

            IConfigCatClient instance = new ConfigCatClient(
                configServiceMock.Object,
                loggerMock.Object,
                evaluatorMock.Object,
                configDeserializerMock.Object);

            // Act

            var actualKeys = instance.GetAllKeys();

            // Assert

            Assert.IsNotNull(actualKeys);
            Assert.AreEqual(0, actualKeys.Count());
            loggerMock.Verify(m => m.Error(It.IsAny <string>()), Times.Once);
        }
예제 #2
0
        public async Task GetVariationIdAsync_DeserializeFailed_ShouldReturnsWithEmptyArray()
        {
            // Arrange

            configServiceMock.Setup(m => m.GetConfigAsync()).ReturnsAsync(ProjectConfig.Empty);
            var o = new SettingsWithPreferences();

            configDeserializerMock
            .Setup(m => m.TryDeserialize(It.IsAny <string>(), out o))
            .Returns(false);

            IConfigCatClient instance = new ConfigCatClient(
                configServiceMock.Object,
                loggerMock.Object,
                evaluatorMock.Object,
                configDeserializerMock.Object);

            // Act

            var actual = await instance.GetAllVariationIdAsync();

            // Assert

            Assert.IsNotNull(actual);
            Assert.AreEqual(0, actual.Count());
            loggerMock.Verify(m => m.Warning(It.IsAny <string>()), Times.Once);
        }
예제 #3
0
        public bool TryDeserialize(string config, out SettingsWithPreferences settings)
        {
            if (config == null)
            {
                this.logger.Warning("ConfigJson is not present.");

                settings = null;

                return(false);
            }

            var hash = this.hasher.ComputeHash(config).Hash;

            if (CompareByteArrays(this.hashToCompare, hash))
            {
                settings = this.lastSerializedSettings;
                return(true);
            }

            using (var stringReader = new StringReader(config))
                using (var reader = new JsonTextReader(stringReader))
                {
                    this.lastSerializedSettings = settings = this.serializer.Deserialize <SettingsWithPreferences>(reader);
                }

            this.hashToCompare = hash;
            return(true);
        }