chore(e2e): Add helper func ConnectCliStdoutPipe (#6243)

pull/6246/head
Tony 3 months ago committed by GitHub
parent f3d44ba817
commit 8a7f241107
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -43,3 +43,46 @@ func ConnectCli(t testing.TB, ctx context.Context, targetId string) ConnectCliOu
return connectCliOutput
}
// ConnectCliStdoutPipe uses the boundary CLI to establish connection to the target.
// It captures stdout via a pipe, parses proxy details from the command output, and returns them.
// The connection must be closed separately via the `boundary sessions cancel` command
// This implementation works on cross platforms (Windows, Unix, Linux, macOS) - unlike the pty-based version above (Unix, Linux, macOS).
// StdoutPipe only captures stdout, as opposed to pty which is an interactive pseudo-terminal
func ConnectCliStdoutPipe(t testing.TB, ctx context.Context, targetId string) ConnectCliOutput {
cmd := exec.CommandContext(ctx,
"boundary", "connect",
"-target-id", targetId,
"-format", "json",
)
// Capture stdout
stdoutPipe, err := cmd.StdoutPipe()
require.NoError(t, err)
// Start the command
err = cmd.Start()
require.NoError(t, err)
// Register cleanup to kill the process
t.Cleanup(func() {
if cmd.Process != nil {
_ = cmd.Process.Kill()
}
})
// Read the first line of output (JSON with connection info)
scanner := bufio.NewScanner(stdoutPipe)
var outputLine string
if scanner.Scan() {
outputLine = scanner.Text()
}
require.NoError(t, scanner.Err())
// Parse the JSON output
var connectOutput ConnectCliOutput
err = json.Unmarshal([]byte(outputLine), &connectOutput)
require.NoError(t, err)
return connectOutput
}

Loading…
Cancel
Save