fix: project inline binary metadata and protect private markup attributes
This commit is contained in:
@@ -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")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user