public void GetConnectionTest() { MSSQLDataService ds = CreateMSSQLDataServiceForTests(); IDbConnection conn = ds.GetConnection(); Assert.NotNull(conn); }
/// <summary> /// Метод для создания MSSQLDataService для целей тестирования. /// <remarks>Строка соединения не настоящая ("SERVER=server;Trusted_connection=yes;DATABASE=test;").</remarks> /// </summary> /// <returns>Сконструированный MSSQLDataService.</returns> public static MSSQLDataService CreateMSSQLDataServiceForTests() { var ds = new MSSQLDataService(); ds.CustomizationString = "SERVER=server;Trusted_connection=yes;DATABASE=test;"; return(ds); }
public void ConstructorMSSQLDataServiceWithSecurityManagerTest() { ISecurityManager securityManager = new EmptySecurityManager(); var dataService = new MSSQLDataService(securityManager); Assert.NotNull(dataService); }
public void LoadingObjectLoadObjectsTest() { // TODO: Обработать после выполнения задачи 4009 var dataService = new MSSQLDataService(); dataService.CustomizationString = ConfigurationManager.ConnectionStrings["TestAppNormal"] .ConnectionString; // Создание тестовой записи. var тестовыйМедведь = new Медведь() { ПорядковыйНомер = 15, Вес = 39 }; dataService.UpdateObject(тестовыйМедведь); var view = new View { DefineClassType = typeof(Медведь) }; view.AddProperties( new string[1] { "ВычислимоеПоле" }); // Загрузка объектов. IQueryable <Медведь> dataМедведи = dataService.Query <Медведь>(view).Where(w => w.__PrimaryKey == тестовыйМедведь.__PrimaryKey); var lcs = LinqToLcs.GetLcs(dataМедведи.Expression, view); lcs.View = view; lcs.LoadingTypes = new[] { typeof(Медведь) }; lcs.ReturnType = LcsReturnType.Objects; // Загрузка данных без создания объктов. var медведи = dataService.LoadObjects(lcs); Assert.True(1 == медведи.Length, "Запись должна быть одна."); foreach (var stringDataView in медведи) { int fieldSum = ((Медведь)stringDataView).ВычислимоеПоле; Assert.True(54 == fieldSum, "ВычислимоеПоле"); } Assert.True(1 == dataМедведи.Count(), "Запись должна быть одна."); foreach (var медведь in dataМедведи) { Assert.True(1 == медведь.ВычислимоеПоле, "ВычислимоеПоле"); } // Удаление тестовой записи. тестовыйМедведь.SetStatus(ObjectStatus.Deleted); dataService.UpdateObject(тестовыйМедведь); }
public void LoadingObjectLoadStringedObjectViewTest() { // TODO: Обработать после выполнения задачи 4009 var dataService = new MSSQLDataService(); dataService.CustomizationString = "SERVER=rtc-storm;Trusted_connection=yes;DATABASE=dochitka_test;"; // Cоздание тестовой записи. var тестовыйМедведь = new Медведь() { ПорядковыйНомер = 15, Вес = 39 }; dataService.UpdateObject(тестовыйМедведь); var view = new View { DefineClassType = typeof(Медведь) }; view.AddProperties( new string[1] { "ВычислимоеПоле" }); // Загрузка объектов. IQueryable <Медведь> dataМедведи = dataService.Query <Медведь>(view).Where(w => w.__PrimaryKey == тестовыйМедведь.__PrimaryKey); var lcs = LinqToLcs.GetLcs(dataМедведи.Expression, view); lcs.View = view; lcs.LoadingTypes = new[] { typeof(Медведь) }; lcs.ReturnType = LcsReturnType.Objects; // Загрузка данных без создания объктов. var медведи = dataService.LoadStringedObjectView('\t', lcs); Assert.True(1 == медведи.Length, "Запись должна быть одна."); foreach (var stringDataView in медведи) { int fieldSum = Int32.Parse(stringDataView.ObjectedData[0].ToString()); Assert.True(54 == fieldSum, "ВычислимоеПоле"); } Assert.True(1 == dataМедведи.Count(), "Запись должна быть одна."); foreach (var медведь in dataМедведи) { Assert.True(54 == медведь.ВычислимоеПоле, "ВычислимоеПоле"); } // Удаление тестовой записи. тестовыйМедведь.SetStatus(ObjectStatus.Deleted); dataService.UpdateObject(тестовыйМедведь); }
public void GetIfNullExpressionEmptyArrayTest() { var exception = Xunit.Record.Exception(() => { MSSQLDataService ds = CreateMSSQLDataServiceForTests(); ds.GetIfNullExpression(new string[] { }); }); Assert.IsType(typeof(ArgumentException), exception); }
public void GetIfNullExpressionNullTest() { var exception = Xunit.Record.Exception(() => { MSSQLDataService ds = CreateMSSQLDataServiceForTests(); ds.GetIfNullExpression(null); }); Assert.IsType(typeof(ArgumentNullException), exception); }
public void TranslateExpressionForXmlPathTest() { // Arrange. SQLDataService ds = new MSSQLDataService(); bool pointExistInSourceIdentifier; string expectedResult = "(select '' as [@caption], [KP].[ФИО] as [@value] For XML PATH ('element'), TYPE)"; // Act. string result = ds.TranslateExpression(expectedResult, string.Empty, "exteranlnamewithpoint.", out pointExistInSourceIdentifier); // Assert. Assert.Equal(string.Format("({0})", expectedResult), result); }
public void GetIfNullExpressionTest() { MSSQLDataService ds = CreateMSSQLDataServiceForTests(); string exp = ds.GetIfNullExpression("identifier1", "identifier2"); Assert.Equal("ISNULL(identifier1, identifier2)", exp); exp = ds.GetIfNullExpression("identifier3", "identifier4", "identifier5"); Assert.Equal("ISNULL(identifier3, ISNULL(identifier4, identifier5))", exp); exp = ds.GetIfNullExpression("identifier6"); Assert.Equal("identifier6", exp); exp = ds.GetIfNullExpression(string.Empty); Assert.Equal(string.Empty, exp); }
public void TranslateExpressionTest() { // Arrange. SQLDataService ds = new MSSQLDataService(); bool pointExistInSourceIdentifier; string expectedResult = "(select exteranlnamewithpoint.\"Фамилия\"+exteranlnamewithpoint.\"Имя\"+exteranlnamewithpoint.\"Отчество\" from TableName where primaryKey=StormMainObjectKey)"; // Act. string result = ds.TranslateExpression( "select @Фамилия@+@Имя@+@Отчество@ from TableName where primaryKey=StormMainObjectKey", string.Empty, "exteranlnamewithpoint.", out pointExistInSourceIdentifier); // Assert. Assert.Equal(expectedResult, result); }
public void ConvertSimpleValueToQueryValueStringTest() { MSSQLDataService ds = CreateMSSQLDataServiceForTests(); string val = ds.ConvertSimpleValueToQueryValueString(null); Assert.Equal("NULL", val); val = ds.ConvertSimpleValueToQueryValueString(string.Empty); Assert.Equal("NULL", val); val = ds.ConvertSimpleValueToQueryValueString("null"); Assert.Equal("N'null'", val); var dateTime = new DateTime(2014, 01, 30, 16, 14, 20, 679); const string resDateTimeString = "'20140130 16:14:20.679'"; val = ds.ConvertSimpleValueToQueryValueString(dateTime); Assert.Equal(resDateTimeString, val); var sysNullableDateTime = new DateTime?(dateTime); val = ds.ConvertSimpleValueToQueryValueString(sysNullableDateTime); Assert.Equal(resDateTimeString, val); var caseNullableDateTime = new NullableDateTime { Value = dateTime }; val = ds.ConvertSimpleValueToQueryValueString(caseNullableDateTime); Assert.Equal(resDateTimeString, val); int intVal = 5; val = ds.ConvertSimpleValueToQueryValueString(intVal); Assert.Equal(intVal.ToString(CultureInfo.InvariantCulture), val); }
/// <summary> /// Initializes a new instance of the <see cref="BaseIntegratedTest" /> class. /// </summary> /// <param name="tempDbNamePrefix">Prefix for temp database name.</param> protected BaseIntegratedTest(string tempDbNamePrefix) { Configuration configuration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); string connectionStringsConfigSectionName = "connectionStrings"; ConnectionStringsSection connectionStringsSection = (ConnectionStringsSection)configuration.GetSection(connectionStringsConfigSectionName); if (!(tempDbNamePrefix != null)) { throw new ArgumentNullException(); } if (!(tempDbNamePrefix != string.Empty)) { throw new ArgumentException(); } if (!tempDbNamePrefix.All(char.IsLetterOrDigit)) { throw new ArgumentException(); } _tempDbNamePrefix = tempDbNamePrefix; _databaseName = _tempDbNamePrefix + "_" + DateTime.Now.ToString("yyyyMMddHHmmssff") + "_" + Guid.NewGuid().ToString("N"); if (!string.IsNullOrWhiteSpace(PostgresScript) && ConnectionStringPostgres != poolingFalseConst) { if (!(tempDbNamePrefix.Length <= 12)) // Max length is 63 (-18 -32). { throw new ArgumentException(); } if (!char.IsLetter(tempDbNamePrefix[0])) // Database names must have an alphabetic first character. { throw new ArgumentException(); } using (var conn = new NpgsqlConnection(ConnectionStringPostgres)) { conn.Open(); using (var cmd = new NpgsqlCommand(string.Format("CREATE DATABASE \"{0}\" ENCODING = 'UTF8' CONNECTION LIMIT = -1;", _databaseName), conn)) cmd.ExecuteNonQuery(); } using (var conn = new NpgsqlConnection($"{ConnectionStringPostgres};Database={_databaseName}")) { conn.Open(); using (var cmd = new NpgsqlCommand(PostgresScript, conn)) cmd.ExecuteNonQuery(); string connStr = $"{ConnectionStringPostgres};Database={_databaseName}"; PostgresDataService dataService = CreatePostgresDataService(connStr); _dataServices.Add(dataService); InitAuditService(dataService); connectionStringsSection.ConnectionStrings.Add(new ConnectionStringSettings($"{dataService.AuditService.AppSetting.AppName}_{dataService.AuditService.AppSetting.AuditConnectionStringName}", connStr)); } } if (!string.IsNullOrWhiteSpace(MssqlScript) && ConnectionStringMssql != poolingFalseConst) { if (!(tempDbNamePrefix.Length <= 64))// Max is 128. { throw new ArgumentException(); } using (var connection = new SqlConnection(ConnectionStringMssql)) { connection.Open(); using (var command = new SqlCommand($"CREATE DATABASE {_databaseName} COLLATE Cyrillic_General_CI_AS", connection)) command.ExecuteNonQuery(); } using (var connection = new SqlConnection($"{ConnectionStringMssql};Database={_databaseName}")) { connection.Open(); using (var command = new SqlCommand(MssqlScript, connection)) { command.CommandTimeout = 180; command.ExecuteNonQuery(); } string connStr = $"{ConnectionStringMssql};Database={_databaseName}"; MSSQLDataService dataService = CreateMssqlDataService(connStr); _dataServices.Add(dataService); InitAuditService(dataService); connectionStringsSection.ConnectionStrings.Add(new ConnectionStringSettings($"{dataService.AuditService.AppSetting.AppName}_{dataService.AuditService.AppSetting.AuditConnectionStringName}", connStr)); } } if (!string.IsNullOrWhiteSpace(OracleScript) && ConnectionStringOracle != poolingFalseConst) { if (!(tempDbNamePrefix.Length <= 8)) // Max length is 30 (-18 -4). { throw new ArgumentException(); } using (var connection = new OracleConnection(ConnectionStringOracle)) { connection.Open(); using (var command = connection.CreateCommand()) { // "CREATE USER" privileges required. var doWhile = true; while (doWhile) { _tmpUserNameOracle = tempDbNamePrefix + "_" + DateTime.Now.ToString("yyyyMMddHHmmssff") + "_" + new Random().Next(9999); command.CommandText = $"CREATE USER {_tmpUserNameOracle} IDENTIFIED BY {_tmpUserNameOracle} DEFAULT TABLESPACE users quota unlimited on users TEMPORARY TABLESPACE temp"; try { command.ExecuteNonQuery(); } catch (OracleException ex) { Thread.Sleep(1000); if (ex.Message.Contains("conflicts with another user or role name ")) { continue; } throw; } doWhile = false; } // "CREATE SESSION WITH ADMIN OPTION" privileges required. command.CommandText = $"GRANT CREATE SESSION TO {_tmpUserNameOracle}"; command.ExecuteNonQuery(); command.CommandText = $"GRANT CREATE TABLE TO {_tmpUserNameOracle}"; command.ExecuteNonQuery(); } } using (var connection = new OracleConnection($"{ConnectionStringOracleDataSource};User Id={_tmpUserNameOracle};Password={_tmpUserNameOracle};")) { connection.Open(); using (var command = connection.CreateCommand()) { foreach (var cmdText in OracleScript.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries)) { command.CommandText = cmdText.Trim(); if (!string.IsNullOrWhiteSpace(command.CommandText)) { command.ExecuteNonQuery(); } } string connStr = $"{ConnectionStringOracleDataSource};User Id={_tmpUserNameOracle};Password={_tmpUserNameOracle};"; OracleDataService dataService = CreateOracleDataService(connStr); _dataServices.Add(dataService); InitAuditService(dataService); connectionStringsSection.ConnectionStrings.Add(new ConnectionStringSettings($"{dataService.AuditService.AppSetting.AppName}_{dataService.AuditService.AppSetting.AuditConnectionStringName}", connStr)); } } } configuration.Save(); ConfigurationManager.RefreshSection(connectionStringsConfigSectionName); }