Some checks are pending
Security Checks / security (push) Waiting to run
统一 frontend、backend、test、test-log 和 out 目录,更新构建、部署及测试入口;纳入配置管理兼容与首次安全引导修复;排除本机配置、密钥和测试产物。
39 lines
966 B
Go
39 lines
966 B
Go
package dto
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"git.pcux.cn/xuans/Smail/models"
|
|
)
|
|
|
|
func TestRuleDecodeRejectsCorruptedStoredJSON(t *testing.T) {
|
|
if _, err := (&Rule{}).Decode(&models.Rule{Value: "{"}); err == nil {
|
|
t.Fatal("corrupted stored rule was accepted")
|
|
}
|
|
}
|
|
|
|
func TestRuleDecodeAcceptsBlankStoredJSON(t *testing.T) {
|
|
decoded, err := (&Rule{}).Decode(&models.Rule{Id: 1, Value: " "})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if decoded.Id != 1 || len(decoded.Rules) != 0 {
|
|
t.Fatalf("unexpected decoded rule: %#v", decoded)
|
|
}
|
|
}
|
|
|
|
func TestRuleEncodeRoundTrip(t *testing.T) {
|
|
original := &Rule{Id: 1, Name: "test", Action: MOVE, Rules: []*Value{{Field: "Subject", Type: "contains", Rule: "report"}}}
|
|
stored, err := original.Encode()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
decoded, err := (&Rule{}).Decode(stored)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if len(decoded.Rules) != 1 || decoded.Rules[0].Rule != "report" {
|
|
t.Fatalf("unexpected decoded rule: %#v", decoded)
|
|
}
|
|
}
|