sermoni

"Service monitor" / cronjob status service
Log | Files | Refs

events_test.go (1969B)


      1 package events
      2 
      3 import (
      4 	"fmt"
      5 	"os"
      6 	"sermoni/internal/config"
      7 	"sermoni/internal/database"
      8 	"sermoni/internal/services"
      9 	"testing"
     10 )
     11 
     12 const serviceToken = "test-service"
     13 
     14 func (e1 *Event) equals(e2 *Event) bool {
     15 	switch {
     16 	case e1.ID != e2.ID:
     17 		return false
     18 	case e1.Service != e2.Service:
     19 		return false
     20 	case e1.Status != e2.Status:
     21 		return false
     22 	case e1.Title != e2.Title:
     23 		return false
     24 	case e1.Details != e2.Details:
     25 		return false
     26 	default:
     27 		return true
     28 	}
     29 }
     30 
     31 var testEvents = []*Event{
     32 	{
     33 		Service:   1,
     34 		Timestamp: 1586558825515,
     35 		Status:    "ok",
     36 		Title:     "Backup completed successfully",
     37 	},
     38 	{
     39 		Service:   1,
     40 		Timestamp: 1586558838488,
     41 		Status:    "info",
     42 		Title:     "SSH login for user vetle",
     43 		Details:   "User vetle logged in from IP 192.168.10.110",
     44 	},
     45 	{
     46 		Service:   1,
     47 		Timestamp: 1586558848488,
     48 		Status:    "ok",
     49 	},
     50 	{
     51 		Service:   1,
     52 		Timestamp: 1586558949488,
     53 		Status:    "error",
     54 		Title:     "Backup failed",
     55 		Details:   "Backup couldn't complete because the disk is full",
     56 	},
     57 }
     58 
     59 func TestAddEvent(t *testing.T) {
     60 	var err error
     61 	for _, event := range testEvents {
     62 		if err = Add(event); err != nil {
     63 			fmt.Println(err)
     64 			t.Fatal("error returned when trying to add event")
     65 		}
     66 	}
     67 
     68 	// Assumes that bbolt starts sequences on 1
     69 	for i, event := range testEvents {
     70 		event.ID = uint64(i) + 1
     71 		event.Service = 1
     72 	}
     73 }
     74 
     75 func TestGetAll(t *testing.T) {
     76 	events := GetAll()
     77 	for i, event := range events {
     78 		if !event.equals(testEvents[i]) {
     79 			t.Fatal("stored event does not match original")
     80 		}
     81 	}
     82 }
     83 
     84 func TestMain(m *testing.M) {
     85 	// (Re)create the test database
     86 	testDB := "test.db"
     87 	os.Remove(testDB)
     88 	database.Open(testDB)
     89 	config.InitConfig()
     90 	err := services.Add(&services.Service{
     91 		Token:       serviceToken,
     92 		Name:        "test @ dev-laptop",
     93 		Description: "Service used for testing only",
     94 	})
     95 	if err != nil {
     96 		print("Couldn't add test service")
     97 		os.Exit(1)
     98 	}
     99 	defer database.Close()
    100 	os.Exit(m.Run())
    101 }