Smail/backend/models/email_test.go
smail f60d3b0880
Some checks are pending
Security Checks / security (push) Waiting to run
整理前后端与测试构建目录并完善配置和安全引导
统一 frontend、backend、test、test-log 和 out 目录,更新构建、部署及测试入口;纳入配置管理兼容与首次安全引导修复;排除本机配置、密钥和测试产物。
2026-09-05 19:19:52 +08:00

48 lines
1.2 KiB
Go

package models
import (
"encoding/json"
"testing"
)
func TestEmailMarshalJSONRejectsCorruptedAttachments(t *testing.T) {
email := &Email{Attachments: "{"}
if _, err := json.Marshal(email); err == nil {
t.Fatal("corrupted attachment JSON was accepted")
}
}
func TestEmailMarshalJSONAcceptsBlankAttachments(t *testing.T) {
email := &Email{Attachments: " "}
data, err := json.Marshal(email)
if err != nil {
t.Fatal(err)
}
var decoded struct {
Attachments []attachments `json:"attachments"`
}
if err := json.Unmarshal(data, &decoded); err != nil {
t.Fatal(err)
}
if len(decoded.Attachments) != 0 {
t.Fatalf("unexpected attachments: %#v", decoded.Attachments)
}
}
func TestEmailMarshalJSONIncludesAttachmentMetadata(t *testing.T) {
email := &Email{Attachments: `[{"Filename":"report.txt","ContentType":"text/plain"}]`}
data, err := json.Marshal(email)
if err != nil {
t.Fatal(err)
}
var decoded struct {
Attachments []attachments `json:"attachments"`
}
if err := json.Unmarshal(data, &decoded); err != nil {
t.Fatal(err)
}
if len(decoded.Attachments) != 1 || decoded.Attachments[0].Filename != "report.txt" || decoded.Attachments[0].Index != 0 {
t.Fatalf("unexpected attachments: %#v", decoded.Attachments)
}
}