79 lines
1.6 KiB
Go
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)
|
|
}
|
|
})
|
|
}
|
|
}
|