@@ -623,6 +623,37 @@ void ConfigureListenOptions(ListenOptions listenOptions)
623623 stream . NegotiatedApplicationProtocol ) ;
624624 }
625625
626+ [ ConditionalFact ]
627+ [ OSSkipCondition ( OperatingSystems . MacOSX | OperatingSystems . Linux , SkipReason = "Downgrade logic only applies on Windows" ) ]
628+ [ MinimumOSVersion ( OperatingSystems . Windows , WindowsVersions . Win7 ) ]
629+ [ MaximumOSVersion ( OperatingSystems . Windows , WindowsVersions . Win81 ) ]
630+ public void Http1AndHttp2DowngradeToHttp1ForHttpsOnIncompatibleWindowsVersions ( )
631+ {
632+ var httpConnectionAdapterOptions = new HttpsConnectionAdapterOptions
633+ {
634+ ServerCertificate = _x509Certificate2 ,
635+ HttpProtocols = HttpProtocols . Http1AndHttp2
636+ } ;
637+ new HttpsConnectionMiddleware ( context => Task . CompletedTask , httpConnectionAdapterOptions ) ;
638+
639+ Assert . Equal ( HttpProtocols . Http1 , httpConnectionAdapterOptions . HttpProtocols ) ;
640+ }
641+
642+ [ ConditionalFact ]
643+ [ OSSkipCondition ( OperatingSystems . MacOSX | OperatingSystems . Linux , SkipReason = "Downgrade logic only applies on Windows" ) ]
644+ [ MinimumOSVersion ( OperatingSystems . Windows , WindowsVersions . Win10 ) ]
645+ public void Http1AndHttp2DoesNotDowngradeOnCompatibleWindowsVersions ( )
646+ {
647+ var httpConnectionAdapterOptions = new HttpsConnectionAdapterOptions
648+ {
649+ ServerCertificate = _x509Certificate2 ,
650+ HttpProtocols = HttpProtocols . Http1AndHttp2
651+ } ;
652+ new HttpsConnectionMiddleware ( context => Task . CompletedTask , httpConnectionAdapterOptions ) ;
653+
654+ Assert . Equal ( HttpProtocols . Http1AndHttp2 , httpConnectionAdapterOptions . HttpProtocols ) ;
655+ }
656+
626657 private static async Task App ( HttpContext httpContext )
627658 {
628659 var request = httpContext . Request ;
0 commit comments