diff --git a/policy/policy_test.go b/policy/policy_test.go index 7ad333d..e1cf0da 100644 --- a/policy/policy_test.go +++ b/policy/policy_test.go @@ -126,14 +126,14 @@ func TestCreateAlertPolicy_Validate(t *testing.T) { req.Responders = &[]alert.Responder{ { - Type: alert.ScheduleResponder, + Type: "", Name: "", Id: "", Username: "", }, } err = req.Validate() - assert.Equal(t, err.Error(), errors.New("responder type for alert policy should be one of team or user").Error()) + assert.Equal(t, err.Error(), errors.New("responder type for alert policy should be one of team, user, escalation or schedule").Error()) req.Responders = &[]alert.Responder{ { @@ -179,6 +179,50 @@ func TestCreateAlertPolicy_Validate(t *testing.T) { err = req.Validate() assert.Nil(t, err) + req.Responders = &[]alert.Responder{ + { + Type: alert.EscalationResponder, + Name: "", + Id: "", + Username: "user1", + }, + } + err = req.Validate() + assert.Equal(t, err.Error(), errors.New("responder id should be provided").Error()) + + req.Responders = &[]alert.Responder{ + { + Type: alert.EscalationResponder, + Name: "", + Id: "teamId", + Username: "", + }, + } + err = req.Validate() + assert.Nil(t, err) + + req.Responders = &[]alert.Responder{ + { + Type: alert.ScheduleResponder, + Name: "", + Id: "", + Username: "user1", + }, + } + err = req.Validate() + assert.Equal(t, err.Error(), errors.New("responder id should be provided").Error()) + + req.Responders = &[]alert.Responder{ + { + Type: alert.ScheduleResponder, + Name: "", + Id: "teamId", + Username: "", + }, + } + err = req.Validate() + assert.Nil(t, err) + req.Priority = "asd" err = req.Validate() assert.Equal(t, err.Error(), errors.New("Priority should be one of these: 'P1', 'P2', 'P3', 'P4' and 'P5'").Error()) diff --git a/policy/request.go b/policy/request.go index f224965..a308fe4 100644 --- a/policy/request.go +++ b/policy/request.go @@ -681,8 +681,8 @@ func ValidateDelayAction(action DelayAction) error { func ValidateResponders(responders *[]alert.Responder) error { for _, responder := range *responders { - if responder.Type != alert.UserResponder && responder.Type != alert.TeamResponder { - return errors.New("responder type for alert policy should be one of team or user") + if responder.Type != alert.UserResponder && responder.Type != alert.TeamResponder && responder.Type != alert.EscalationResponder && responder.Type != alert.ScheduleResponder { + return errors.New("responder type for alert policy should be one of team, user, escalation or schedule") } if responder.Id == "" { return errors.New("responder id should be provided")