mirror of https://github.com/statping/statping
added .Validate() error method for multiple types
parent
889661f175
commit
ec6c9f6702
|
@ -38,7 +38,6 @@ RUN go get github.com/stretchr/testify/assert && \
|
||||||
COPY . .
|
COPY . .
|
||||||
COPY --from=frontend /statping/dist/ ./source/dist/
|
COPY --from=frontend /statping/dist/ ./source/dist/
|
||||||
RUN make clean generate embed
|
RUN make clean generate embed
|
||||||
RUN if [ "$GOARCH" = "arm" ] ; then export GOARM=6; fi
|
|
||||||
RUN go build -a -ldflags "-s -w -extldflags -static -X main.VERSION=${VERSION} -X main.COMMIT=${COMMIT}" -o statping --tags "netgo linux" ./cmd
|
RUN go build -a -ldflags "-s -w -extldflags -static -X main.VERSION=${VERSION} -X main.COMMIT=${COMMIT}" -o statping --tags "netgo linux" ./cmd
|
||||||
RUN chmod a+x statping && mv statping /go/bin/statping
|
RUN chmod a+x statping && mv statping /go/bin/statping
|
||||||
# /go/bin/statping - statping binary
|
# /go/bin/statping - statping binary
|
||||||
|
|
|
@ -141,7 +141,7 @@ func TestGroupAPIRoutes(t *testing.T) {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "Statping View Unknown Group",
|
Name: "Statping View Unknown Group",
|
||||||
URL: "/api/groups/8383883838",
|
URL: "/api/groups/38383",
|
||||||
Method: "GET",
|
Method: "GET",
|
||||||
BeforeTest: SetTestENV,
|
BeforeTest: SetTestENV,
|
||||||
ExpectedStatus: 404,
|
ExpectedStatus: 404,
|
||||||
|
|
|
@ -52,6 +52,11 @@ func apiNotifierUpdateHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
}
|
}
|
||||||
|
|
||||||
notif := services.ReturnNotifier(notifer.Method)
|
notif := services.ReturnNotifier(notifer.Method)
|
||||||
|
if err := notif.Valid(notifer.Values()); err != nil {
|
||||||
|
sendErrorJson(err, w, r)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
if _, err := notif.OnSave(); err != nil {
|
if _, err := notif.OnSave(); err != nil {
|
||||||
sendErrorJson(err, w, r)
|
sendErrorJson(err, w, r)
|
||||||
return
|
return
|
||||||
|
|
|
@ -17,3 +17,39 @@ func TestReplaceTemplate(t *testing.T) {
|
||||||
replaced = ReplaceTemplate(temp, replacer{Service: services.Example(false), Failure: failures.Example()})
|
replaced = ReplaceTemplate(temp, replacer{Service: services.Example(false), Failure: failures.Example()})
|
||||||
assert.Equal(t, `{"id":6283,"name":"Statping Example","failure":"Response did not response a 200 status code"}`, replaced)
|
assert.Equal(t, `{"id":6283,"name":"Statping Example","failure":"Response did not response a 200 status code"}`, replaced)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestPushover_Select(t *testing.T) {
|
||||||
|
tests := []struct {
|
||||||
|
Value string
|
||||||
|
Expected string
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
"lowest",
|
||||||
|
"-2",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"low",
|
||||||
|
"-1",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"normal",
|
||||||
|
"0",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"high",
|
||||||
|
"1",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"emergency",
|
||||||
|
"2",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"",
|
||||||
|
"0",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, v := range tests {
|
||||||
|
assert.Equal(t, v.Expected, priority(v.Value))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -17,6 +17,13 @@ func SetDB(database database.Database) {
|
||||||
db = database.Model(&Group{})
|
db = database.Model(&Group{})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (g *Group) Validate() error {
|
||||||
|
if g.Name == "" {
|
||||||
|
return errors.New("group name is empty")
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func (g *Group) AfterFind() {
|
func (g *Group) AfterFind() {
|
||||||
metrics.Query("group", "find")
|
metrics.Query("group", "find")
|
||||||
}
|
}
|
||||||
|
@ -29,6 +36,14 @@ func (g *Group) AfterDelete() {
|
||||||
metrics.Query("group", "delete")
|
metrics.Query("group", "delete")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (g *Group) BeforeUpdate() error {
|
||||||
|
return g.Validate()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (g *Group) BeforeCreate() error {
|
||||||
|
return g.Validate()
|
||||||
|
}
|
||||||
|
|
||||||
func (g *Group) AfterCreate() {
|
func (g *Group) AfterCreate() {
|
||||||
metrics.Query("group", "create")
|
metrics.Query("group", "create")
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,6 +2,7 @@ package incidents
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/statping/statping/database"
|
"github.com/statping/statping/database"
|
||||||
|
"github.com/statping/statping/types/errors"
|
||||||
"github.com/statping/statping/types/metrics"
|
"github.com/statping/statping/types/metrics"
|
||||||
"github.com/statping/statping/utils"
|
"github.com/statping/statping/utils"
|
||||||
)
|
)
|
||||||
|
@ -17,6 +18,21 @@ func SetDB(database database.Database) {
|
||||||
dbUpdate = database.Model(&IncidentUpdate{})
|
dbUpdate = database.Model(&IncidentUpdate{})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (i *Incident) Validate() error {
|
||||||
|
if i.Title == "" {
|
||||||
|
return errors.New("missing title")
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (i *Incident) BeforeUpdate() error {
|
||||||
|
return i.Validate()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (i *Incident) BeforeCreate() error {
|
||||||
|
return i.Validate()
|
||||||
|
}
|
||||||
|
|
||||||
func (i *Incident) AfterFind() {
|
func (i *Incident) AfterFind() {
|
||||||
db.Model(i).Related(&i.Updates).Order("DESC")
|
db.Model(i).Related(&i.Updates).Order("DESC")
|
||||||
metrics.Query("incident", "find")
|
metrics.Query("incident", "find")
|
||||||
|
@ -34,6 +50,21 @@ func (i *Incident) AfterDelete() {
|
||||||
metrics.Query("incident", "delete")
|
metrics.Query("incident", "delete")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (i *IncidentUpdate) Validate() error {
|
||||||
|
if i.Message == "" {
|
||||||
|
return errors.New("missing incident update title")
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (i *IncidentUpdate) BeforeUpdate() error {
|
||||||
|
return i.Validate()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (i *IncidentUpdate) BeforeCreate() error {
|
||||||
|
return i.Validate()
|
||||||
|
}
|
||||||
|
|
||||||
func (i *IncidentUpdate) AfterFind() {
|
func (i *IncidentUpdate) AfterFind() {
|
||||||
metrics.Query("incident_update", "find")
|
metrics.Query("incident_update", "find")
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,17 +1,23 @@
|
||||||
package messages
|
package messages
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"github.com/statping/statping/types/errors"
|
||||||
"github.com/statping/statping/types/metrics"
|
"github.com/statping/statping/types/metrics"
|
||||||
"github.com/statping/statping/utils"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// BeforeCreate for Message will set CreatedAt to UTC
|
func (m *Message) Validate() error {
|
||||||
func (m *Message) BeforeCreate() (err error) {
|
if m.Title == "" {
|
||||||
if m.CreatedAt.IsZero() {
|
return errors.New("missing message title")
|
||||||
m.CreatedAt = utils.Now()
|
|
||||||
m.UpdatedAt = utils.Now()
|
|
||||||
}
|
}
|
||||||
return
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *Message) BeforeUpdate() error {
|
||||||
|
return m.Validate()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *Message) BeforeCreate() error {
|
||||||
|
return m.Validate()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *Message) AfterFind() {
|
func (m *Message) AfterFind() {
|
||||||
|
|
|
@ -12,6 +12,19 @@ func SetDB(database database.Database) {
|
||||||
db = database.Model(&Notification{})
|
db = database.Model(&Notification{})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (n *Notification) Values() Values {
|
||||||
|
return Values{
|
||||||
|
Host: n.Host.String,
|
||||||
|
Port: n.Port.Int64,
|
||||||
|
Username: n.Username.String,
|
||||||
|
Password: n.Password.String,
|
||||||
|
Var1: n.Var1.String,
|
||||||
|
Var2: n.Var2.String,
|
||||||
|
ApiKey: n.ApiKey.String,
|
||||||
|
ApiSecret: n.ApiSecret.String,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func Find(method string) (*Notification, error) {
|
func Find(method string) (*Notification, error) {
|
||||||
var n Notification
|
var n Notification
|
||||||
q := db.Where("method = ?", method).Find(&n)
|
q := db.Where("method = ?", method).Find(&n)
|
||||||
|
|
|
@ -15,6 +15,27 @@ var (
|
||||||
allServices map[int64]*Service
|
allServices map[int64]*Service
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func (s *Service) Validate() error {
|
||||||
|
if s.Name == "" {
|
||||||
|
return errors.New("missing service name")
|
||||||
|
} else if s.Domain == "" {
|
||||||
|
return errors.New("missing domain name")
|
||||||
|
} else if s.Type == "" {
|
||||||
|
return errors.New("missing service type")
|
||||||
|
} else if s.Interval == 0 {
|
||||||
|
return errors.New("missing check interval")
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *Service) BeforeCreate() error {
|
||||||
|
return s.Validate()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *Service) BeforeUpdate() error {
|
||||||
|
return s.Validate()
|
||||||
|
}
|
||||||
|
|
||||||
func (s *Service) AfterFind() {
|
func (s *Service) AfterFind() {
|
||||||
db.Model(s).Related(&s.Incidents).Related(&s.Messages).Related(&s.Checkins).Related(&s.Incidents)
|
db.Model(s).Related(&s.Incidents).Related(&s.Messages).Related(&s.Checkins).Related(&s.Incidents)
|
||||||
metrics.Query("service", "find")
|
metrics.Query("service", "find")
|
||||||
|
|
|
@ -1,9 +1,28 @@
|
||||||
package users
|
package users
|
||||||
|
|
||||||
import "github.com/statping/statping/utils"
|
import (
|
||||||
|
"github.com/statping/statping/types/errors"
|
||||||
|
"github.com/statping/statping/utils"
|
||||||
|
)
|
||||||
|
|
||||||
|
func (u *User) Validate() error {
|
||||||
|
if u.Username == "" {
|
||||||
|
return errors.New("username is empty")
|
||||||
|
} else if u.Password == "" {
|
||||||
|
return errors.New("password is empty")
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func (u *User) BeforeCreate() error {
|
func (u *User) BeforeCreate() error {
|
||||||
|
if err := u.Validate(); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
u.Password = utils.HashPassword(u.Password)
|
u.Password = utils.HashPassword(u.Password)
|
||||||
u.ApiKey = utils.NewSHA256Hash()
|
u.ApiKey = utils.NewSHA256Hash()
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (u *User) BeforeUpdate() error {
|
||||||
|
return u.Validate()
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue