コード例 #1
0
    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);
    }
コード例 #2
0
    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);
    }
コード例 #3
0
    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>()));
    }
コード例 #4
0
    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";