35 lines
1.4 KiB
Go
35 lines
1.4 KiB
Go
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")
|
|
}
|
|
}
|