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 }