Skip to content

Commit 2c77699

Browse files
committed
Update
1 parent fc87c7c commit 2c77699

File tree

4 files changed

+39
-9
lines changed

4 files changed

+39
-9
lines changed

src/Http/Routing/src/Builder/EndpointRouteBuilderExtensions.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,7 @@ static RequestDelegateResult CreateHandlerRequestDelegate(Delegate handler, Requ
211211
}
212212

213213
var metadata = new List<object>(options.EndpointBuilder?.Metadata ?? Array.Empty<object>());
214-
return new RequestDelegateResult(RequestDelegateFilterPipelineBuilder.Create(requestDelegate, options), metadata);
214+
return new RequestDelegateResult(requestDelegate, metadata);
215215
}
216216
}
217217

src/Http/Routing/src/Builder/RouteHandlerBuilder.cs

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
// Licensed to the .NET Foundation under one or more agreements.
22
// The .NET Foundation licenses this file to you under the MIT license.
33

4-
using Microsoft.AspNetCore.Routing;
5-
64
namespace Microsoft.AspNetCore.Builder;
75

86
/// <summary>
@@ -14,12 +12,6 @@ public sealed class RouteHandlerBuilder : IEndpointConventionBuilder
1412
private readonly ICollection<Action<EndpointBuilder>>? _conventions;
1513
private readonly ICollection<Action<EndpointBuilder>>? _finallyConventions;
1614

17-
/// <summary>
18-
/// Instantiates a new <see cref="RouteHandlerBuilder" /> given a ThrowOnAddAfterEndpointBuiltConventionCollection from
19-
/// <see cref="RouteEndpointDataSource.AddRouteHandler(Routing.Patterns.RoutePattern, Delegate, IEnumerable{string}?, bool)"/>.
20-
/// </summary>
21-
/// <param name="conventions">The convention list returned from <see cref="RouteEndpointDataSource"/>.</param>
22-
/// <param name="finallyConventions">The final convention list returned from <see cref="RouteEndpointDataSource"/>.</param>
2315
internal RouteHandlerBuilder(ICollection<Action<EndpointBuilder>> conventions, ICollection<Action<EndpointBuilder>> finallyConventions)
2416
{
2517
_conventions = conventions;

src/Http/Routing/test/UnitTests/Builder/RequestDelegateEndpointRouteBuilderExtensionsTest.cs

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,11 @@
77
using System.Reflection;
88
using System.Text;
99
using Microsoft.AspNetCore.Http;
10+
using Microsoft.AspNetCore.Http.HttpResults;
1011
using Microsoft.AspNetCore.Http.Metadata;
1112
using Microsoft.AspNetCore.Routing;
1213
using Microsoft.AspNetCore.Routing.Patterns;
14+
using Microsoft.Extensions.Primitives;
1315

1416
namespace Microsoft.AspNetCore.Builder;
1517

@@ -220,6 +222,41 @@ public async Task MapEndpoint_Filtered_DontExecuteEndpointWhenErrorResponseStatu
220222
Assert.False(httpContext.Items.ContainsKey("ExecutedEndpoint"));
221223
}
222224

225+
[Fact]
226+
public async Task RequestFilters_CanAssertOnEmptyResult()
227+
{
228+
var builder = new DefaultEndpointRouteBuilder(new ApplicationBuilder(EmptyServiceProvider.Instance));
229+
var httpContext = new DefaultHttpContext();
230+
var responseBodyStream = new MemoryStream();
231+
httpContext.Response.Body = responseBodyStream;
232+
233+
var @delegate = (HttpContext context) => context.Items.Add("param", "Value");
234+
235+
object? response = null;
236+
var endpointBuilder = builder.Map("/", @delegate)
237+
.AddEndpointFilterFactory(filterFactory: (routeHandlerContext, next) =>
238+
{
239+
return async invocationContext =>
240+
{
241+
response = await next(invocationContext);
242+
return response;
243+
};
244+
});
245+
246+
var dataSource = GetBuilderEndpointDataSource(builder);
247+
var endpoint = Assert.Single(dataSource.Endpoints);
248+
249+
httpContext.Request.Query = new QueryCollection(new Dictionary<string, StringValues>
250+
{
251+
["name"] = "Tester"
252+
});
253+
254+
await endpoint.RequestDelegate!(httpContext);
255+
256+
Assert.IsType<EmptyHttpResult>(response);
257+
Assert.Same(Results.Empty, response);
258+
}
259+
223260
private sealed class HttpContextArgFilter : IEndpointFilter
224261
{
225262
private readonly string _name;

src/Http/Routing/test/UnitTests/Microsoft.AspNetCore.Routing.Tests.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
<ItemGroup>
1010
<Reference Include="Microsoft.AspNetCore.Http" />
1111
<Reference Include="Microsoft.AspNetCore.Routing" />
12+
<Reference Include="Microsoft.AspNetCore.Http.Results" />
1213
<Reference Include="Microsoft.Extensions.DependencyInjection" />
1314
<Reference Include="Microsoft.Extensions.Hosting.Abstractions" />
1415
<Reference Include="Microsoft.Extensions.Logging" />

0 commit comments

Comments
 (0)