github.com/rumpl/bof@v23.0.0-rc.2+incompatible/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 }