mirror of https://github.com/statping/statping.git
parent
f62dcd4336
commit
e0288b21a4
@ -0,0 +1,117 @@
|
||||
package checkins
|
||||
|
||||
import (
|
||||
"github.com/statping/statping/database"
|
||||
"github.com/statping/statping/types/failures"
|
||||
"github.com/statping/statping/utils"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
"testing"
|
||||
"time"
|
||||
)
|
||||
|
||||
var testCheckin = &Checkin{
|
||||
ServiceId: 1,
|
||||
Name: "Test Checkin",
|
||||
Interval: 60,
|
||||
GracePeriod: 10,
|
||||
ApiKey: "tHiSiSaTeStXXX",
|
||||
CreatedAt: utils.Now(),
|
||||
UpdatedAt: utils.Now(),
|
||||
LastHitTime: utils.Now().Add(-15 * time.Second),
|
||||
}
|
||||
|
||||
var testCheckinHits = []*CheckinHit{{
|
||||
Checkin: 1,
|
||||
From: "0.0.0.0.0",
|
||||
CreatedAt: utils.Now().Add(-30 * time.Second),
|
||||
}, {
|
||||
Checkin: 2,
|
||||
From: "0.0.0.0",
|
||||
CreatedAt: utils.Now().Add(-180 * time.Second),
|
||||
}}
|
||||
|
||||
var testApiKey string
|
||||
|
||||
func TestInit(t *testing.T) {
|
||||
db, err := database.OpenTester()
|
||||
require.Nil(t, err)
|
||||
db.AutoMigrate(&Checkin{}, &CheckinHit{}, &failures.Failure{})
|
||||
db.Create(&testCheckin)
|
||||
for _, v := range testCheckinHits {
|
||||
db.Create(&v)
|
||||
}
|
||||
assert.True(t, db.HasTable(&Checkin{}))
|
||||
assert.True(t, db.HasTable(&CheckinHit{}))
|
||||
assert.True(t, db.HasTable(&failures.Failure{}))
|
||||
SetDB(db)
|
||||
}
|
||||
|
||||
func TestFind(t *testing.T) {
|
||||
item, err := Find(1)
|
||||
require.Nil(t, err)
|
||||
assert.Equal(t, "Test Checkin", item.Name)
|
||||
assert.NotEmpty(t, item.ApiKey)
|
||||
testApiKey = item.ApiKey
|
||||
}
|
||||
|
||||
func TestFindByAPI(t *testing.T) {
|
||||
item, err := FindByAPI(testApiKey)
|
||||
require.Nil(t, err)
|
||||
assert.Equal(t, "Test Checkin", item.Name)
|
||||
}
|
||||
|
||||
func TestAll(t *testing.T) {
|
||||
items := All()
|
||||
assert.Len(t, items, 1)
|
||||
}
|
||||
|
||||
func TestCreate(t *testing.T) {
|
||||
example := &Checkin{
|
||||
Name: "Example 2",
|
||||
}
|
||||
err := example.Create()
|
||||
example.Close()
|
||||
require.Nil(t, err)
|
||||
assert.NotZero(t, example.Id)
|
||||
assert.Equal(t, "Example 2", example.Name)
|
||||
assert.NotZero(t, example.CreatedAt)
|
||||
assert.NotEmpty(t, example.ApiKey)
|
||||
}
|
||||
|
||||
func TestUpdate(t *testing.T) {
|
||||
item, err := Find(1)
|
||||
require.Nil(t, err)
|
||||
item.Name = "Updated"
|
||||
|
||||
err = item.Update()
|
||||
require.Nil(t, err)
|
||||
assert.Equal(t, "Updated", item.Name)
|
||||
item.Close()
|
||||
}
|
||||
|
||||
func TestCheckin_Expected(t *testing.T) {
|
||||
item, err := Find(1)
|
||||
require.Nil(t, err)
|
||||
|
||||
expected := item.Expected()
|
||||
assert.GreaterOrEqual(t, expected.Seconds(), float64(29))
|
||||
}
|
||||
|
||||
func TestDelete(t *testing.T) {
|
||||
all := All()
|
||||
assert.Len(t, all, 2)
|
||||
|
||||
item, err := Find(2)
|
||||
require.Nil(t, err)
|
||||
|
||||
err = item.Delete()
|
||||
require.Nil(t, err)
|
||||
|
||||
all = All()
|
||||
assert.Len(t, all, 1)
|
||||
}
|
||||
|
||||
func TestClose(t *testing.T) {
|
||||
assert.Nil(t, db.Close())
|
||||
}
|
@ -0,0 +1,3 @@
|
||||
package checkins
|
||||
|
||||
//go:generate counterfeiter . Checkin
|
@ -0,0 +1,89 @@
|
||||
package groups
|
||||
|
||||
import (
|
||||
"github.com/statping/statping/database"
|
||||
"github.com/statping/statping/types/null"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
"testing"
|
||||
)
|
||||
|
||||
var example = &Group{
|
||||
Name: "Example Group",
|
||||
Public: null.NewNullBool(true),
|
||||
Order: 1,
|
||||
}
|
||||
|
||||
func TestInit(t *testing.T) {
|
||||
db, err := database.OpenTester()
|
||||
require.Nil(t, err)
|
||||
db.CreateTable(&Group{})
|
||||
db.Create(&example)
|
||||
SetDB(db)
|
||||
}
|
||||
|
||||
func TestFind(t *testing.T) {
|
||||
item, err := Find(1)
|
||||
require.Nil(t, err)
|
||||
assert.Equal(t, "Example Group", item.Name)
|
||||
}
|
||||
|
||||
func TestAll(t *testing.T) {
|
||||
items := All()
|
||||
assert.Len(t, items, 1)
|
||||
}
|
||||
|
||||
func TestCreate(t *testing.T) {
|
||||
example := &Group{
|
||||
Name: "Example 2",
|
||||
Public: null.NewNullBool(false),
|
||||
Order: 3,
|
||||
}
|
||||
err := example.Create()
|
||||
require.Nil(t, err)
|
||||
assert.NotZero(t, example.Id)
|
||||
assert.Equal(t, "Example 2", example.Name)
|
||||
assert.NotZero(t, example.CreatedAt)
|
||||
}
|
||||
|
||||
func TestUpdate(t *testing.T) {
|
||||
item, err := Find(1)
|
||||
require.Nil(t, err)
|
||||
item.Name = "Updated"
|
||||
item.Order = 1
|
||||
err = item.Update()
|
||||
require.Nil(t, err)
|
||||
assert.Equal(t, "Updated", item.Name)
|
||||
}
|
||||
|
||||
func TestSelectGroups(t *testing.T) {
|
||||
groups := SelectGroups(true, true)
|
||||
assert.Len(t, groups, 2)
|
||||
|
||||
groups = SelectGroups(false, false)
|
||||
assert.Len(t, groups, 1)
|
||||
|
||||
groups = SelectGroups(false, true)
|
||||
assert.Len(t, groups, 2)
|
||||
|
||||
assert.Equal(t, "Updated", groups[0].Name)
|
||||
assert.Equal(t, "Example 2", groups[1].Name)
|
||||
}
|
||||
|
||||
func TestDelete(t *testing.T) {
|
||||
all := All()
|
||||
assert.Len(t, all, 2)
|
||||
|
||||
item, err := Find(1)
|
||||
require.Nil(t, err)
|
||||
|
||||
err = item.Delete()
|
||||
require.Nil(t, err)
|
||||
|
||||
all = All()
|
||||
assert.Len(t, all, 1)
|
||||
}
|
||||
|
||||
func TestClose(t *testing.T) {
|
||||
assert.Nil(t, db.Close())
|
||||
}
|
@ -1,25 +1,23 @@
|
||||
package incidents
|
||||
|
||||
import "github.com/statping/statping/database"
|
||||
|
||||
func (i *Incident) Updates() []*IncidentUpdate {
|
||||
var updates []*IncidentUpdate
|
||||
database.DB().Model(&IncidentUpdate{}).Where("incident = ?", i.Id).Find(&updates)
|
||||
db.Model(&IncidentUpdate{}).Where("incident = ?", i.Id).Find(&updates)
|
||||
i.AllUpdates = updates
|
||||
return updates
|
||||
}
|
||||
|
||||
func (i *IncidentUpdate) Create() error {
|
||||
db := database.DB().Create(i)
|
||||
return db.Error()
|
||||
q := db.Create(i)
|
||||
return q.Error()
|
||||
}
|
||||
|
||||
func (i *IncidentUpdate) Update() error {
|
||||
db := database.DB().Update(i)
|
||||
return db.Error()
|
||||
q := db.Update(i)
|
||||
return q.Error()
|
||||
}
|
||||
|
||||
func (i *IncidentUpdate) Delete() error {
|
||||
db := database.DB().Delete(i)
|
||||
return db.Error()
|
||||
q := db.Delete(i)
|
||||
return q.Error()
|
||||
}
|
||||
|
@ -0,0 +1,83 @@
|
||||
package incidents
|
||||
|
||||
import (
|
||||
"github.com/statping/statping/database"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
"testing"
|
||||
)
|
||||
|
||||
var example = &Incident{
|
||||
Title: "Example",
|
||||
Description: "No description",
|
||||
ServiceId: 1,
|
||||
}
|
||||
|
||||
var update1 = &IncidentUpdate{
|
||||
IncidentId: 1,
|
||||
Message: "First one here",
|
||||
Type: "update",
|
||||
}
|
||||
|
||||
var update2 = &IncidentUpdate{
|
||||
IncidentId: 1,
|
||||
Message: "Second one here",
|
||||
Type: "update",
|
||||
}
|
||||
|
||||
func TestInit(t *testing.T) {
|
||||
db, err := database.OpenTester()
|
||||
require.Nil(t, err)
|
||||
db.AutoMigrate(&Incident{}, &IncidentUpdate{})
|
||||
db.Create(&example)
|
||||
SetDB(db)
|
||||
}
|
||||
|
||||
func TestFind(t *testing.T) {
|
||||
item, err := Find(1)
|
||||
require.Nil(t, err)
|
||||
assert.Equal(t, "Example", item.Title)
|
||||
}
|
||||
|
||||
func TestAll(t *testing.T) {
|
||||
items := All()
|
||||
assert.Len(t, items, 1)
|
||||
}
|
||||
|
||||
func TestCreate(t *testing.T) {
|
||||
example := &Incident{
|
||||
Title: "Example 2",
|
||||
}
|
||||
err := example.Create()
|
||||
require.Nil(t, err)
|
||||
assert.NotZero(t, example.Id)
|
||||
assert.Equal(t, "Example 2", example.Title)
|
||||
assert.NotZero(t, example.CreatedAt)
|
||||
}
|
||||
|
||||
func TestUpdate(t *testing.T) {
|
||||
item, err := Find(1)
|
||||
require.Nil(t, err)
|
||||
item.Title = "Updated"
|
||||
err = item.Update()
|
||||
require.Nil(t, err)
|
||||
assert.Equal(t, "Updated", item.Title)
|
||||
}
|
||||
|
||||
func TestDelete(t *testing.T) {
|
||||
all := All()
|
||||
assert.Len(t, all, 2)
|
||||
|
||||
item, err := Find(1)
|
||||
require.Nil(t, err)
|
||||
|
||||
err = item.Delete()
|
||||
require.Nil(t, err)
|
||||
|
||||
all = All()
|
||||
assert.Len(t, all, 1)
|
||||
}
|
||||
|
||||
func TestClose(t *testing.T) {
|
||||
assert.Nil(t, db.Close())
|
||||
}
|
@ -0,0 +1,76 @@
|
||||
package messages
|
||||
|
||||
import (
|
||||
"github.com/statping/statping/database"
|
||||
"github.com/statping/statping/utils"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
"testing"
|
||||
"time"
|
||||
)
|
||||
|
||||
var example = &Message{
|
||||
Title: "Example Message",
|
||||
Description: "Description here",
|
||||
StartOn: utils.Now().Add(10 * time.Minute),
|
||||
EndOn: utils.Now().Add(15 * time.Minute),
|
||||
ServiceId: 1,
|
||||
}
|
||||
|
||||
func TestInit(t *testing.T) {
|
||||
db, err := database.OpenTester()
|
||||
require.Nil(t, err)
|
||||
db.CreateTable(&Message{})
|
||||
db.Create(&example)
|
||||
SetDB(db)
|
||||
}
|
||||
|
||||
func TestFind(t *testing.T) {
|
||||
item, err := Find(1)
|
||||
require.Nil(t, err)
|
||||
assert.Equal(t, "Example Message", item.Title)
|
||||
}
|
||||
|
||||
func TestAll(t *testing.T) {
|
||||
items := All()
|
||||
assert.Len(t, items, 1)
|
||||
}
|
||||
|
||||
func TestCreate(t *testing.T) {
|
||||
example := &Message{
|
||||
Title: "Example 2",
|
||||
Description: "New Message here",
|
||||
}
|
||||
err := example.Create()
|
||||
require.Nil(t, err)
|
||||
assert.NotZero(t, example.Id)
|
||||
assert.Equal(t, "Example 2", example.Title)
|
||||
assert.NotZero(t, example.CreatedAt)
|
||||
}
|
||||
|
||||
func TestUpdate(t *testing.T) {
|
||||
item, err := Find(1)
|
||||
require.Nil(t, err)
|
||||
item.Title = "Updated"
|
||||
err = item.Update()
|
||||
require.Nil(t, err)
|
||||
assert.Equal(t, "Updated", item.Title)
|
||||
}
|
||||
|
||||
func TestDelete(t *testing.T) {
|
||||
all := All()
|
||||
assert.Len(t, all, 2)
|
||||
|
||||
item, err := Find(1)
|
||||
require.Nil(t, err)
|
||||
|
||||
err = item.Delete()
|
||||
require.Nil(t, err)
|
||||
|
||||
all = All()
|
||||
assert.Len(t, all, 1)
|
||||
}
|
||||
|
||||
func TestClose(t *testing.T) {
|
||||
assert.Nil(t, db.Close())
|
||||
}
|
@ -0,0 +1,135 @@
|
||||
package notifications
|
||||
|
||||
import (
|
||||
"github.com/statping/statping/database"
|
||||
"github.com/statping/statping/types/null"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
"testing"
|
||||
)
|
||||
|
||||
var form1 = NotificationForm{
|
||||
Type: "text",
|
||||
Title: "Example Input",
|
||||
DbField: "Host",
|
||||
Required: true,
|
||||
IsHidden: false,
|
||||
IsList: false,
|
||||
IsSwitch: false,
|
||||
}
|
||||
|
||||
var form2 = NotificationForm{
|
||||
Type: "text",
|
||||
Title: "Example Input 2",
|
||||
DbField: "ApiKey",
|
||||
Required: true,
|
||||
IsHidden: false,
|
||||
IsList: false,
|
||||
IsSwitch: false,
|
||||
}
|
||||
|
||||
var example = &exampleNotif{&Notification{
|
||||
Method: "example",
|
||||
Enabled: null.NewNullBool(true),
|
||||
Limits: 3,
|
||||
Removable: false,
|
||||
Form: []NotificationForm{form1, form2},
|
||||
Delay: 30,
|
||||
}}
|
||||
|
||||
type exampleNotif struct {
|
||||
*Notification
|
||||
}
|
||||
|
||||
func (e *exampleNotif) OnSave() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (e *exampleNotif) Select() *Notification {
|
||||
return e.Notification
|
||||
}
|
||||
|
||||
func (e *exampleNotif) Send(data interface{}) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func TestInit(t *testing.T) {
|
||||
db, err := database.OpenTester()
|
||||
require.Nil(t, err)
|
||||
db.CreateTable(&Notification{})
|
||||
db.Create(example.Select())
|
||||
SetDB(db)
|
||||
}
|
||||
|
||||
func TestFind(t *testing.T) {
|
||||
Append(example)
|
||||
itemer, err := Find(example.Method)
|
||||
require.Nil(t, err)
|
||||
|
||||
item := itemer.Select()
|
||||
require.NotNil(t, item)
|
||||
|
||||
assert.Equal(t, "example", item.Method)
|
||||
assert.Len(t, allNotifiers, 1)
|
||||
}
|
||||
|
||||
func TestAll(t *testing.T) {
|
||||
items := All()
|
||||
assert.Len(t, items, 1)
|
||||
assert.Len(t, allNotifiers, 1)
|
||||
}
|
||||
|
||||
func TestCreate(t *testing.T) {
|
||||
assert.Len(t, allNotifiers, 1)
|
||||
|
||||
example := &Notification{
|
||||
Method: "anotherexample",
|
||||
Title: "Example 2",
|
||||
Description: "New Message here",
|
||||
}
|
||||
err := example.Create()
|
||||
require.Nil(t, err)
|
||||
assert.NotZero(t, example.Id)
|
||||
assert.Equal(t, "anotherexample", example.Method)
|
||||
assert.Equal(t, "Example 2", example.Title)
|
||||
assert.NotZero(t, example.CreatedAt)
|
||||
|
||||
items := All()
|
||||
assert.Len(t, items, 2)
|
||||
assert.Len(t, allNotifiers, 2)
|
||||
}
|
||||
|
||||
func TestUpdate(t *testing.T) {
|
||||
itemer, err := Find("anotherexample")
|
||||
require.Nil(t, err)
|
||||
require.NotNil(t, itemer)
|
||||
|
||||
item := itemer.Select()
|
||||
require.NotNil(t, item)
|
||||
|
||||
item.Host = "Updated Host Var"
|
||||
err = item.Update()
|
||||
require.Nil(t, err)
|
||||
assert.Equal(t, "Updated Host Var", item.Host)
|
||||
}
|
||||
|
||||
func TestDelete(t *testing.T) {
|
||||
all := All()
|
||||
assert.Len(t, all, 2)
|
||||
|
||||
itemer, err := Find("example2")
|
||||
require.Nil(t, err)
|
||||
|
||||
item := itemer.Select()
|
||||
require.NotNil(t, item)
|
||||
|
||||
err = item.Delete()
|
||||
require.Nil(t, err)
|
||||
|
||||
all = All()
|
||||
assert.Len(t, all, 2)
|
||||
}
|
||||
|
||||
func TestClose(t *testing.T) {
|
||||
assert.Nil(t, db.Close())
|
||||
}
|
@ -0,0 +1,29 @@
|
||||
package null
|
||||
|
||||
import (
|
||||
"github.com/stretchr/testify/assert"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestNewNullBool(t *testing.T) {
|
||||
val := NewNullBool(true)
|
||||
assert.True(t, val.Bool)
|
||||
|
||||
val = NewNullBool(false)
|
||||
assert.False(t, val.Bool)
|
||||
}
|
||||
|
||||
func TestNewNullInt64(t *testing.T) {
|
||||
val := NewNullInt64(29)
|
||||
assert.Equal(t, int64(29), val.Int64)
|
||||
}
|
||||
|
||||
func TestNewNullString(t *testing.T) {
|
||||
val := NewNullString("statping.com")
|
||||
assert.Equal(t, "statping.com", val.String)
|
||||
}
|
||||
|
||||
func TestNewNullFloat64(t *testing.T) {
|
||||
val := NewNullFloat64(42.222)
|
||||
assert.Equal(t, float64(42.222), val.Float64)
|
||||
}
|
@ -0,0 +1,285 @@
|
||||
package services
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/statping/statping/database"
|
||||
"github.com/statping/statping/types/checkins"
|
||||
"github.com/statping/statping/types/failures"
|
||||
"github.com/statping/statping/types/hits"
|
||||
"github.com/statping/statping/types/null"
|
||||
"github.com/statping/statping/utils"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
"testing"
|
||||
"time"
|
||||
)
|
||||
|
||||
var example = &Service{
|
||||
Name: "Example Service",
|
||||
Domain: "https://statping.com",
|
||||
ExpectedStatus: 200,
|
||||
Interval: 30,
|
||||
Type: "http",
|
||||
Method: "GET",
|
||||
Timeout: 5,
|
||||
Order: 1,
|
||||
VerifySSL: null.NewNullBool(true),
|
||||
Public: null.NewNullBool(true),
|
||||
GroupId: 1,
|
||||
Permalink: null.NewNullString("statping"),
|
||||
LastCheck: utils.Now().Add(-5 * time.Second),
|
||||
LastOffline: utils.Now().Add(-5 * time.Second),
|
||||
LastOnline: utils.Now().Add(-60 * time.Second),
|
||||
}
|
||||
|
||||
var hit1 = &hits.Hit{
|
||||
Service: 1,
|
||||
Latency: 0.1234,
|
||||
PingTime: 0.01234,
|
||||
CreatedAt: utils.Now().Add(-120 * time.Second),
|
||||
}
|
||||
|
||||
var hit2 = &hits.Hit{
|
||||
Service: 1,
|
||||
Latency: 0.2345,
|
||||
PingTime: 0.02345,
|
||||
CreatedAt: utils.Now().Add(-60 * time.Second),
|
||||
}
|
||||
|
||||
var hit3 = &hits.Hit{
|
||||
Service: 1,
|
||||
Latency: 0.3456,
|
||||
PingTime: 0.03456,
|
||||
CreatedAt: utils.Now().Add(-30 * time.Second),
|
||||
}
|
||||
|
||||
var exmapleCheckin = &checkins.Checkin{
|
||||
ServiceId: 1,
|
||||
Name: "Example Checkin",
|
||||
Interval: 60,
|
||||
GracePeriod: 30,
|
||||
ApiKey: "wdededede",
|
||||
}
|
||||
|
||||
var fail1 = &failures.Failure{
|
||||
Issue: "example not found",
|
||||
ErrorCode: 404,
|
||||
Service: 1,
|
||||
PingTime: 0.0123,
|
||||
CreatedAt: utils.Now().Add(-160 * time.Second),
|
||||
}
|
||||
|
||||
var fail2 = &failures.Failure{
|
||||
Issue: "example 2 not found",
|
||||
ErrorCode: 500,
|
||||
Service: 1,
|
||||
PingTime: 0.0123,
|
||||
CreatedAt: utils.Now().Add(-5 * time.Second),
|
||||
}
|
||||
|
||||
func TestInit(t *testing.T) {
|
||||
db, err := database.OpenTester()
|
||||
require.Nil(t, err)
|
||||
db.AutoMigrate(&Service{}, &hits.Hit{}, &checkins.Checkin{}, &checkins.CheckinHit{}, &failures.Failure{})
|
||||
db.Create(&example)
|
||||
db.Create(&hit1)
|
||||
db.Create(&hit2)
|
||||
db.Create(&hit3)
|
||||
db.Create(&exmapleCheckin)
|
||||
db.Create(&fail1)
|
||||
db.Create(&fail2)
|
||||
checkins.SetDB(db)
|
||||
failures.SetDB(db)
|
||||
hits.SetDB(db)
|
||||
SetDB(db)
|
||||
}
|
||||
|
||||
func TestFind(t *testing.T) {
|
||||
item, err := Find(1)
|
||||
require.Nil(t, err)
|
||||
assert.Equal(t, "Example Service", item.Name)
|
||||
assert.NotZero(t, item.LastOnline)
|
||||
assert.NotZero(t, item.LastOffline)
|
||||
assert.NotZero(t, item.LastCheck)
|
||||
}
|
||||
|
||||
func TestAll(t *testing.T) {
|
||||
items := All()
|
||||
assert.Len(t, items, 1)
|
||||
}
|
||||
|
||||
func TestService_Checkins(t *testing.T) {
|
||||
item, err := Find(1)
|
||||
require.Nil(t, err)
|
||||
assert.Len(t, item.Checkins(), 1)
|
||||
}
|
||||
|
||||
func TestService_AllHits(t *testing.T) {
|
||||
item, err := Find(1)
|
||||
require.Nil(t, err)
|
||||
assert.Len(t, item.AllHits().List(), 3)
|
||||
assert.Equal(t, 3, item.AllHits().Count())
|
||||
}
|
||||
|
||||
func TestService_AllFailures(t *testing.T) {
|
||||
item, err := Find(1)
|
||||
require.Nil(t, err)
|
||||
assert.Len(t, item.AllFailures().List(), 2)
|
||||
assert.Equal(t, 2, item.AllFailures().Count())
|
||||
}
|
||||
|
||||
func TestService_FirstHit(t *testing.T) {
|
||||
item, err := Find(1)
|
||||
require.Nil(t, err)
|
||||
hit := item.FirstHit()
|
||||
assert.Equal(t, int64(1), hit.Id)
|
||||
}
|
||||
|
||||
func TestService_LastHit(t *testing.T) {
|
||||
item, err := Find(1)
|
||||
require.Nil(t, err)
|
||||
hit := item.AllHits().Last()
|
||||
assert.Equal(t, int64(3), hit.Id)
|
||||
}
|
||||
|
||||
func TestService_LastFailure(t *testing.T) {
|
||||
item, err := Find(1)
|
||||
require.Nil(t, err)
|
||||
fail := item.AllFailures().Last()
|
||||
assert.Equal(t, int64(2), fail.Id)
|
||||
}
|
||||
|
||||
func TestService_Duration(t *testing.T) {
|
||||
item, err := Find(1)
|
||||
require.Nil(t, err)
|
||||
assert.Equal(t, float64(30), item.Duration().Seconds())
|
||||
}
|
||||
|
||||
func TestService_AvgTime(t *testing.T) {
|
||||
item, err := Find(1)
|
||||
require.Nil(t, err)
|
||||
|
||||
assert.Equal(t, "", item.AvgTime())
|
||||
}
|
||||
|
||||
func TestService_HitsSince(t *testing.T) {
|
||||
item, err := Find(1)
|
||||
require.Nil(t, err)
|
||||
|
||||
count := item.HitsSince(utils.Now().Add(-30 * time.Second))
|
||||
assert.Equal(t, 1, count.Count())
|
||||
|
||||
count = item.HitsSince(utils.Now().Add(-180 * time.Second))
|
||||
assert.Equal(t, 3, count.Count())
|
||||
}
|
||||
|
||||
func TestService_IsRunning(t *testing.T) {
|
||||
item, err := Find(1)
|
||||
require.Nil(t, err)
|
||||
assert.False(t, item.IsRunning())
|
||||
}
|
||||
|
||||
func TestService_OnlineDaysPercent(t *testing.T) {
|
||||
item, err := Find(1)
|
||||
require.Nil(t, err)
|
||||
|
||||
amount := item.OnlineDaysPercent(1)
|
||||
|
||||
assert.Equal(t, "", amount)
|
||||
}
|
||||
|
||||
func TestService_Downtime(t *testing.T) {
|
||||
item, err := Find(1)
|
||||
require.Nil(t, err)
|
||||
amount := item.Downtime().Seconds()
|
||||
assert.Equal(t, "25", fmt.Sprintf("%0.f", amount))
|
||||
}
|
||||
|
||||
func TestService_FailuresSince(t *testing.T) {
|
||||
item, err := Find(1)
|
||||
require.Nil(t, err)
|
||||
|
||||
count := item.FailuresSince(utils.Now().Add(-6 * time.Second))
|
||||
assert.Equal(t, 1, count.Count())
|
||||
|
||||
count = item.FailuresSince(utils.Now().Add(-180 * time.Second))
|
||||
assert.Equal(t, 2, count.Count())
|
||||
}
|
||||
|
||||
func TestCreate(t *testing.T) {
|
||||
example := &Service{
|
||||
Name: "Example Service 2",
|
||||
Domain: "https://slack.statping.com",
|
||||
ExpectedStatus: 200,
|
||||
Interval: 10,
|
||||
Type: "http",
|
||||
Method: "GET",
|
||||
Timeout: 5,
|
||||
Order: 3,
|
||||
VerifySSL: null.NewNullBool(true),
|
||||
Public: null.NewNullBool(false),
|
||||
GroupId: 1,
|
||||
Permalink: null.NewNullString("statping2"),
|
||||
}
|
||||
err := example.Create()
|
||||
require.Nil(t, err)
|
||||
assert.NotZero(t, example.Id)
|
||||
assert.Equal(t, "Example Service 2", example.Name)
|
||||
assert.False(t, example.Public.Bool)
|
||||
assert.NotZero(t, example.CreatedAt)
|
||||
assert.Equal(t, int64(2), example.Id)
|
||||
assert.Len(t, allServices, 2)
|
||||
}
|
||||
|
||||
func TestUpdate(t *testing.T) {
|
||||
item, err := Find(1)
|
||||
require.Nil(t, err)
|
||||
item.Name = "Updated Service"
|
||||
item.Order = 1
|
||||
err = item.Update()
|
||||
require.Nil(t, err)
|
||||
assert.Equal(t, int64(1), item.Id)
|
||||
assert.Equal(t, "Updated Service", item.Name)
|
||||
}
|
||||
|
||||
func TestAllInOrder(t *testing.T) {
|
||||
inOrder := AllInOrder()
|
||||
assert.Len(t, inOrder, 2)
|
||||
assert.Equal(t, "Updated Service", inOrder[0].Name)
|
||||
assert.Equal(t, "Example Service 2", inOrder[1].Name)
|
||||
}
|
||||
|
||||
func TestDelete(t *testing.T) {
|
||||
all := All()
|
||||
assert.Len(t, all, 2)
|
||||
|
||||
item, err := Find(1)
|
||||
require.Nil(t, err)
|
||||
assert.Equal(t, int64(1), item.Id)
|
||||
|
||||
err = item.Delete()
|
||||
require.Nil(t, err)
|
||||
|
||||
all = All()
|
||||
assert.Len(t, all, 1)
|
||||
}
|
||||
|
||||
func TestService_CheckService(t *testing.T) {
|
||||
item, err := Find(2)
|
||||
require.Nil(t, err)
|
||||
|
||||
hitsCount := item.AllHits().Count()
|
||||
failsCount := item.AllFailures().Count()
|
||||
|
||||
assert.Equal(t, 3, hitsCount)
|
||||
assert.Equal(t, 2, failsCount)
|
||||
|
||||
item.CheckService(true)
|
||||
|
||||
assert.Equal(t, 4, hitsCount)
|
||||
assert.Equal(t, 2, failsCount)
|
||||
}
|
||||
|
||||
func TestClose(t *testing.T) {
|
||||
assert.Nil(t, db.Close())
|
||||
}
|
@ -0,0 +1,92 @@
|
||||
package users
|
||||
|
||||
import (
|
||||
"github.com/statping/statping/database"
|
||||
"github.com/statping/statping/types/null"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
"testing"
|
||||
)
|
||||
|
||||
var example = &User{
|
||||
Username: "example_user",
|
||||
Email: "Description here",
|
||||
Password: "password123",
|
||||
Admin: null.NewNullBool(true),
|
||||
}
|
||||
|
||||
func TestInit(t *testing.T) {
|
||||
db, err := database.OpenTester()
|
||||
require.Nil(t, err)
|
||||
db.CreateTable(&User{})
|
||||
db.Create(&example)
|
||||
SetDB(db)
|
||||
}
|
||||
|
||||
func TestFind(t *testing.T) {
|
||||
item, err := Find(1)
|
||||
require.Nil(t, err)
|
||||
assert.Equal(t, "example_user", item.Username)
|
||||
assert.NotEmpty(t, item.ApiKey)
|
||||
assert.NotEmpty(t, item.ApiSecret)
|
||||
assert.NotEqual(t, "password123", item.Password)
|
||||
assert.True(t, item.Admin.Bool)
|
||||
}
|
||||
|
||||
func TestFindByUsername(t *testing.T) {
|
||||
item, err := FindByUsername("example_user")
|
||||
require.Nil(t, err)
|
||||
assert.Equal(t, "example_user", item.Username)
|
||||
assert.NotEmpty(t, item.ApiKey)
|
||||
assert.NotEmpty(t, item.ApiSecret)
|
||||
assert.NotEqual(t, "password123", item.Password)
|
||||
assert.True(t, item.Admin.Bool)
|
||||
}
|
||||
|
||||
func TestAll(t *testing.T) {
|
||||
items := All()
|
||||
assert.Len(t, items, 1)
|
||||
}
|
||||
|
||||
func TestCreate(t *testing.T) {
|
||||
example := &User{
|
||||
Username: "exampleuser2",
|
||||
Password: "password12345",
|
||||
Email: "info@yahoo.com",
|
||||
}
|
||||
err := example.Create()
|
||||
require.Nil(t, err)
|
||||
assert.NotZero(t, example.Id)
|
||||
assert.Equal(t, "exampleuser2", example.Username)
|
||||
assert.NotEqual(t, "password12345", example.Password)
|
||||
assert.NotZero(t, example.CreatedAt)
|
||||
assert.NotEmpty(t, example.ApiKey)
|
||||
assert.NotEmpty(t, example.ApiSecret)
|
||||
}
|
||||
|
||||
func TestUpdate(t *testing.T) {
|
||||
item, err := Find(1)
|
||||
require.Nil(t, err)
|
||||
item.Username = "updated_user"
|
||||
err = item.Update()
|
||||
require.Nil(t, err)
|
||||
assert.Equal(t, "updated_user", item.Username)
|
||||
}
|
||||
|
||||
func TestDelete(t *testing.T) {
|
||||
all := All()
|
||||
assert.Len(t, all, 2)
|
||||
|
||||
item, err := Find(1)
|
||||
require.Nil(t, err)
|
||||
|
||||
err = item.Delete()
|
||||
require.Nil(t, err)
|
||||
|
||||
all = All()
|
||||
assert.Len(t, all, 1)
|
||||
}
|
||||
|
||||
func TestClose(t *testing.T) {
|
||||
assert.Nil(t, db.Close())
|
||||
}
|
Loading…
Reference in new issue