Some checks are pending
Security Checks / security (push) Waiting to run
统一 frontend、backend、test、test-log 和 out 目录,更新构建、部署及测试入口;纳入配置管理兼容与首次安全引导修复;排除本机配置、密钥和测试产物。
48 lines
1.2 KiB
Go
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)
|
|
}
|
|
}
|