github.com/ssdev-go/moby@v17.12.1-ce-rc2+incompatible/daemon/daemon_windows_test.go (about)

     1  // +build windows
     2  
     3  package daemon
     4  
     5  import (
     6  	"strings"
     7  	"testing"
     8  
     9  	"golang.org/x/sys/windows/svc/mgr"
    10  )
    11  
    12  const existingService = "Power"
    13  
    14  func TestEnsureServicesExist(t *testing.T) {
    15  	m, err := mgr.Connect()
    16  	if err != nil {
    17  		t.Fatal("failed to connect to service manager, this test needs admin")
    18  	}
    19  	defer m.Disconnect()
    20  	s, err := m.OpenService(existingService)
    21  	if err != nil {
    22  		t.Fatalf("expected to find known inbox service %q, this test needs a known inbox service to run correctly", existingService)
    23  	}
    24  	defer s.Close()
    25  
    26  	input := []string{existingService}
    27  	err = ensureServicesInstalled(input)
    28  	if err != nil {
    29  		t.Fatalf("unexpected error for input %q: %q", input, err)
    30  	}
    31  }
    32  
    33  func TestEnsureServicesExistErrors(t *testing.T) {
    34  	m, err := mgr.Connect()
    35  	if err != nil {
    36  		t.Fatal("failed to connect to service manager, this test needs admin")
    37  	}
    38  	defer m.Disconnect()
    39  	s, err := m.OpenService(existingService)
    40  	if err != nil {
    41  		t.Fatalf("expected to find known inbox service %q, this test needs a known inbox service to run correctly", existingService)
    42  	}
    43  	defer s.Close()
    44  
    45  	for _, testcase := range []struct {
    46  		input         []string
    47  		expectedError string
    48  	}{
    49  		{
    50  			input:         []string{"daemon_windows_test_fakeservice"},
    51  			expectedError: "failed to open service daemon_windows_test_fakeservice",
    52  		},
    53  		{
    54  			input:         []string{"daemon_windows_test_fakeservice1", "daemon_windows_test_fakeservice2"},
    55  			expectedError: "failed to open service daemon_windows_test_fakeservice1",
    56  		},
    57  		{
    58  			input:         []string{existingService, "daemon_windows_test_fakeservice"},
    59  			expectedError: "failed to open service daemon_windows_test_fakeservice",
    60  		},
    61  	} {
    62  		t.Run(strings.Join(testcase.input, ";"), func(t *testing.T) {
    63  			err := ensureServicesInstalled(testcase.input)
    64  			if err == nil {
    65  				t.Fatalf("expected error for input %v", testcase.input)
    66  			}
    67  			if !strings.Contains(err.Error(), testcase.expectedError) {
    68  				t.Fatalf("expected error %q to contain %q", err.Error(), testcase.expectedError)
    69  			}
    70  		})
    71  	}
    72  }