Smail/server/dto/rule_test.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)
}
}