public void ExecuteReader_SimpleCommand_ResultOk_LoggedAsDebug() { var logSpy = new StringLogger(); // act using var connection = new LoggedDbConnection(new SqliteConnection(connectionString), logSpy); connection.Open(); var queryCommand = connection.CreateCommand(); queryCommand.CommandText = @" SELECT 1 UNION SELECT 2"; using var reader = queryCommand.ExecuteReader(); Assert.True(reader.Read()); Assert.Equal(1, reader.GetInt64(0)); Assert.True(reader.Read()); Assert.Equal(2, reader.GetInt64(0)); Assert.False(reader.Read()); Assert.Contains(queryCommand.CommandText, logSpy.Logs[LogLevel.Debug]); }
public void ExecuteScalar_CommandWithParameter_ResultOk_LoggedAsDebug() { var logSpy = new StringLogger(); // act using var connection = new LoggedDbConnection(new SqliteConnection(connectionString), logSpy); connection.Open(); var queryCommand = connection.CreateCommand(); queryCommand.CommandText = "SELECT @myparameter"; var param = queryCommand.CreateParameter(); param.DbType = System.Data.DbType.String; param.ParameterName = "@myparameter"; param.Value = "SomeText"; queryCommand.Parameters.Add(param); var result = (string)queryCommand.ExecuteScalar(); var debugLogs = logSpy.Logs[LogLevel.Debug]; Assert.Equal("SomeText", result); Assert.Contains(queryCommand.CommandText, debugLogs); Assert.Contains("myparameter", debugLogs); Assert.Contains("SomeText", debugLogs); }
public static IDbConnection ToLoggedDbConnection(this IDbConnection connection) { Assert.IsNotNull(connection); var loggedDbConnection = new LoggedDbConnection(connection); var logger = new DbConnectionLogger(loggedDbConnection); return(loggedDbConnection); }
public static IDbConnection ToLoggedDbConnection(this IDbConnection connection) { ArgumentNullException.ThrowIfNull(connection); var loggedDbConnection = new LoggedDbConnection(connection); var logger = new DbConnectionLogger(loggedDbConnection); return(loggedDbConnection); }
public void CommandTimeout_IsPassedToInnerCommand() { var cmdTimeout = 90; // act using var connection = new LoggedDbConnection(new SqliteConnection(connectionString), new StringLogger(), cmdTimeout); var queryCommand = connection.CreateCommand(); Assert.Equal(cmdTimeout, queryCommand.CommandTimeout); }
public DbConnectionLogger(LoggedDbConnection connection) { Assert.IsNotNull(connection); _connection = connection; connection.BeforeOpen += ConnectionBeforeOpen; connection.AfterOpen += ConnectionAfterOpen; connection.BeforeExecuteReader += ConnectionBeforeExecuteReader; connection.AfterExecuteReader += ConnectionAfterExecuteReader; connection.AfterRead += ConnectionAfterRead; }
public DbConnectionLogger(LoggedDbConnection connection) { ArgumentNullException.ThrowIfNull(connection); _connection = connection; connection.BeforeOpen += ConnectionBeforeOpen; connection.AfterOpen += ConnectionAfterOpen; connection.BeforeExecuteReader += ConnectionBeforeExecuteReader; connection.AfterExecuteReader += ConnectionAfterExecuteReader; connection.AfterRead += ConnectionAfterRead; }
public void ExecuteNonQuery_SimpleCommand_ResultOk_LoggedAsDebug() { var logSpy = new StringLogger(); // act using var connection = new LoggedDbConnection(new SqliteConnection(connectionString), logSpy); connection.Open(); var queryCommand = connection.CreateCommand(); queryCommand.CommandText = "DROP TABLE IF EXISTS People"; queryCommand.ExecuteNonQuery(); Assert.Contains(queryCommand.CommandText, logSpy.Logs[LogLevel.Debug]); }
public void Ensure_Passthrough_Properties() { var innerCnx = new SqliteConnection(connectionString); var loggedCnx = new LoggedDbConnection(innerCnx, new StringLogger()); Assert.Equal(loggedCnx.ServerVersion, innerCnx.ServerVersion); Assert.Equal(loggedCnx.Database, innerCnx.Database); Assert.Equal(loggedCnx.State, innerCnx.State); Assert.Equal(loggedCnx.DataSource, innerCnx.DataSource); Assert.Equal(loggedCnx.Database, innerCnx.Database); Assert.Equal(loggedCnx.ConnectionString, innerCnx.ConnectionString); loggedCnx.ConnectionString = "Data Source = InMemorySample2; Mode = Memory;"; Assert.Equal(loggedCnx.ConnectionString, innerCnx.ConnectionString); }
static void Main(string[] args) { ILogger consoleLogger = new ConsoleLogger(); using var connection = new LoggedDbConnection(new SqliteConnection(connectionString), consoleLogger); connection.Open(); var queryCommand = connection.CreateCommand(); queryCommand.CommandText = "SELECT @name, @age"; queryCommand.Parameters.AddRange(new[] { new SqliteParameter("@name", "Bob"), new SqliteParameter("@age", 28) }); var result = queryCommand.ExecuteScalar(); }
public void ExecuteScalar_SimpleCommand_ResultOk_LoggedAsDebug() { var logSpy = new StringLogger(); // act using var connection = new LoggedDbConnection(new SqliteConnection(connectionString), logSpy); connection.Open(); var queryCommand = connection.CreateCommand(); queryCommand.CommandText = "SELECT 1"; var result = (long)queryCommand.ExecuteScalar(); Assert.Equal(1, result); Assert.Contains(queryCommand.CommandText, logSpy.Logs[LogLevel.Debug]); }
public void Ensure_Passthrough_Properties_And_Methods_Called() { var logger = new Mock <ILogger>(); var dbCmdSpy = new Mock <DbConnection>() { CallBase = true, DefaultValue = DefaultValue.Mock }; var loggedCnx = new LoggedDbConnection(dbCmdSpy.Object, logger.Object); loggedCnx.Open(); dbCmdSpy.Verify(p => p.Open(), Times.Once); loggedCnx.Close(); dbCmdSpy.Verify(p => p.Close(), Times.Once); loggedCnx.ChangeDatabase("db"); dbCmdSpy.Verify(p => p.ChangeDatabase("db"), Times.Once); loggedCnx.ConnectionString = "abc"; dbCmdSpy.VerifySet(p => p.ConnectionString = "abc", Times.Once); _ = loggedCnx.Database; dbCmdSpy.VerifyGet(p => p.Database, Times.Once); _ = loggedCnx.State; dbCmdSpy.VerifyGet(p => p.State, Times.Once); _ = loggedCnx.DataSource; dbCmdSpy.VerifyGet(p => p.DataSource, Times.Once); _ = loggedCnx.ServerVersion; dbCmdSpy.VerifyGet(p => p.ServerVersion, Times.Once); var protectedMock = dbCmdSpy.Protected().As <DbConnectionProtectedMembers>(); loggedCnx.BeginTransaction(); protectedMock.Verify(p => p.BeginDbTransaction(IsolationLevel.Unspecified), Times.Once()); loggedCnx.CreateCommand(); protectedMock.Verify(p => p.CreateDbCommand(), Times.Once()); }
public void ExecuteScalar_SyntaxError_LoggedAsError() { var logSpy = new StringLogger(); // act using var connection = new LoggedDbConnection(new SqliteConnection(connectionString), logSpy); connection.Open(); var queryCommand = connection.CreateCommand(); queryCommand.CommandText = "SELEC_error 1"; try { var result = (long)queryCommand.ExecuteScalar(); } catch (Exception ex) { Assert.Contains("syntax error", ex.Message); } Assert.Contains(queryCommand.CommandText, logSpy.Logs[LogLevel.Debug]); Assert.Contains(queryCommand.CommandText, logSpy.Logs[LogLevel.Error]); }