66using System . IO ;
77using System . Linq ;
88using System . Security . Cryptography . X509Certificates ;
9+ using System . Threading . Tasks ;
910using Microsoft . AspNetCore . Hosting ;
1011using Microsoft . AspNetCore . Server . Kestrel . Core ;
1112using Microsoft . AspNetCore . Server . Kestrel . Https ;
1415using Microsoft . Extensions . DependencyInjection ;
1516using Microsoft . Extensions . FileProviders ;
1617using Microsoft . Extensions . Hosting ;
18+ using Microsoft . Extensions . Logging ;
19+ using Microsoft . Extensions . Logging . Testing ;
1720using Xunit ;
1821
1922namespace Microsoft . AspNetCore . Server . Kestrel . Tests
@@ -22,15 +25,41 @@ public class KestrelConfigurationBuilderTests
2225 {
2326 private KestrelServerOptions CreateServerOptions ( )
2427 {
28+ var testSink = new TestSink ( ) ;
2529 var serverOptions = new KestrelServerOptions ( ) ;
2630 var env = new MockHostingEnvironment { ApplicationName = "TestApplication" } ;
2731 serverOptions . ApplicationServices = new ServiceCollection ( )
28- . AddLogging ( )
32+ . AddLogging ( l => l . AddProvider ( new TestLoggerProvider ( testSink ) ) )
2933 . AddSingleton < IHostEnvironment > ( env )
34+ . AddSingleton ( testSink )
3035 . BuildServiceProvider ( ) ;
3136 return serverOptions ;
3237 }
3338
39+ [ Fact ]
40+ [ SkipOnHelix ( "(none)" , Queues = "Ubuntu.1604.Amd64.Open;Windows.10.Amd64.Open" ) ]
41+ [ OSSkipCondition ( OperatingSystems . Linux , SkipReason = "This check only applies to Mac OS as it is the one that checks the key for validity." ) ]
42+ [ OSSkipCondition ( OperatingSystems . Windows , SkipReason = "This check only applies to Mac OS as it is the one that checks the key for validity." ) ]
43+ public void DevCertWithInvalidPrivateKeyProducesCustomWarning ( )
44+ {
45+ var serverOptions = CreateServerOptions ( ) ;
46+ var sink = serverOptions . ApplicationServices . GetRequiredService < TestSink > ( ) ;
47+ var messages = new List < WriteContext > ( ) ;
48+ sink . MessageLogged += wc => messages . Add ( wc ) ;
49+ serverOptions . Configure ( )
50+ . LocalhostEndpoint ( 5001 , endpointOptions => { } ) ;
51+
52+ Assert . Empty ( serverOptions . ListenOptions ) ;
53+
54+ serverOptions . ConfigurationLoader . Load ( ) ;
55+
56+ Assert . Single ( serverOptions . ListenOptions ) ;
57+ Assert . Equal ( 5001 , serverOptions . ListenOptions [ 0 ] . IPEndPoint . Port ) ;
58+
59+ Assert . Equal ( 5 , messages [ ^ 1 ] . EventId ) ;
60+ Assert . Equal ( LogLevel . Warning , messages [ ^ 1 ] . LogLevel ) ;
61+ }
62+
3463 [ Fact ]
3564 public void ConfigureNamedEndpoint_OnlyRunForMatchingConfig ( )
3665 {
0 commit comments