Files
mailx/html_resource_test.go
T

72 lines
1.5 KiB
Go
Raw Normal View History

2026-08-15 01:38:05 +08:00
package mailx_test
import (
"reflect"
"testing"
mailx "code.yun.ink/pkg/mailx"
)
func TestParseHtmlResourceAll(t *testing.T) {
html := `<html>
<head>
<link rel="dns-prefetch" href="//dns.example.com">
<link rel="stylesheet" href="./css/a.css">
<script src="./js/app.js"></script>
</head>
<body>
<img src="./img/a.png" data-src="./img/b.png">
<video src="./v/a.mp4" data-src="./v/b.mp4"></video>
<audio src="./au/a.mp3"></audio>
</body>
</html>`
got, err := mailx.ParseHTMLResource(html)
if err != nil {
t.Fatal(err)
}
want := []string{
"./css/a.css",
"./js/app.js",
"./img/a.png",
"./img/b.png",
"./v/a.mp4",
"./v/b.mp4",
"./au/a.mp3",
}
if !reflect.DeepEqual(got, want) {
t.Fatalf("got %v, want %v", got, want)
}
}
func TestParseHtmlResourceNoResources(t *testing.T) {
got, err := mailx.ParseHtmlResource("<html><body>plain</body></html>")
if err != nil {
t.Fatal(err)
}
if len(got) != 0 {
t.Fatalf("got %v, want empty", got)
}
}
func TestParseHtmlResourceInvalidInput(t *testing.T) {
// 非法 HTML 输入不应返回错误(goquery 容错解析)
if _, err := mailx.ParseHtmlResource("not html at all <<<"); err != nil {
t.Fatalf("unexpected error: %v", err)
}
}
func TestParseHtmlResourceEmptyHrefIgnored(t *testing.T) {
got, err := mailx.ParseHtmlResource(`<html>
<link rel="stylesheet" href="">
<script src=""></script>
<img src="">
</html>`)
if err != nil {
t.Fatal(err)
}
if len(got) != 0 {
t.Fatalf("got %v, want empty", got)
}
}