34 lines
1.0 KiB
Go
34 lines
1.0 KiB
Go
package webui
|
|||
|
|
|
||
|
|
import (
|
||
|
|
"strings"
|
||
|
|
"testing"
|
||
|
|
|
||
|
|
"mailgoserver/internal/mailview"
|
||
|
|
)
|
||
|
|
|
||
|
|
func TestInlineContentIDImagesReplacesWithDataURI(t *testing.T) {
|
||
|
|
html := `<p><img src="cid:img1@example.com"></p>`
|
||
|
|
attachments := []mailview.Attachment{
|
||
|
|
{Filename: "header.png", ContentType: "image/png", Data: []byte("fake-png-bytes"), ContentID: "img1@example.com"},
|
||
|
|
}
|
||
|
|
got := inlineContentIDImages(html, attachments)
|
||
|
|
if strings.Contains(got, "cid:") {
|
||
|
|
t.Errorf("cid: reference survived: %q", got)
|
||
|
|
}
|
||
|
|
if !strings.Contains(got, "data:image/png;base64,") {
|
||
|
|
t.Errorf("expected a data: URI in %q", got)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
func TestInlineContentIDImagesLeavesUnmatchedRefsAlone(t *testing.T) {
|
||
|
|
html := `<p><img src="cid:unknown@example.com"></p>`
|
||
|
|
// No attachment carries this Content-Id — must not touch the src, since
|
||
|
|
// htmlBodyPolicy.Sanitize (run right after this) already strips any src it
|
||
|
|
// doesn't recognize, and that's the correct outcome for a genuinely missing part.
|
||
|
|
got := inlineContentIDImages(html, nil)
|
||
|
|
if got != html {
|
||
|
|
t.Errorf("got %q, want unchanged", got)
|
||
|
|
}
|
||
|
|
}
|