github.com/rhatdan/docker@v0.7.7-0.20180119204836-47a0dcbcd20a/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 }