Skip to content

Commit 28e3db8

Browse files
committed
Fix service providerFixed tests and PR feedback
1 parent 4c0513e commit 28e3db8

File tree

3 files changed

+52
-8
lines changed

3 files changed

+52
-8
lines changed

src/Http/Http.Extensions/src/RequestDelegateFactory.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -820,7 +820,7 @@ private class FactoryContext
820820
{
821821
public Type? JsonRequestBodyType { get; set; }
822822
public bool AllowEmptyRequestBody { get; set; }
823-
public IServiceProvider? ServiceProvider { get; set; }
823+
public IServiceProvider? ServiceProvider { get; init; }
824824

825825
public bool UsingTempSourceString { get; set; }
826826
public List<(ParameterExpression, Expression)> TryParseParams { get; } = new();

src/Http/Http.Extensions/test/RequestDelegateFactoryTests.cs

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1283,9 +1283,28 @@ public override void Write(byte[] buffer, int offset, int count)
12831283
}
12841284
}
12851285

1286-
private class EmptyServiceProvdier : IServiceProvider
1286+
private class EmptyServiceProvdier : IServiceScope, IServiceProvider, IServiceScopeFactory
12871287
{
1288-
public object? GetService(Type serviceType) => null;
1288+
public IServiceProvider ServiceProvider => this;
1289+
1290+
public IServiceScope CreateScope()
1291+
{
1292+
return new EmptyServiceProvdier();
1293+
}
1294+
1295+
public void Dispose()
1296+
{
1297+
1298+
}
1299+
1300+
public object? GetService(Type serviceType)
1301+
{
1302+
if (serviceType == typeof(IServiceScopeFactory))
1303+
{
1304+
return this;
1305+
}
1306+
return null;
1307+
}
12891308
}
12901309

12911310
private class TestHttpRequestLifetimeFeature : IHttpRequestLifetimeFeature

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

Lines changed: 30 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
using System.Linq;
99
using System.Runtime.CompilerServices;
1010
using Microsoft.AspNetCore.Routing;
11+
using Microsoft.Extensions.DependencyInjection;
1112
using Moq;
1213
using Xunit;
1314

@@ -28,7 +29,7 @@ private RouteEndpointBuilder GetRouteEndpointBuilder(IEndpointRouteBuilder endpo
2829
[Fact]
2930
public void MapEndpoint_PrecedenceOfMetadata_BuilderMetadataReturned()
3031
{
31-
var builder = new DefaultEndpointRouteBuilder(Mock.Of<IApplicationBuilder>());
32+
var builder = new DefaultEndpointRouteBuilder(new ApplicationBuilder(new EmptyServiceProvdier()));
3233

3334
[HttpMethod("ATTRIBUTE")]
3435
void TestAction()
@@ -60,7 +61,7 @@ string GetMethod(object metadata)
6061
[Fact]
6162
public void MapGet_BuildsEndpointWithCorrectMethod()
6263
{
63-
var builder = new DefaultEndpointRouteBuilder(Mock.Of<IApplicationBuilder>());
64+
var builder = new DefaultEndpointRouteBuilder(new ApplicationBuilder(new EmptyServiceProvdier()));
6465
_ = builder.MapGet("/", (Action)(() => { }));
6566

6667
var dataSource = GetBuilderEndpointDataSource(builder);
@@ -80,7 +81,7 @@ public void MapGet_BuildsEndpointWithCorrectMethod()
8081
[Fact]
8182
public void MapPost_BuildsEndpointWithCorrectMethod()
8283
{
83-
var builder = new DefaultEndpointRouteBuilder(Mock.Of<IApplicationBuilder>());
84+
var builder = new DefaultEndpointRouteBuilder(new ApplicationBuilder(new EmptyServiceProvdier()));
8485
_ = builder.MapPost("/", (Action)(() => { }));
8586

8687
var dataSource = GetBuilderEndpointDataSource(builder);
@@ -100,7 +101,7 @@ public void MapPost_BuildsEndpointWithCorrectMethod()
100101
[Fact]
101102
public void MapPut_BuildsEndpointWithCorrectMethod()
102103
{
103-
var builder = new DefaultEndpointRouteBuilder(Mock.Of<IApplicationBuilder>());
104+
var builder = new DefaultEndpointRouteBuilder(new ApplicationBuilder(new EmptyServiceProvdier()));
104105
_ = builder.MapPut("/", (Action)(() => { }));
105106

106107
var dataSource = GetBuilderEndpointDataSource(builder);
@@ -120,7 +121,7 @@ public void MapPut_BuildsEndpointWithCorrectMethod()
120121
[Fact]
121122
public void MapDelete_BuildsEndpointWithCorrectMethod()
122123
{
123-
var builder = new DefaultEndpointRouteBuilder(Mock.Of<IApplicationBuilder>());
124+
var builder = new DefaultEndpointRouteBuilder(new ApplicationBuilder(new EmptyServiceProvdier()));
124125
_ = builder.MapDelete("/", (Action)(() => { }));
125126

126127
var dataSource = GetBuilderEndpointDataSource(builder);
@@ -148,5 +149,29 @@ public HttpMethodAttribute(params string[] httpMethods)
148149
HttpMethods = httpMethods;
149150
}
150151
}
152+
153+
private class EmptyServiceProvdier : IServiceScope, IServiceProvider, IServiceScopeFactory
154+
{
155+
public IServiceProvider ServiceProvider => this;
156+
157+
public IServiceScope CreateScope()
158+
{
159+
return new EmptyServiceProvdier();
160+
}
161+
162+
public void Dispose()
163+
{
164+
165+
}
166+
167+
public object? GetService(Type serviceType)
168+
{
169+
if (serviceType == typeof(IServiceScopeFactory))
170+
{
171+
return this;
172+
}
173+
return null;
174+
}
175+
}
151176
}
152177
}

0 commit comments

Comments
 (0)