79 lines
1.9 KiB
Go
79 lines
1.9 KiB
Go
|
//go:build windows
|
||
|
|
||
|
// these tests must be run under administrator account
|
||
|
package win_services
|
||
|
|
||
|
import (
|
||
|
"testing"
|
||
|
|
||
|
"github.com/stretchr/testify/require"
|
||
|
|
||
|
"github.com/influxdata/telegraf/testutil"
|
||
|
)
|
||
|
|
||
|
var invalidServices = []string{"XYZ1@", "ZYZ@", "SDF_@#"}
|
||
|
var knownServices = []string{"LanmanServer", "TermService"}
|
||
|
|
||
|
func TestListIntegration(t *testing.T) {
|
||
|
if testing.Short() {
|
||
|
t.Skip("Skipping integration test in short mode")
|
||
|
}
|
||
|
provider := &mgProvider{}
|
||
|
scmgr, err := provider.connect()
|
||
|
require.NoError(t, err)
|
||
|
defer func() {
|
||
|
err := scmgr.disconnect()
|
||
|
require.NoError(t, err)
|
||
|
}()
|
||
|
|
||
|
winServices := &WinServices{
|
||
|
ServiceNames: knownServices,
|
||
|
}
|
||
|
|
||
|
require.NoError(t, winServices.Init())
|
||
|
services, err := winServices.listServices(scmgr)
|
||
|
require.NoError(t, err)
|
||
|
require.Len(t, services, 2, "Different number of services")
|
||
|
require.Equal(t, services[0], knownServices[0])
|
||
|
require.Equal(t, services[1], knownServices[1])
|
||
|
}
|
||
|
|
||
|
func TestEmptyListIntegration(t *testing.T) {
|
||
|
if testing.Short() {
|
||
|
t.Skip("Skipping integration test in short mode")
|
||
|
}
|
||
|
provider := &mgProvider{}
|
||
|
scmgr, err := provider.connect()
|
||
|
require.NoError(t, err)
|
||
|
defer func() {
|
||
|
err := scmgr.disconnect()
|
||
|
require.NoError(t, err)
|
||
|
}()
|
||
|
|
||
|
winServices := &WinServices{
|
||
|
ServiceNames: make([]string, 0),
|
||
|
}
|
||
|
|
||
|
require.NoError(t, winServices.Init())
|
||
|
services, err := winServices.listServices(scmgr)
|
||
|
require.NoError(t, err)
|
||
|
require.Condition(t, func() bool { return len(services) > 20 }, "Too few service")
|
||
|
}
|
||
|
|
||
|
func TestGatherErrorsIntegration(t *testing.T) {
|
||
|
if testing.Short() {
|
||
|
t.Skip("Skipping integration test in short mode")
|
||
|
}
|
||
|
ws := &WinServices{
|
||
|
Log: testutil.Logger{},
|
||
|
ServiceNames: invalidServices,
|
||
|
mgrProvider: &mgProvider{},
|
||
|
}
|
||
|
|
||
|
require.NoError(t, ws.Init())
|
||
|
require.Len(t, ws.ServiceNames, 3, "Different number of services")
|
||
|
var acc testutil.Accumulator
|
||
|
require.NoError(t, ws.Gather(&acc))
|
||
|
require.Len(t, acc.Errors, 3, "There should be 3 errors after gather")
|
||
|
}
|