go.mondoo.com/cnquery@v0.0.0-20231005093811-59568235f6ea/providers/os/resources/services/ps1getservice_test.go (about)

     1  // Copyright (c) Mondoo, Inc.
     2  // SPDX-License-Identifier: BUSL-1.1
     3  
     4  package services_test
     5  
     6  import (
     7  	"os"
     8  	"testing"
     9  
    10  	"github.com/stretchr/testify/assert"
    11  	"go.mondoo.com/cnquery/providers/os/resources/services"
    12  )
    13  
    14  func TestWindowsServiceParser(t *testing.T) {
    15  	data, err := os.Open("./testdata/windows2019.json")
    16  	if err != nil {
    17  		t.Fatal(err)
    18  	}
    19  
    20  	srvs, err := services.ParseWindowsService(data)
    21  	assert.Nil(t, err)
    22  	assert.Equal(t, 7, len(srvs))
    23  
    24  	expected := &services.Service{
    25  		Name:        "PolicyAgent",
    26  		Description: "IPsec Policy Agent",
    27  		State:       "ServiceStopped",
    28  		Running:     false,
    29  		Installed:   true,
    30  		Enabled:     true,
    31  		Type:        "windows",
    32  	}
    33  	found := findService(srvs, "PolicyAgent")
    34  	assert.EqualValues(t, expected, found)
    35  
    36  	expected = &services.Service{
    37  		Name:        "PlugPlay",
    38  		Description: "Plug and Play",
    39  		State:       "ServiceRunning",
    40  		Running:     true,
    41  		Installed:   true,
    42  		Enabled:     true,
    43  		Type:        "windows",
    44  	}
    45  	found = findService(srvs, "PlugPlay")
    46  	assert.EqualValues(t, expected, found)
    47  
    48  	expected = &services.Service{
    49  		Name:        "PhoneSvc",
    50  		Description: "Phone Service",
    51  		State:       "ServiceStopped",
    52  		Running:     false,
    53  		Installed:   true,
    54  		Enabled:     false,
    55  		Type:        "windows",
    56  	}
    57  	found = findService(srvs, "PhoneSvc")
    58  	assert.EqualValues(t, expected, found)
    59  }
    60  
    61  func findService(srvs []*services.Service, name string) *services.Service {
    62  	for i := range srvs {
    63  		if srvs[i].Name == name {
    64  			return srvs[i]
    65  		}
    66  	}
    67  	return nil
    68  }