public void EncryptDecryptConnectionStringInAppender() { // Arrange & Act. string encriptedConnectionString = CustomAdoNetAppender.EncryptString(ApplicationConnectionString, true); string actual = CustomAdoNetAppender.DecryptString(encriptedConnectionString, true); // Assert. Assert.Equal(ApplicationConnectionString, actual); }
/// <summary> /// Аппендер должен выкинуть <see cref="ConfigurationErrorsException"/>, /// если в секции appSettings конфигурационного файла приложения, /// не указано ни имя строки соединения, ни сама строка соединения. /// </summary> /// <remarks>Тест выполняется для win-окружения.</remarks> public void GetConnectionStringInAppSettingsFail() { // Не задаем ни имени строки соединения, ни саму строку соединения. CreateApplicationConfigurationShims(); // Не задаем аппендеру имя строки соединения. // Он должен попытаться взять строку прямо из секции appSettings конфигурационного файла. var appender = new CustomAdoNetAppender(); string connectionString = appender.ConnectionString; }
/// <summary> /// Аппендер должен выкинуть <see cref="ConfigurationErrorsException"/>, /// если в конфигурационном файле приложения, указано имя несуществующей строки соединения, /// и корректное имя не было передано аппендеру напрямую. /// </summary> public void GetConnectionStringByNameInAppSettingsFail() { // Задаем строки соединения в секции connectionStrings, и имя несуществующей строки в секции appSettings. CreateApplicationConfigurationShims(NonExistentConnectionStringName); // Не задаем аппендеру имя строки соединения. // Он должен взять его из конфигурационного файла. var appender = new CustomAdoNetAppender(); string connectionString = appender.ConnectionString; }
/// <summary> /// Аппендер должен получать строку соединения прямо из конфигурационном файла приложения, /// если имя строки нигде не указано, но строка задана напрямую в секции appSettings. /// </summary> public void GetConnectionStringInAppSettings() { // Не задаем никакого имени строки соединения, но задаем строку соединения прямо в секции appSettings. CreateApplicationConfigurationShims(null, ApplicationConnectionString); // Не задаем аппендеру имя строки соединения. // Он должен взять строку прямо из секции appSettings конфигурационного файла. var appender = new CustomAdoNetAppender(); Assert.IsTrue(appender.ConnectionString == ApplicationConnectionString); }
/// <summary> /// Аппендер должен получать строку соединения по имени, которое было указано в конфигурационном файле приложения, /// если имя не было передано аппендеру напрямую. /// </summary> public void GetConnectionStringByNameInAppSettings() { // Задаем строки соединения в секции connectionStrings, и имя основной строки в секции appSettings. CreateApplicationConfigurationShims(ApplicationConnectionStringName); // Не задаем аппендеру имя строки соединения. // Он должен взять его из конфигурационного файла. var appender = new CustomAdoNetAppender(); Assert.IsTrue(appender.ConnectionString == ApplicationConnectionString); }
/// <summary> /// Аппендер должен выкинуть <see cref="ConfigurationErrorsException"/>, /// если ему было передано имя несуществующей строки соединения. /// </summary> public void GetConnectionStringByNameInAppenderFail() { // Задаем строки соединения в секции connectionStrings. CreateApplicationConfigurationShims(); // Задаем аппендеру имя несуществующей строки соединения. var appender = new CustomAdoNetAppender { ConnectionStringName = NonExistentConnectionStringName }; string connectionString = appender.ConnectionString; }
/// <summary> /// Аппендер должен получать расшифрованную строку соединения по переданному ему имени, /// если в секции appSettings была указана настройка /// <see cref="CustomAdoNetAppender.AppSettingConnectionStringIsEncrypted"/> со значением "true". /// </summary> public void GetDecryptedConnectionStringInAppSettings() { // Не задаем никакого имени строки соединения, но задаем зашифрованную строку соединения прямо в секции appSettings // с настройкой, указывающей на необходимость расшифровки строки при её получении. CreateApplicationConfigurationShims(null, ApplicationConnectionString, true.ToString().ToLower(), true); // Не задаем аппендеру имя строки соединения. // Он должен взять строку прямо из секции appSettings конфигурационного файла и расшифровать её. var appender = new CustomAdoNetAppender(); Assert.IsTrue(appender.ConnectionString == ApplicationConnectionString); }
/// <summary> /// Аппендер должен получать расшифрованную строку соединения по переданному ему имени, /// если в секции appSettings была указана настройка /// <see cref="CustomAdoNetAppender.AppSettingConnectionStringIsEncrypted"/> со значением "true". /// </summary> public void GetDecryptedConnectionStringByNameInAppender() { // Задаем зашифрованные строки соединения в секции connectionStrings // с настройкой в секции appSettings, указывающей на необходимость расшифровки строки при её получении. CreateApplicationConfigurationShims(null, null, true.ToString().ToLower(), true); var appender = new CustomAdoNetAppender { ConnectionStringName = ApplicationConnectionStringName }; Assert.IsTrue(appender.ConnectionString == ApplicationConnectionString); }
/// <summary> /// Аппендер должен получать строку соединения по переданному ему имени. /// </summary> public void GetConnectionStringByNameInAppender() { // Задаем строки соединения в секции connectionStrings. CreateApplicationConfigurationShims(); var appender1 = new CustomAdoNetAppender { ConnectionStringName = ApplicationConnectionStringName }; Assert.IsTrue(appender1.ConnectionString == ApplicationConnectionString); var appender2 = new CustomAdoNetAppender { ConnectionStringName = AdditionalConnectionStringName }; Assert.IsTrue(appender2.ConnectionString == AdditionalConnectionString); }
/// <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); }; }