35 lines
969 B
Go
35 lines
969 B
Go
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")
|
|
}
|