refactor(tunnel): improve error handling in gRPC stream tests

- Updated test cases to handle potential stream closure more gracefully by checking for send errors before proceeding with receive operations.
- Enhanced clarity in test logic to ensure that expected errors are correctly asserted when metadata is missing or channel IDs are non-existent.

Made-with: Cursor
This commit is contained in:
Max 2026-03-13 20:02:50 +08:00
parent b667ec310b
commit f20f7797a3

View file

@ -204,13 +204,16 @@ func TestForward_MissingMetadata(t *testing.T) {
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
err = stream.Send(&taipb.ForwardData{Data: []byte("hello")})
if err != nil { // Server may close the stream before or after Send completes (race).
t.Fatal(err) // Either Send or Recv returning an error confirms the server rejected.
sendErr := stream.Send(&taipb.ForwardData{Data: []byte("hello")})
if sendErr != nil {
return // server already closed stream — pass
} }
_, err = stream.Recv() _, recvErr := stream.Recv()
if err == nil { if recvErr == nil {
t.Fatal("expected error for missing channel_id metadata") t.Fatal("expected error for missing channel_id metadata")
} }
} }
@ -224,13 +227,14 @@ func TestForward_NoPendingChannel(t *testing.T) {
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
err = stream.Send(&taipb.ForwardData{Data: []byte("hello")})
if err != nil { sendErr := stream.Send(&taipb.ForwardData{Data: []byte("hello")})
t.Fatal(err) if sendErr != nil {
return // server already closed stream — pass
} }
_, err = stream.Recv() _, recvErr := stream.Recv()
if err == nil { if recvErr == nil {
t.Fatal("expected error for non-existent channel_id") t.Fatal("expected error for non-existent channel_id")
} }
} }