Create function for redacting logs

Signed-off-by: Somtochi Onyekwere <somtochionyekwere@gmail.com>
This commit is contained in:
Somtochi Onyekwere 2021-10-21 16:37:33 +01:00
parent f5d4328cbe
commit 996ee365c5
2 changed files with 70 additions and 5 deletions

View File

@ -223,11 +223,7 @@ func (s *EventServer) handleEvent() func(w http.ResponseWriter, r *http.Request)
go func(n notifier.Interface, e events.Event) {
if err := n.Post(e); err != nil {
if token != "" {
re := regexp.MustCompile(fmt.Sprintf("%s*", token))
redacted := re.ReplaceAllString(err.Error(), "*****")
err = errors.New(redacted)
}
err = redactTokenFromError(err, token)
s.logger.Error(err, "failed to send notification",
"reconciler kind", event.InvolvedObject.Kind,
@ -240,3 +236,14 @@ func (s *EventServer) handleEvent() func(w http.ResponseWriter, r *http.Request)
w.WriteHeader(http.StatusAccepted)
}
}
func redactTokenFromError(err error, token string) error {
if token == "" {
return err
}
re := regexp.MustCompile(fmt.Sprintf("%s*", token))
redacted := re.ReplaceAllString(err.Error(), "*****")
return errors.New(redacted)
}

View File

@ -0,0 +1,58 @@
package server
import (
"errors"
"testing"
)
func TestRedactTokenFromError(t *testing.T) {
tests := []struct {
name string
token string
originalErrStr string
expectedErrStr string
}{
{
name: "no token",
token: "8h0387hdyehbwwa45",
originalErrStr: "Cannot post to github",
expectedErrStr: "Cannot post to github",
},
{
name: "empty token",
token: "",
originalErrStr: "Cannot post to github",
expectedErrStr: "Cannot post to github",
},
{
name: "exact token",
token: "8h0387hdyehbwwa45",
originalErrStr: "Cannot post to github with token 8h0387hdyehbwwa45",
expectedErrStr: "Cannot post to github with token *****",
},
{
name: "non-exact token",
token: "8h0387hdyehbwwa45",
originalErrStr: `Cannot post to github with token 8h0387hdyehbwwa45\\n`,
expectedErrStr: `Cannot post to github with token *****\\n`,
},
{
name: "extra text in front token",
token: "8h0387hdyehbwwa45",
originalErrStr: `Cannot post to github with token metoo8h0387hdyehbwwa45\\n`,
expectedErrStr: `Cannot post to github with token metoo*****\\n`,
},
}
for _, tt := range tests {
err := redactTokenFromError(errors.New(tt.originalErrStr), tt.token)
if err == nil {
t.Fatalf("error shouldn't be nil")
}
if err.Error() != tt.expectedErrStr {
t.Errorf("expected error string '%s' but got '%s'",
tt.expectedErrStr, err)
}
}
}