public async Task CanFallbackToSecondaryDesiredFileConfigurationStore()
        {
            // Arrange
            var validConfigJson   = JsonConvert.SerializeObject(this.validModuleConfig);
            var invalidConfigJson = JsonConvert.SerializeObject(this.invalidModuleConfig);

            var configJsonReader = new StringReader(validConfigJson);
            var twinProperties   = new TwinProperties()
            {
                Desired = new TwinCollection(invalidConfigJson)
            };

            var moduleClientMock = new Mock <IModuleClient>();

            moduleClientMock.Setup(mc => mc.GetTwinAsync(new CancellationToken())).ReturnsAsync(new Twin(twinProperties));

            // Act
            using (var fileConfig = new FileConfiguration <ModuleConfig>(this.log, configJsonReader))
            {
                var deviceTwinConfig = new DeviceTwinConfiguration <ModuleConfig>(this.log, fileConfig, moduleClientMock.Object);
                var typedConfig      = await deviceTwinConfig.GetDeviceConfigurationAsync(new CancellationToken()).ConfigureAwait(false);

                // Assert
                Assert.AreEqual <string>(validConfigJson, JsonConvert.SerializeObject(typedConfig));
            }
        }
        public async Task CanValidateDesiredConfigurationFromFile()
        {
            // Arrange
            var configJson     = JsonConvert.SerializeObject(this.invalidModuleConfig);
            var twinProperties = new TwinProperties()
            {
                Desired = new TwinCollection(configJson)
            };

            var moduleClientMock = new Mock <IModuleClient>();

            moduleClientMock.Setup(mc => mc.GetTwinAsync(new CancellationToken())).ReturnsAsync(new Twin(twinProperties));

            // Act
            var deviceTwinConfig = new DeviceTwinConfiguration <ModuleConfig>(this.log, null, moduleClientMock.Object);
            var typedConfig      = await deviceTwinConfig.GetDeviceConfigurationAsync(new CancellationToken()).ConfigureAwait(false);
        }