public void WithOpenApi_CanSetSchemaInOperationWithOverride() { var hostEnvironment = new HostEnvironment() { ApplicationName = nameof(OpenApiOperationGeneratorTests) }; var serviceProviderIsService = new ServiceProviderIsService(); var serviceProvider = new ServiceCollection() .AddSingleton <IServiceProviderIsService>(serviceProviderIsService) .AddSingleton <IHostEnvironment>(hostEnvironment) .BuildServiceProvider(); var builder = new DefaultEndpointRouteBuilder(new ApplicationBuilder(serviceProvider)); string GetString(string id) => "Foo"; _ = builder.MapDelete("/{id}", GetString) .WithOpenApi(generatedOperation => { generatedOperation.Parameters[0].Schema = new() { Type = "number" }; return(generatedOperation); }); var dataSource = GetBuilderEndpointDataSource(builder); // Trigger Endpoint build by calling getter. var endpoint = Assert.Single(dataSource.Endpoints); var operation = endpoint.Metadata.GetMetadata <OpenApiOperation>(); Assert.NotNull(operation); var parameter = Assert.Single(operation.Parameters); Assert.Equal("number", parameter.Schema.Type); }
public void WithOpenApi_CanSetOperationInMetadataWithOverride() { var hostEnvironment = new HostEnvironment() { ApplicationName = nameof(OpenApiOperationGeneratorTests) }; var serviceProviderIsService = new ServiceProviderIsService(); var serviceProvider = new ServiceCollection() .AddSingleton <IServiceProviderIsService>(serviceProviderIsService) .AddSingleton <IHostEnvironment>(hostEnvironment) .BuildServiceProvider(); var builder = new DefaultEndpointRouteBuilder(new ApplicationBuilder(serviceProvider)); string GetString() => "Foo"; _ = builder.MapDelete("/", GetString).WithOpenApi(generatedOperation => new OpenApiOperation()); var dataSource = GetBuilderEndpointDataSource(builder); // Trigger Endpoint build by calling getter. var endpoint = Assert.Single(dataSource.Endpoints); var operation = endpoint.Metadata.GetMetadata <OpenApiOperation>(); Assert.NotNull(operation); Assert.Empty(operation.Responses); }
public void WithOpenApi_WorksWithMapGroup() { var hostEnvironment = new HostEnvironment() { ApplicationName = nameof(OpenApiOperationGeneratorTests) }; var serviceProviderIsService = new ServiceProviderIsService(); var serviceProvider = new ServiceCollection() .AddSingleton <IServiceProviderIsService>(serviceProviderIsService) .AddSingleton <IHostEnvironment>(hostEnvironment) .BuildServiceProvider(); var builder = new DefaultEndpointRouteBuilder(new ApplicationBuilder(serviceProvider)); string GetString() => "Foo"; var myGroup = builder.MapGroup("/group"); myGroup.MapDelete("/a", GetString); // The order WithOpenApi() is relative to the MapDelete() methods does not matter. myGroup.WithOpenApi(); myGroup.MapDelete("/b", GetString); // The RotueGroupBuilder adds a single EndpointDataSource. var groupDataSource = Assert.Single(builder.DataSources); Assert.Collection(groupDataSource.Endpoints, e => Assert.NotNull(e.Metadata.GetMetadata <OpenApiOperation>()), e => Assert.NotNull(e.Metadata.GetMetadata <OpenApiOperation>())); }
public void WithOpenApi_GroupMetadataCanBeSeenByAndOverriddenByMoreLocalMetadata() { var hostEnvironment = new HostEnvironment() { ApplicationName = nameof(OpenApiOperationGeneratorTests) }; var serviceProviderIsService = new ServiceProviderIsService(); var serviceProvider = new ServiceCollection() .AddSingleton <IServiceProviderIsService>(serviceProviderIsService) .AddSingleton <IHostEnvironment>(hostEnvironment) .BuildServiceProvider(); var builder = new DefaultEndpointRouteBuilder(new ApplicationBuilder(serviceProvider)); string GetString() => "Foo";