resources: Add validation for Msg Priority field
This adds validation that ensures that Msg Priority field is one of the following values: "Emerg", "Alert", "Crit", "Err", "Warning", "Notice", "Info", "Debug".
This commit is contained in:
@@ -69,6 +69,18 @@ func (obj *MsgRes) Validate() error {
|
|||||||
return fmt.Errorf("fields cannot begin with _")
|
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()
|
return obj.BaseRes.Validate()
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -94,7 +106,6 @@ func (obj *MsgRes) updateStateOK() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// JournalPriority converts a string description to a numeric priority.
|
// 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 {
|
func (obj *MsgRes) journalPriority() journal.Priority {
|
||||||
switch obj.Priority {
|
switch obj.Priority {
|
||||||
case "Emerg":
|
case "Emerg":
|
||||||
|
|||||||
54
resources/msg_test.go
Normal file
54
resources/msg_test.go
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
// Mgmt
|
||||||
|
// Copyright (C) 2013-2017+ James Shubin and the project contributors
|
||||||
|
// Written by James Shubin <james@shubin.ca> 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 <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
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")
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user