37 lines
940 B
Go
37 lines
940 B
Go
package user
|
|
|
|
import (
|
|
"bytes"
|
|
"context"
|
|
"errors"
|
|
"strings"
|
|
"testing"
|
|
|
|
"example.com/userService/internal/servicecontext"
|
|
apierrors "git.yuntuo.hk/k2safe/go-omni/errors"
|
|
"git.yuntuo.hk/k2safe/go-omni/logx"
|
|
)
|
|
|
|
func TestDriverMessageDoesNotReachAccessOrBusinessLogs(t *testing.T) {
|
|
var output bytes.Buffer
|
|
cfg := logx.Default()
|
|
cfg.Writer = &output
|
|
logger, err := logx.New(cfg)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
defer logger.Close()
|
|
service := New(&servicecontext.Context{Logger: logger})
|
|
secret := "private-user-input-in-driver-error"
|
|
got := service.failure(context.Background(), errors.New(secret))
|
|
if apierrors.From(got).Status != 500 {
|
|
t.Fatal("wrong error mapping")
|
|
}
|
|
if strings.Contains(got.Error(), secret) || strings.Contains(output.String(), secret) {
|
|
t.Fatal("driver detail leaked into logging path")
|
|
}
|
|
if !strings.Contains(output.String(), "user.operationFailed") {
|
|
t.Fatal("failure event missing")
|
|
}
|
|
}
|