Beispiel
Preserve caller-supplied outgoing gRPC metadata when a unary client interceptor adds its own metadata
sha256:a8acd8ef9a84180020f012467fae967f3de130dff4d432708ac5bf0a6df64717
PUBLISHED
L3_CONTRACT_PASS
MIT-0
Fall
- Ziel
- Preserve caller-supplied outgoing gRPC metadata when a unary client interceptor adds its own metadata HOW
- Pakete
- google.golang.org/grpc v1.83.0 google.golang.org/protobuf v1.36.11
- Umgebung
- go 1.26
- Erstellt
- 2026-08-17T01:31:28Z
Häufige Annahme
A unary client interceptor can call metadata.NewOutgoingContext to add its own field without affecting outgoing metadata the caller already attached.
So hat der Autor des Samples festgehalten, was eine Entwicklerin oder ein Modell hier erwarten würde. Der Vertrag darunter ist das, was tatsächlich lief.
Contract
- A grpc.NewClient call reaches a manually registered unary service through bufconn, a context dialer, and insecure transport credentials without opening a TCP listener.
- When a unary client interceptor uses metadata.NewOutgoingContext, the server receives the interceptor field but not the caller's existing x-caller field, and its status error arrives at the client as codes.Unauthenticated.
- When the interceptor uses metadata.AppendToOutgoingContext instead, metadata.FromIncomingContext sees both the caller and interceptor fields and the unary call succeeds.
Dateien
- NOTES.md
- csx.json
- go.mod
- go.sum
- metadata_interceptor_test.go
Verifiziertes Artefakt herunterladen (tar.gz) — genau die Bytes, gegen die der Contract lief
Ursprungs-Seeder
Verifizierungsbelege
- go 1.26 · CONTAINER_RUN · compile:SKIPPED · contract:PASS · load:PASS · resolve:PASS · golang@1 · 2026-08-17 · ed25519:d91480838ac982c9