package app import ( "bytes" "log" "testing" "github.com/stretchr/testify/require" "gorm.io/driver/sqlite" "gorm.io/gorm" gormlogger "gorm.io/gorm/logger" ) type databaseLoggerFixture struct { ID uint PubsubToken string } func TestDatabaseLoggerRedactsQueryParametersAndIgnoresRecordNotFound(t *testing.T) { var output bytes.Buffer db, err := gorm.Open(sqlite.Open("file:"+t.Name()+"?mode=memory&cache=private"), &gorm.Config{ Logger: newDatabaseLogger(log.New(&output, "", 0), gormlogger.Info), }) require.NoError(t, err) require.NoError(t, db.AutoMigrate(&databaseLoggerFixture{})) output.Reset() const secret = "secret-pubsub-token" err = db.Where("pubsub_token = ?", secret).First(&databaseLoggerFixture{}).Error require.ErrorIs(t, err, gorm.ErrRecordNotFound) require.Contains(t, output.String(), "pubsub_token = ?") require.NotContains(t, output.String(), secret) require.NotContains(t, output.String(), "record not found") }