gopkg.in/docker/docker.v23@v23.0.11/daemon/daemon_windows_test.go (about)

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