diff --git a/resources/msg.go b/resources/msg.go index 39dd630d..45f4ccd5 100644 --- a/resources/msg.go +++ b/resources/msg.go @@ -69,6 +69,18 @@ func (obj *MsgRes) Validate() error { return fmt.Errorf("fields cannot begin with _") } } + switch obj.Priority { + case "Emerg": + case "Alert": + case "Crit": + case "Err": + case "Warning": + case "Notice": + case "Info": + case "Debug": + default: + return fmt.Errorf("invalid Priority '%s'", obj.Priority) + } return obj.BaseRes.Validate() } @@ -94,7 +106,6 @@ func (obj *MsgRes) updateStateOK() { } // JournalPriority converts a string description to a numeric priority. -// XXX: Have Validate() make sure it actually is one of these. func (obj *MsgRes) journalPriority() journal.Priority { switch obj.Priority { case "Emerg": diff --git a/resources/msg_test.go b/resources/msg_test.go new file mode 100644 index 00000000..b13e5ea1 --- /dev/null +++ b/resources/msg_test.go @@ -0,0 +1,54 @@ +// Mgmt +// Copyright (C) 2013-2017+ James Shubin and the project contributors +// Written by James Shubin and the project contributors +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU Affero General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License +// along with this program. If not, see . + +package resources + +import ( + "testing" +) + +func TestMsgValidate1(t *testing.T) { + r1 := &MsgRes{ + BaseRes: BaseRes{ + Name: "msg1", + Kind: "msg", + MetaParams: DefaultMetaParams, + }, + Priority: "Debug", + } + + r1.Setup(nil, r1, r1) + if err := r1.Validate(); err != nil { + t.Errorf("validate failed with: %v", err) + } +} + +func TestMsgValidate2(t *testing.T) { + r1 := &MsgRes{ + BaseRes: BaseRes{ + Name: "msg1", + Kind: "msg", + MetaParams: DefaultMetaParams, + }, + Priority: "UnrealPriority", + } + + r1.Setup(nil, r1, r1) + if err := r1.Validate(); err == nil { + t.Errorf("validation error is nil") + } +}