fix: project inline binary metadata and protect private markup attributes

This commit is contained in:
2026-10-10 06:24:15 +08:00
parent 113eaec32f
commit 64bd48bf70
5 changed files with 196 additions and 2 deletions
+34
View File
@@ -0,0 +1,34 @@
package logging
import (
"strings"
"testing"
)
func TestInlineBinaryMetadataIsIdempotentAndDecodeErrorsStayOpaque(t *testing.T) {
for _, uri := range []string{"data:audio/wav;base64,YWJjZA==", "DATA:AUDIO/WAV;BASE64,YWJjZA==", "data:audio/wav,%61bcd"} {
got := cleanString(uri)
if got != "[BINARY type=audio/wav bytes=4]" || cleanString(got) != got {
t.Fatal("wrong or unstable metadata", got)
}
}
for _, uri := range []string{"data:audio/wav;base64,private-audio-payload", "data:audio/wav,%ZZprivate-audio-payload", "data:invalid,private-audio-payload", "data:private-audio-payload"} {
got := cleanString(uri)
if strings.Contains(got, "private-audio-payload") || !strings.Contains(got, "error=invalid_data_uri") || !strings.Contains(got, "bytes=unknown") {
t.Fatal("invalid declaration must be explicit and opaque", got)
}
}
tag := `<audio src="data:audio/wav;base64,YWJjZA==" data-pcm="private-audio-payload" task_id="4">private-audio-payload</audio><status>ready</status>`
got := cleanString(tag)
for _, keep := range []string{"type=audio/wav bytes=4", `task_id="4"`, "ready"} {
if !strings.Contains(got, keep) {
t.Fatal("metadata/diagnostic lost", got)
}
}
if strings.Contains(got, "private-audio-payload") || cleanString(got) != got {
t.Fatal("private attribute/content or repeated projection failure", got)
}
if isInlineBinarySummary("[BINARY type=audio/wav bytes=private-audio-payload]") {
t.Fatal("untyped metadata accepted")
}
}