public void BuildCommandForSqlQueryWithStoredProcedureWithParameters() { var sqlQuery = new SqlQuery( "EXEC GetTableContents @identifier, @Cust_Name", 100, "hello"); var mockDbProviderFactory = new Mock <DbProviderFactory>(); mockDbProviderFactory.Setup(x => x.CreateCommand()).Returns(new System.Data.SqlClient.SqlCommand()); var dbDriver = new MsSqlDbDriver(); dbDriver.DbProviderFactory = mockDbProviderFactory.Object; var command = dbDriver.BuildCommand(sqlQuery); // The command text should only contain the stored procedure name. Assert.Equal("GetTableContents", command.CommandText); Assert.Equal(CommandType.StoredProcedure, command.CommandType); Assert.Equal(2, command.Parameters.Count); var parameter1 = (IDataParameter)command.Parameters[0]; Assert.Equal(DbType.Int32, parameter1.DbType); Assert.Equal(ParameterDirection.Input, parameter1.Direction); Assert.Equal("@identifier", parameter1.ParameterName); Assert.Equal(sqlQuery.Arguments[0].Value, parameter1.Value); var parameter2 = (IDataParameter)command.Parameters[1]; Assert.Equal(DbType.String, parameter2.DbType); Assert.Equal(ParameterDirection.Input, parameter2.Direction); Assert.Equal("@Cust_Name", parameter2.ParameterName); Assert.Equal(sqlQuery.Arguments[1].Value, parameter2.Value); }
public void BuildCommandForSqlQueryWithStoredProcedureWithParameters() { var command = new SqlCommand(); var sqlQuery = new SqlQuery( "EXEC GetTableContents @identifier, @Cust_Name", 100, "hello"); var dbDriver = new MsSqlDbDriver(); dbDriver.BuildCommand(command, sqlQuery); // The command text should only contain the stored procedure name. Assert.Equal("GetTableContents", command.CommandText); Assert.Equal(CommandType.StoredProcedure, command.CommandType); Assert.Equal(2, command.Parameters.Count); var parameter1 = (IDataParameter)command.Parameters[0]; Assert.Equal(DbType.Int32, parameter1.DbType); Assert.Equal(ParameterDirection.Input, parameter1.Direction); Assert.Equal("@identifier", parameter1.ParameterName); Assert.Equal(sqlQuery.Arguments[0].Value, parameter1.Value); var parameter2 = (IDataParameter)command.Parameters[1]; Assert.Equal(DbType.String, parameter2.DbType); Assert.Equal(ParameterDirection.Input, parameter2.Direction); Assert.Equal("@Cust_Name", parameter2.ParameterName); Assert.Equal(sqlQuery.Arguments[1].Value, parameter2.Value); }
public void BuildCommandForSqlQueryWithSqlTextWhichUsesSameParameterTwice() { var command = new SqlCommand(); var sqlQuery = new SqlQuery( "SELECT * FROM [Table] WHERE [Table].[Id] = @p0 AND [Table].[Value1] = @p1 OR @p1 IS NULL", 100, "hello"); var dbDriver = new MsSqlDbDriver(); dbDriver.BuildCommand(command, sqlQuery); Assert.Equal(sqlQuery.CommandText, command.CommandText); Assert.Equal(CommandType.Text, command.CommandType); Assert.Equal(2, command.Parameters.Count); var parameter1 = (IDataParameter)command.Parameters[0]; Assert.Equal(DbType.Int32, parameter1.DbType); Assert.Equal(ParameterDirection.Input, parameter1.Direction); Assert.Equal("@p0", parameter1.ParameterName); Assert.Equal(sqlQuery.Arguments[0].Value, parameter1.Value); var parameter2 = (IDataParameter)command.Parameters[1]; Assert.Equal(DbType.String, parameter2.DbType); Assert.Equal(ParameterDirection.Input, parameter2.Direction); Assert.Equal("@p1", parameter2.ParameterName); Assert.Equal(sqlQuery.Arguments[1].Value, parameter2.Value); }
public void BuildCommandForSqlQueryWithSqlTextWhichUsesSameParameterTwice() { var sqlQuery = new SqlQuery( "SELECT * FROM [Table] WHERE [Table].[Id] = @p0 AND [Table].[Value1] = @p1 OR @p1 IS NULL", 100, "hello"); var mockDbProviderFactory = new Mock <DbProviderFactory>(); mockDbProviderFactory.Setup(x => x.CreateCommand()).Returns(new System.Data.SqlClient.SqlCommand()); var dbDriver = new MsSqlDbDriver(); dbDriver.DbProviderFactory = mockDbProviderFactory.Object; var command = dbDriver.BuildCommand(sqlQuery); Assert.Equal(sqlQuery.CommandText, command.CommandText); Assert.Equal(CommandType.Text, command.CommandType); Assert.Equal(2, command.Parameters.Count); var parameter1 = (IDataParameter)command.Parameters[0]; Assert.Equal(DbType.Int32, parameter1.DbType); Assert.Equal(ParameterDirection.Input, parameter1.Direction); Assert.Equal("@p0", parameter1.ParameterName); Assert.Equal(sqlQuery.Arguments[0].Value, parameter1.Value); var parameter2 = (IDataParameter)command.Parameters[1]; Assert.Equal(DbType.String, parameter2.DbType); Assert.Equal(ParameterDirection.Input, parameter2.Direction); Assert.Equal("@p1", parameter2.ParameterName); Assert.Equal(sqlQuery.Arguments[1].Value, parameter2.Value); }
public WhenCallingCombine_WithAnTwoSqlQueries_AndAnSqlQueryIsForAStoredProcedure() { this.sqlQuery1 = new SqlQuery("SELECT [Column1], [Column2], [Column3] FROM [dbo].[Table1] WHERE [Column1] = @p0 AND [Column2] > @p1", "Foo", 100); this.sqlQuery2 = new SqlQuery("EXEC CustomersByStatus @StatusId", 2); var dbDriver = new MsSqlDbDriver(); this.combinedQuery = dbDriver.Combine(this.sqlQuery1, this.sqlQuery2); }
public static void InitImpl() { if (BooksApp != null) { return; } LogFilePath = ConfigurationManager.AppSettings["LogFilePath"]; DeleteLocalLogFile(); var protectedSection = (NameValueCollection)ConfigurationManager.GetSection("protected"); var loginCryptoKey = protectedSection["LoginInfoCryptoKey"]; var connString = protectedSection["MsSqlConnectionString"]; var logConnString = protectedSection["MsSqlLogConnectionString"]; BooksApp = new BooksEntityApp(loginCryptoKey); //Add mock email/sms service NotificationListener = new NotificationListener(BooksApp, blockAll: true); //Set magic captcha in login settings, so we can pass captcha in unit tests var loginStt = BooksApp.GetConfig <Vita.Modules.Login.LoginModuleSettings>(); loginStt.MagicCaptcha = "Magic"; BooksApp.Init(); //connect to database var driver = MsSqlDbDriver.Create(connString); var dbOptions = MsSqlDbDriver.DefaultMsSqlDbOptions; var dbSettings = new DbSettings(driver, dbOptions, connString, upgradeMode: DbUpgradeMode.Always); // schemas); var resetDb = ConfigurationManager.AppSettings["ResetDatabase"] == "true"; if (resetDb) { Vita.UnitTests.Common.TestUtil.DropSchemaObjects(dbSettings); } BooksApp.ConnectTo(dbSettings); var logDbSettings = new DbSettings(driver, dbOptions, logConnString); BooksApp.LoggingApp.ConnectTo(logDbSettings); BooksApp.LoggingApp.LogPath = LogFilePath; TestUtil.DeleteAllData(BooksApp, exceptEntities: new [] { typeof(IDbInfo), typeof(IDbModuleInfo) }); TestUtil.DeleteAllData(BooksApp.LoggingApp); SampleDataGenerator.CreateUnitTestData(BooksApp); // Start service var serviceUrl = ConfigurationManager.AppSettings["ServiceUrl"]; var jsonNames = ConfigurationManager.AppSettings["JsonStyleNames"] == "true"; var jsonMappingMode = jsonNames ? ApiNameMapping.UnderscoreAllLower : ApiNameMapping.Default; StartService(serviceUrl, jsonMappingMode); // create client var clientContext = new OperationContext(BooksApp); // change options to None to disable logging of test client calls Client = new WebApiClient(clientContext, serviceUrl, clientName: "TestClient", nameMapping: jsonMappingMode, options: ClientOptions.EnableLog, badRequestContentType: typeof(List <ClientFault>)); WebApiClient.SharedHttpClientHandler.AllowAutoRedirect = false; //we need it for Redirect test }
public WhenCallingCombine_WithTwoSqlQueries() { this.sqlQuery1 = new SqlQuery("SELECT [Column1], [Column2], [Column3] FROM [dbo].[Table1] WHERE [Column1] = @p0 AND [Column2] > @p1", "Foo", 100); this.sqlQuery1.Timeout = 38; this.sqlQuery2 = new SqlQuery("SELECT [Column_1], [Column_2] FROM [dbo].[Table_2] WHERE ([Column_1] = @p0 OR @p0 IS NULL) AND [Column_2] < @p1", "Bar", -1); this.sqlQuery2.Timeout = 42; var dbDriver = new MsSqlDbDriver(); this.combinedQuery = dbDriver.Combine(this.sqlQuery1, this.sqlQuery2); }
public void BuildCommandThrowsMicroLiteExceptionForParameterCountMismatch() { var sqlQuery = new SqlQuery( "SELECT * FROM [Table] WHERE [Table].[Id] = @p0 AND [Table].[Value] = @p1", 100); var dbDriver = new MsSqlDbDriver(); var exception = Assert.Throws <MicroLiteException>( () => dbDriver.BuildCommand(sqlQuery)); Assert.Equal(ExceptionMessages.DbDriver_ArgumentsCountMismatch.FormatWith("2", "1"), exception.Message); }
public void DbTypeTimeIsIncorrectlyHandledAsDateTime() { var command = new SqlCommand(); var sqlQuery = new SqlQuery( "SELECT * FROM [Table] WHERE [TimeStamp] > @p0", new SqlArgument(new TimeSpan(5, 30, 1), DbType.Time)); var dbDriver = new MsSqlDbDriver(); dbDriver.BuildCommand(command, sqlQuery); Assert.Equal(SqlDbType.Time, command.Parameters[0].SqlDbType); }
public void BuildCommandForSqlQueryWithStoredProcedureWithoutParameters() { var command = new SqlCommand(); var sqlQuery = new SqlQuery("EXEC GetTableContents"); var dbDriver = new MsSqlDbDriver(); dbDriver.BuildCommand(command, sqlQuery); // The command text should only contain the stored procedure name. Assert.Equal("GetTableContents", command.CommandText); Assert.Equal(CommandType.StoredProcedure, command.CommandType); Assert.Equal(0, command.Parameters.Count); }
static void Init() { // clear log if (File.Exists(LogFileName)) { File.Delete(LogFileName); } // create and connect the app _app = new BooksEntityApp(); _app.LogPath = LogFileName; _app.ErrorLogPath = "_errors.log"; var driver = new MsSqlDbDriver(); var dbSettings = new DbSettings(driver, MsSqlDbDriver.DefaultMsSqlDbOptions, ConnString); _app.ConnectTo(dbSettings); }
public void DbTypeTimeIsIncorrectlyHandledAsDateTime() { var sqlQuery = new SqlQuery( "SELECT * FROM [Table] WHERE [TimeStamp] > @p0", new SqlArgument(new TimeSpan(5, 30, 1), DbType.Time)); var mockDbProviderFactory = new Mock <DbProviderFactory>(); mockDbProviderFactory.Setup(x => x.CreateCommand()).Returns(new System.Data.SqlClient.SqlCommand()); var dbDriver = new MsSqlDbDriver(); dbDriver.DbProviderFactory = mockDbProviderFactory.Object; var command = (System.Data.SqlClient.SqlCommand)dbDriver.BuildCommand(sqlQuery); Assert.Equal(SqlDbType.Time, command.Parameters[0].SqlDbType); }
public void BuildCommandForSqlQueryWithStoredProcedureWithoutParameters() { var sqlQuery = new SqlQuery("EXEC GetTableContents"); var mockDbProviderFactory = new Mock <DbProviderFactory>(); mockDbProviderFactory.Setup(x => x.CreateCommand()).Returns(new System.Data.SqlClient.SqlCommand()); var dbDriver = new MsSqlDbDriver(); dbDriver.DbProviderFactory = mockDbProviderFactory.Object; var command = dbDriver.BuildCommand(sqlQuery); // The command text should only contain the stored procedure name. Assert.Equal("GetTableContents", command.CommandText); Assert.Equal(CommandType.StoredProcedure, command.CommandType); Assert.Equal(0, command.Parameters.Count); }
private BooksEntityApp CreateBooksEntityApp(string connString) { // If we are running WebTests, the BooksApp is already setup if (BooksEntityApp.Instance != null) { return(BooksEntityApp.Instance); } var booksApp = new BooksEntityApp(); booksApp.Init(); //connect to db var driver = new MsSqlDbDriver(); var dbOptions = driver.GetDefaultOptions(); var dbSettings = new DbSettings(driver, dbOptions, connString, upgradeMode: DbUpgradeMode.Always); booksApp.ConnectTo(dbSettings); return(booksApp); }
public static BooksEntityApp CreateConfigureBooksApp() { // set up application var protectedSection = (NameValueCollection)ConfigurationManager.GetSection("protected"); var cryptoKey = protectedSection["LoginInfoCryptoKey"]; var booksApp = new BooksEntityApp(cryptoKey); booksApp.Init(); var connString = protectedSection["MsSqlConnectionString"]; var logConnString = protectedSection["MsSqlLogConnectionString"]; var driver = MsSqlDbDriver.Create(connString); var dbOptions = MsSqlDbDriver.DefaultMsSqlDbOptions; var logDbSettings = new DbSettings(driver, dbOptions, logConnString); booksApp.LoggingApp.ConnectTo(logDbSettings); var dbSettings = new DbSettings(driver, dbOptions, connString, upgradeMode: DbUpgradeMode.Always); booksApp.ConnectTo(dbSettings); //Web Api WebHelper.ConfigureWebApi(GlobalConfiguration.Configuration, booksApp, logLevel: Entities.Services.LogLevel.Details ); return(booksApp); }
public static void InitImpl() { if (BooksApp != null) { return; } LoadAppConfig(); LogFilePath = AppConfiguration["LogFilePath"]; if (File.Exists(LogFilePath)) { File.Delete(LogFilePath); } BooksApp = new BooksEntityApp(); BooksApp.LogPath = LogFilePath; //Add mock email/sms service // NotificationListener = new NotificationListener(BooksApp, blockAll: true); // Setup mock messaging service LoginMessagingService = new MockLoginMessagingService(); var loginConfig = BooksApp.GetConfig <Modules.Login.LoginModuleSettings>(); loginConfig.MessagingService = LoginMessagingService; BooksApp.Init(); //connect to database var driver = new MsSqlDbDriver(); var dbOptions = MsSqlDbDriver.DefaultMsSqlDbOptions; var connString = AppConfiguration["MsSqlConnectionString"]; var dbSettings = new DbSettings(driver, dbOptions, connString, upgradeMode: DbUpgradeMode.Always); // schemas); BooksApp.ConnectTo(dbSettings); // Logging app LoggingApp = new DbLoggingEntityApp(); LoggingApp.ListenTo(BooksApp); var logConnString = AppConfiguration["MsSqlLogConnectionString"]; var logDbSettings = new DbSettings(driver, dbOptions, logConnString, upgradeMode: DbUpgradeMode.Always); // schemas); LoggingApp.ConnectTo(logDbSettings); // create sample data DataUtility.DeleteAllData(BooksApp, exceptEntities: new Type[] { typeof(IDbInfo), typeof(IDbModuleInfo) }); SampleDataGenerator.CreateUnitTestData(BooksApp); // Start service var serviceUrl = AppConfiguration["ServiceUrl"]; StartService(serviceUrl); // create client var useXml = false; if (useXml) { var clientSettings = new RestClientSettings(serviceUrl, serializer: new XmlContentSerializer(), badRequestContentType: typeof(string)); // typeof(List<ClientFault>)); Client = new RestClient(clientSettings); } else { Client = new RestClient(serviceUrl, badRequestContentType: typeof(List <ClientFault>)); //json, very simple setup } RestClient.SharedHttpClientHandler.AllowAutoRedirect = false; //we need it for Redirect test // Setup handler converting BadRequestException into ClientFaultException, with list of faults already converted Client.Settings.Events.ReceivedError += (s, e) => { if (e.CallData.Exception is BadRequestException bre) { e.CallData.Exception = new ClientFaultException((IList <ClientFault>)bre.Details); } }; }
public void SupportsBatchedQueriesReturnsTrue() { var dbDriver = new MsSqlDbDriver(); Assert.True(dbDriver.SupportsBatchedQueries); }