1// +build functional 2 3package cri_containerd 4 5import ( 6 "fmt" 7 "io/ioutil" 8 "os" 9 "os/exec" 10 "path/filepath" 11 "testing" 12) 13 14// Generates a gmsa credential spec and places it at 'path'. Dir has to exist, it will not be created by 15// New-CredentialSpec. 16func generateCredSpec(path string) error { 17 output, err := exec.Command( 18 "powershell", 19 "New-CredentialSpec", 20 "-AccountName", 21 gmsaAccount, 22 "-Path", 23 path, 24 ).CombinedOutput() 25 if err != nil { 26 return fmt.Errorf("failed to create new credential spec (output: %s): %v", string(output), err) 27 } 28 return nil 29} 30 31// Tries to generate a cred spec to use for gmsa test cases. Returns the cred 32// spec and an error if any. 33func gmsaSetup(t *testing.T) string { 34 csDir, err := ioutil.TempDir("", "") 35 if err != nil { 36 t.Fatalf("failed to create temp directory: %s", err) 37 } 38 defer os.RemoveAll(csDir) 39 csPath := filepath.Join(csDir, "credspec.json") 40 if err := generateCredSpec(csPath); err != nil { 41 t.Fatal(err) 42 } 43 credSpec, err := ioutil.ReadFile(csPath) 44 if err != nil { 45 t.Fatalf("failed to read credential spec: %s", err) 46 } 47 return string(credSpec) 48} 49