1717#endregion
1818
1919using System . Linq ;
20+ using System . Text ;
2021using System . Threading . Tasks ;
2122using Greet ;
2223using Grpc . AspNetCore . FunctionalTests . Infrastructure ;
@@ -35,6 +36,7 @@ public async Task GetTrailers_UnaryMethodSetStatusWithTrailers_TrailersAvailable
3536 Task < HelloReply > UnaryDeadlineExceeded ( HelloRequest request , ServerCallContext context )
3637 {
3738 context . ResponseTrailers . Add ( new Metadata . Entry ( "Name" , "the value was empty" ) ) ;
39+ context . ResponseTrailers . Add ( new Metadata . Entry ( "grpc-status-details-bin" , Encoding . UTF8 . GetBytes ( "Hello world" ) ) ) ;
3840 context . Status = new Status ( StatusCode . InvalidArgument , "Validation failed" ) ;
3941 return Task . FromResult ( new HelloReply ( ) ) ;
4042 }
@@ -65,13 +67,15 @@ Task<HelloReply> UnaryDeadlineExceeded(HelloRequest request, ServerCallContext c
6567
6668 // Assert
6769 var trailers = call . GetTrailers ( ) ;
68- Assert . AreEqual ( 1 , trailers . Count ) ;
70+ Assert . AreEqual ( 2 , trailers . Count ) ;
6971 Assert . AreEqual ( "the value was empty" , trailers . GetValue ( "name" ) ) ;
72+ Assert . AreEqual ( "Hello world" , Encoding . UTF8 . GetString ( trailers . GetValueBytes ( "grpc-status-details-bin" ) ) ) ;
7073
7174 Assert . AreEqual ( StatusCode . InvalidArgument , ex . StatusCode ) ;
7275 Assert . AreEqual ( "Validation failed" , ex . Status . Detail ) ;
73- Assert . AreEqual ( 1 , ex . Trailers . Count ) ;
76+ Assert . AreEqual ( 2 , ex . Trailers . Count ) ;
7477 Assert . AreEqual ( "the value was empty" , ex . Trailers . GetValue ( "name" ) ) ;
78+ Assert . AreEqual ( "Hello world" , Encoding . UTF8 . GetString ( ex . Trailers . GetValueBytes ( "grpc-status-details-bin" ) ) ) ;
7579 }
7680
7781 [ Test ]
@@ -81,6 +85,7 @@ Task<HelloReply> UnaryDeadlineExceeded(HelloRequest request, ServerCallContext c
8185 {
8286 var trailers = new Metadata ( ) ;
8387 trailers . Add ( new Metadata . Entry ( "Name" , "the value was empty" ) ) ;
88+ trailers . Add ( new Metadata . Entry ( "grpc-status-details-bin" , Encoding . UTF8 . GetBytes ( "Hello world" ) ) ) ;
8489 return Task . FromException < HelloReply > ( new RpcException ( new Status ( StatusCode . InvalidArgument , "Validation failed" ) , trailers ) ) ;
8590 }
8691
@@ -110,13 +115,15 @@ Task<HelloReply> UnaryDeadlineExceeded(HelloRequest request, ServerCallContext c
110115
111116 // Assert
112117 var trailers = call . GetTrailers ( ) ;
113- Assert . GreaterOrEqual ( trailers . Count , 1 ) ;
118+ Assert . GreaterOrEqual ( trailers . Count , 2 ) ;
114119 Assert . AreEqual ( "the value was empty" , trailers . GetValue ( "name" ) ) ;
120+ Assert . AreEqual ( "Hello world" , Encoding . UTF8 . GetString ( trailers . GetValueBytes ( "grpc-status-details-bin" ) ) ) ;
115121
116122 Assert . AreEqual ( StatusCode . InvalidArgument , ex . StatusCode ) ;
117123 Assert . AreEqual ( "Validation failed" , ex . Status . Detail ) ;
118- Assert . GreaterOrEqual ( ex . Trailers . Count , 1 ) ;
124+ Assert . GreaterOrEqual ( ex . Trailers . Count , 2 ) ;
119125 Assert . AreEqual ( "the value was empty" , ex . Trailers . GetValue ( "name" ) ) ;
126+ Assert . AreEqual ( "Hello world" , Encoding . UTF8 . GetString ( ex . Trailers . GetValueBytes ( "grpc-status-details-bin" ) ) ) ;
120127
121128 AssertHasLogRpcConnectionError ( StatusCode . InvalidArgument , "Validation failed" ) ;
122129 }
0 commit comments