package httpx
import (
"bytes"
"encoding/json"
"log/slog"
"net/http"
"net/http/httptest"
"strings"
"testing"
)
func TestWriteSanitizesInternalAndKeepsLegacyCode(t *testing.T) {
rec := httptest.NewRecorder()
Write(rec, http.StatusInternalServerError, CodeINTERNAL, "pq: relation foo leaked /home/weichen/secret", "req_test", nil)
var env Envelope
if err := json.Unmarshal(rec.Body.Bytes(), &env); err != nil {
t.Fatal(err)
}
if env.Code != CodeINTERNAL || env.RequestID != "req_test" {
t.Fatalf("%+v", env)
}
if strings.Contains(rec.Body.String(), "pq:") || strings.Contains(rec.Body.String(), "/home/") {
t.Fatalf("leaked: %s", rec.Body.String())
}
if env.Error != CodeINTERNAL {
t.Fatalf("legacy error=%s", env.Error)
}
}
func TestWriteKeepsStablePublicErrorCode(t *testing.T) {
rec := httptest.NewRecorder()
Write(rec, http.StatusForbidden, CodeAUTHZ, "ERR_FORBIDDEN", "req_2", nil)
var env Envelope
_ = json.Unmarshal(rec.Body.Bytes(), &env)
if env.Error != "ERR_FORBIDDEN" || env.Code != CodeAUTHZ {
t.Fatalf("%+v", env)
}
if strings.Contains(rec.Body.String(), "", "req_3", nil)
if strings.Contains(rec.Body.String(), "