in fixtures.go [1035:1057]
func (t *TestWorkflow) AddSSHKey(user string) (string, error) {
keyFileName := os.TempDir() + "/id_rsa_" + uuid.New().String()
if _, err := os.Stat(keyFileName); os.IsExist(err) {
os.Remove(keyFileName)
}
commandArgs := []string{"-t", "rsa", "-f", keyFileName, "-N", "", "-q"}
cmd := exec.Command("ssh-keygen", commandArgs...)
if out, err := cmd.Output(); err != nil {
if exitErr, ok := err.(*exec.ExitError); ok {
return "", fmt.Errorf("ssh-keygen failed: %s %s %v", out, exitErr.Stderr, err)
}
return "", fmt.Errorf("ssh-keygen failed: %v %v", out, err)
}
publicKey, err := ioutil.ReadFile(keyFileName + ".pub")
if err != nil {
return "", fmt.Errorf("failed to read public key: %v", err)
}
sourcePath := fmt.Sprintf("%s-ssh-key", user)
t.wf.Sources[sourcePath] = keyFileName
return string(publicKey), nil
}