rmmagent/agent/services/services_windows_test.go
2022-06-20 16:51:00 -07:00

79 lines
1.6 KiB
Go

package services_test
import (
"errors"
"fmt"
"testing"
"github.com/amidaware/rmmagent/agent/services"
"golang.org/x/sys/windows"
)
func TestGetServices(t *testing.T) {
testTable := []struct {
name string
expected []services.Service
atLeast int
expectedError error
}{
{
name: "Get Services",
expected: []services.Service{},
atLeast: 1,
expectedError: nil,
},
}
for _, tt := range testTable {
t.Run(tt.name, func(t *testing.T) {
result, errs, err := services.GetServices()
if fmt.Sprintf("%T", result) != "[]services.Service" {
t.Errorf("expected type %T, got type %T", tt.expected, result)
}
if len(errs) > 0 {
t.Logf("Continue errors occured %v", errs)
}
if err != nil {
t.Errorf("expected error (%v), got error(%v)", tt.expectedError, err)
}
if len(result) < tt.atLeast {
t.Errorf("expect at least %d, got %d", tt.atLeast, len(result))
}
})
}
}
func TestGetServiceStatus(t *testing.T) {
testTable := []struct {
name string
expected string
expectedError error
}{
{
name: "CryptSvc",
expected: "running",
expectedError: nil,
},
{
name: "NonExistentService",
expected: "n/a",
expectedError: windows.ERROR_SERVICE_DOES_NOT_EXIST,
},
}
for _, tt := range testTable {
t.Run(tt.name, func(t *testing.T) {
result, err := services.GetServiceStatus(tt.name)
if result != tt.expected {
t.Errorf("expected %s, got %s", tt.expected, result)
}
if !errors.Is(err, tt.expectedError) {
t.Errorf("expected (%v), got (%v)", tt.expectedError, err)
}
})
}
}