public void Test_IfRedisConnectionProviderAndCryptoGeneratorAreInvokedAsNeeded()
        {
            options.WebConfigFilePath = string.Format(givenConfigPathTemplate, "WithoutSession");

            var provider  = new Mock <IRedisConnectionProvider>();
            var generator = new Mock <ICryptoGenerator>();

            using (var appender = new WebConfigFileAppender(options, logger, provider.Object, generator.Object))
                appender.ApplyChanges();

            provider.Verify(p => p.GetConnectionString(), Times.Exactly(2));
            generator.Verify(g => g.CreateKey(24), Times.Once);
            generator.Verify(g => g.CreateKey(64), Times.Once);
        }
        private void AppendAndCompare(string configFilePath, string appendedConfigFilePath)
        {
            File.Copy(configFilePath, appendedConfigFilePath, true);

            options.WebConfigFilePath = appendedConfigFilePath;

            using (var appender = new WebConfigFileAppender(options, logger, new RedisConnectionProviderStub(), new CryptoGeneratorStub()))
                appender.ApplyChanges();

            var expectedWebConfig = File.ReadAllText(expectedConfigPath);
            var appendedWebConfig = File.ReadAllText(appendedConfigFilePath);

            var diff = new XmlDiff(expectedWebConfig, appendedWebConfig);

            diff.CompareDocuments(new XmlDiffOptions()
            {
                IgnoreAttributeOrder = true, IgnoreCase = true, TrimWhitespace = true
            });

            Assert.Empty(diff.DiffNodeList);
        }