public void EncryptDecryptConnectionStringInAppender()
        {
            // Arrange & Act.
            string encriptedConnectionString = CustomAdoNetAppender.EncryptString(ApplicationConnectionString, true);
            string actual = CustomAdoNetAppender.DecryptString(encriptedConnectionString, true);

            // Assert.
            Assert.Equal(ApplicationConnectionString, actual);
        }
        /// <summary>
        /// Осуществляет создание тестовой оболочки для конфигурации приложения.
        /// </summary>
        /// <param name="appSettingConnectionStringName">
        /// Значение настройки <see cref="CustomAdoNetAppender.AppSettingConnectionStringName"/> в секции appSettings.
        /// </param>
        /// <param name="appSettingConnectionString">
        /// Значение настройки <see cref="CustomAdoNetAppender.AppSettingConnectionString"/> в секции appSettings.
        /// </param>
        /// <param name="appSettingConnectionStringIsEncrypted">
        /// Значение настройки <see cref="CustomAdoNetAppender.AppSettingConnectionStringIsEncrypted"/> в секции appSettings.
        /// </param>
        /// <param name="encryptConnectionString">
        /// Флаг: нужно ли зашифровать строки соединения.
        /// </param>
        private void CreateApplicationConfigurationShims(
            string appSettingConnectionStringName        = null,
            string appSettingConnectionString            = null,
            string appSettingConnectionStringIsEncrypted = null,
            bool encryptConnectionString = false)
        {
            var appSettings = new NameValueCollection();

            if (!string.IsNullOrEmpty(appSettingConnectionStringName))
            {
                appSettings.Add(CustomAdoNetAppender.AppSettingConnectionStringName, appSettingConnectionStringName);
            }

            if (!string.IsNullOrEmpty(appSettingConnectionString))
            {
                appSettingConnectionString = encryptConnectionString
                        ? CustomAdoNetAppender.EncryptString(appSettingConnectionString, true)
                        : appSettingConnectionString;
                appSettings.Add(CustomAdoNetAppender.AppSettingConnectionString, appSettingConnectionString);
            }

            if (!string.IsNullOrEmpty(appSettingConnectionStringIsEncrypted))
            {
                appSettings.Add(CustomAdoNetAppender.AppSettingConnectionStringIsEncrypted, appSettingConnectionStringIsEncrypted);
            }

            var    appConnectionStrings        = new ConnectionStringSettingsCollection();
            string applicationConnectionString = encryptConnectionString
                        ? CustomAdoNetAppender.EncryptString(ApplicationConnectionString, true)
                        : ApplicationConnectionString;
            string additionalConnectionString = encryptConnectionString
                ? CustomAdoNetAppender.EncryptString(AdditionalConnectionString, true)
                : AdditionalConnectionString;

            appConnectionStrings.Add(new ConnectionStringSettings(ApplicationConnectionStringName, applicationConnectionString));
            appConnectionStrings.Add(new ConnectionStringSettings(AdditionalConnectionStringName, additionalConnectionString));

            System.Configuration.Fakes.ShimConfigurationManager.AppSettingsGet       = () => { return(appSettings); };
            System.Configuration.Fakes.ShimConfigurationManager.ConnectionStringsGet = () => { return(appConnectionStrings); };
        }