@@ -831,6 +831,48 @@ describe("HttpConnection", () => {
831
831
} ) ;
832
832
} ) ;
833
833
834
+ it ( "transport handlers set before start for custom transports" , async ( ) => {
835
+ await VerifyLogger . run ( async ( logger ) => {
836
+ const availableTransport = { transport : "Custom" , transferFormats : [ "Text" ] } ;
837
+ let handlersSet = false ;
838
+ const transport : ITransport = {
839
+ connect : ( url : string , transferFormat : TransferFormat ) => {
840
+ if ( transport . onreceive && transport . onclose ) {
841
+ handlersSet = true ;
842
+ }
843
+ return Promise . resolve ( ) ;
844
+ } ,
845
+ onclose : null ,
846
+ onreceive : null ,
847
+ send : ( data : any ) => Promise . resolve ( ) ,
848
+ stop : ( ) => {
849
+ if ( transport . onclose ) {
850
+ transport . onclose ( ) ;
851
+ }
852
+ return Promise . resolve ( ) ;
853
+ } ,
854
+ } ;
855
+
856
+ const options : IHttpConnectionOptions = {
857
+ ...commonOptions ,
858
+ httpClient : new TestHttpClient ( )
859
+ . on ( "POST" , ( ) => ( { connectionId : "42" , availableTransports : [ availableTransport ] } ) ) ,
860
+ logger,
861
+ transport,
862
+ } as IHttpConnectionOptions ;
863
+
864
+ const connection = new HttpConnection ( "http://tempuri.org" , options ) ;
865
+ connection . onreceive = ( ) => null ;
866
+ try {
867
+ await connection . start ( TransferFormat . Text ) ;
868
+ } finally {
869
+ await connection . stop ( ) ;
870
+ }
871
+
872
+ expect ( handlersSet ) . toBe ( true ) ;
873
+ } ) ;
874
+ } ) ;
875
+
834
876
describe ( ".constructor" , ( ) => {
835
877
it ( "throws if no Url is provided" , async ( ) => {
836
878
// Force TypeScript to let us call the constructor incorrectly :)
0 commit comments