72 lines
1.5 KiB
Go
72 lines
1.5 KiB
Go
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)
|
||
|
|
}
|
||
|
|
}
|