3
3
4
4
using System . Reflection ;
5
5
using Microsoft . AspNetCore . Builder ;
6
+ using Microsoft . AspNetCore . Hosting . Server ;
7
+ using Microsoft . AspNetCore . Hosting . Server . Features ;
8
+ using Microsoft . AspNetCore . Http . Features ;
6
9
using Microsoft . AspNetCore . Mvc ;
7
10
using Microsoft . AspNetCore . Mvc . Abstractions ;
8
11
using Microsoft . AspNetCore . Mvc . ActionConstraints ;
@@ -75,7 +78,7 @@ internal static OpenApiDocumentService CreateDocumentService(ActionDescriptor ac
75
78
76
79
var schemaService = new OpenApiSchemaService ( "Test" , Options . Create ( new Microsoft . AspNetCore . Http . Json . JsonOptions ( ) ) , builder . ServiceProvider , openApiOptions . Object ) ;
77
80
( ( TestServiceProvider ) builder . ServiceProvider ) . TestSchemaService = schemaService ;
78
- var documentService = new OpenApiDocumentService ( "Test" , apiDescriptionGroupCollectionProvider , hostEnvironment , openApiOptions . Object , builder . ServiceProvider ) ;
81
+ var documentService = new OpenApiDocumentService ( "Test" , apiDescriptionGroupCollectionProvider , hostEnvironment , openApiOptions . Object , builder . ServiceProvider , new OpenApiTestServer ( ) ) ;
79
82
( ( TestServiceProvider ) builder . ServiceProvider ) . TestDocumentService = documentService ;
80
83
81
84
return documentService ;
@@ -101,7 +104,7 @@ internal static OpenApiDocumentService CreateDocumentService(IEndpointRouteBuild
101
104
102
105
var schemaService = new OpenApiSchemaService ( "Test" , Options . Create ( new Microsoft . AspNetCore . Http . Json . JsonOptions ( ) ) , builder . ServiceProvider , options . Object ) ;
103
106
( ( TestServiceProvider ) builder . ServiceProvider ) . TestSchemaService = schemaService ;
104
- var documentService = new OpenApiDocumentService ( "Test" , apiDescriptionGroupCollectionProvider , hostEnvironment , options . Object , builder . ServiceProvider ) ;
107
+ var documentService = new OpenApiDocumentService ( "Test" , apiDescriptionGroupCollectionProvider , hostEnvironment , options . Object , builder . ServiceProvider , new OpenApiTestServer ( ) ) ;
105
108
( ( TestServiceProvider ) builder . ServiceProvider ) . TestDocumentService = documentService ;
106
109
107
110
return documentService ;
@@ -276,4 +279,31 @@ public object GetService(Type serviceType)
276
279
return _serviceProvider . GetService ( serviceType ) ;
277
280
}
278
281
}
282
+
283
+ internal class OpenApiTestServer ( string [ ] addresses = null ) : IServer
284
+ {
285
+ public IFeatureCollection Features => GenerateFeatures ( ) ;
286
+
287
+ public void Dispose ( )
288
+ {
289
+ return ;
290
+ }
291
+
292
+ internal virtual IFeatureCollection GenerateFeatures ( )
293
+ {
294
+ var features = new FeatureCollection ( ) ;
295
+ features . Set < IServerAddressesFeature > ( new TestServerAddressesFeature { Addresses = addresses } ) ;
296
+ return features ;
297
+ }
298
+
299
+ public Task StartAsync < TContext > ( IHttpApplication < TContext > application , CancellationToken cancellationToken ) where TContext : notnull => Task . CompletedTask ;
300
+
301
+ public Task StopAsync ( CancellationToken cancellationToken ) => Task . CompletedTask ;
302
+ }
303
+
304
+ private class TestServerAddressesFeature : IServerAddressesFeature
305
+ {
306
+ public ICollection < string > Addresses { get ; set ; }
307
+ public bool PreferHostingUrls { get ; set ; }
308
+ }
279
309
}
0 commit comments