42 lines
997 B
Go
42 lines
997 B
Go
package handlers
|
|
|
|
import (
|
|
"encoding/json"
|
|
"testing"
|
|
)
|
|
|
|
func TestClientFacingErrorMessageKeepsDomain4xx(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
got := clientFacingErrorMessage(400, "invalid request", &json.SyntaxError{Offset: 1})
|
|
if got != "invalid request" {
|
|
t.Fatalf("expected fallback for decode error, got %q", got)
|
|
}
|
|
}
|
|
|
|
func TestClientFacingErrorMessagePreservesBusinessMessage(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
err := errString("main project variant cannot be deleted")
|
|
got := clientFacingErrorMessage(400, "invalid request", err)
|
|
if got != err.Error() {
|
|
t.Fatalf("expected business message, got %q", got)
|
|
}
|
|
}
|
|
|
|
func TestClientFacingErrorMessageHidesTechnical4xx(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
err := errString("sql: no rows in result set")
|
|
got := clientFacingErrorMessage(404, "resource not found", err)
|
|
if got != "resource not found" {
|
|
t.Fatalf("expected fallback for technical error, got %q", got)
|
|
}
|
|
}
|
|
|
|
type errString string
|
|
|
|
func (e errString) Error() string {
|
|
return string(e)
|
|
}
|