diff --git a/internal/tests/cli/boundary/_connect.bash b/internal/tests/cli/boundary/_connect.bash index 8a15aa2e3a..7db1b82d9a 100644 --- a/internal/tests/cli/boundary/_connect.bash +++ b/internal/tests/cli/boundary/_connect.bash @@ -4,18 +4,48 @@ function connect_nc() { local id=$1 # Note: When this command returns, the session immediately goes into a "canceling" state - echo "SSH-2.0-Test" | boundary connect -exec nc -target-id $id -- -v -w 5 {{boundary.ip}} {{boundary.port}} + # Capture output and check for success message since nc may return non-zero on pipe close + local output + output=$(echo "SSH-2.0-Test" | boundary connect -exec nc -target-id $id -- -v -w 5 {{boundary.ip}} {{boundary.port}} 2>&1) + local status=$? + echo "$output" + + # If connection succeeded, return 0 regardless of nc's exit status + if echo "$output" | grep -q "succeeded"; then + return 0 + fi + return $status } function connect_alias() { local alias=$1 # Note: When this command returns, the session immediately goes into a "canceling" state - echo "SSH-2.0-Test" | boundary connect $alias -exec nc -- -v -w 5 {{boundary.ip}} {{boundary.port}} + # Capture output and check for success message since nc may return non-zero on pipe close + local output + output=$(echo "SSH-2.0-Test" | boundary connect $alias -exec nc -- -v -w 5 {{boundary.ip}} {{boundary.port}} 2>&1) + local status=$? + echo "$output" + + # If connection succeeded, return 0 regardless of nc's exit status + if echo "$output" | grep -q "succeeded"; then + return 0 + fi + return $status } function connect_alias_with_host_id() { local alias=$1 local hostid=$2 # Note: When this command returns, the session immediately goes into a "canceling" state - echo "SSH-2.0-Test" | boundary connect $alias -host-id $hostid -exec nc -- -v -w 5 {{boundary.ip}} {{boundary.port}} + # Capture output and check for success message since nc may return non-zero on pipe close + local output + output=$(echo "SSH-2.0-Test" | boundary connect $alias -host-id $hostid -exec nc -- -v -w 5 {{boundary.ip}} {{boundary.port}} 2>&1) + local status=$? + echo "$output" + + # If connection succeeded, return 0 regardless of nc's exit status + if echo "$output" | grep -q "succeeded"; then + return 0 + fi + return $status }