Skip to content

Commit c790ed5

Browse files
Add logging to MVC tests (#55592)
1 parent 2aee228 commit c790ed5

File tree

130 files changed

+1696
-719
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

130 files changed

+1696
-719
lines changed

src/Mvc/Mvc.slnf

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,15 +28,16 @@
2828
"src\\Http\\Authentication.Core\\src\\Microsoft.AspNetCore.Authentication.Core.csproj",
2929
"src\\Http\\Headers\\src\\Microsoft.Net.Http.Headers.csproj",
3030
"src\\Http\\Http.Abstractions\\src\\Microsoft.AspNetCore.Http.Abstractions.csproj",
31+
"src\\Http\\Http.Extensions\\gen\\Microsoft.AspNetCore.Http.RequestDelegateGenerator.csproj",
3132
"src\\Http\\Http.Extensions\\src\\Microsoft.AspNetCore.Http.Extensions.csproj",
3233
"src\\Http\\Http.Features\\src\\Microsoft.AspNetCore.Http.Features.csproj",
3334
"src\\Http\\Http.Results\\src\\Microsoft.AspNetCore.Http.Results.csproj",
3435
"src\\Http\\Http\\src\\Microsoft.AspNetCore.Http.csproj",
3536
"src\\Http\\Metadata\\src\\Microsoft.AspNetCore.Metadata.csproj",
3637
"src\\Http\\Routing.Abstractions\\src\\Microsoft.AspNetCore.Routing.Abstractions.csproj",
3738
"src\\Http\\Routing\\src\\Microsoft.AspNetCore.Routing.csproj",
38-
"src\\Http\\samples\\MinimalSample\\MinimalSample.csproj",
3939
"src\\Http\\WebUtilities\\src\\Microsoft.AspNetCore.WebUtilities.csproj",
40+
"src\\Http\\samples\\MinimalSample\\MinimalSample.csproj",
4041
"src\\JSInterop\\Microsoft.JSInterop\\src\\Microsoft.JSInterop.csproj",
4142
"src\\Localization\\Abstractions\\src\\Microsoft.Extensions.Localization.Abstractions.csproj",
4243
"src\\Localization\\Localization\\src\\Microsoft.Extensions.Localization.csproj",

src/Mvc/test/Mvc.FunctionalTests/AntiforgeryAuthTests.cs

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

44
using System.Net;
55
using System.Net.Http;
6+
using System.Reflection;
7+
using Microsoft.AspNetCore.InternalTesting;
68
using SecurityWebSite;
9+
using Xunit.Abstractions;
710

811
namespace Microsoft.AspNetCore.Mvc.FunctionalTests;
912

10-
public class AntiforgeryAuthTests : IClassFixture<MvcTestFixture<Startup>>
13+
public class AntiforgeryAuthTests : LoggedTest
1114
{
12-
public AntiforgeryAuthTests(MvcTestFixture<Startup> fixture)
15+
protected override void Initialize(TestContext context, MethodInfo methodInfo, object[] testMethodArguments, ITestOutputHelper testOutputHelper)
1316
{
14-
Client = fixture.CreateDefaultClient();
17+
base.Initialize(context, methodInfo, testMethodArguments, testOutputHelper);
18+
Factory = new MvcTestFixture<Startup>(LoggerFactory);
19+
Client = Factory.CreateDefaultClient();
1520
}
1621

17-
public HttpClient Client { get; }
22+
public override void Dispose()
23+
{
24+
Factory.Dispose();
25+
base.Dispose();
26+
}
27+
28+
public MvcTestFixture<Startup> Factory { get; private set; }
29+
public HttpClient Client { get; private set; }
1830

1931
[Fact]
2032
public async Task AutomaticAuthenticationBeforeAntiforgery()

src/Mvc/test/Mvc.FunctionalTests/AntiforgeryTests.cs

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,29 @@
33

44
using System.Net;
55
using System.Net.Http;
6+
using System.Reflection;
7+
using Microsoft.AspNetCore.InternalTesting;
8+
using Xunit.Abstractions;
69

710
namespace Microsoft.AspNetCore.Mvc.FunctionalTests;
811

9-
public class AntiforgeryTests : IClassFixture<MvcTestFixture<BasicWebSite.StartupWithoutEndpointRouting>>
12+
public class AntiforgeryTests : LoggedTest
1013
{
11-
public AntiforgeryTests(MvcTestFixture<BasicWebSite.StartupWithoutEndpointRouting> fixture)
14+
protected override void Initialize(TestContext context, MethodInfo methodInfo, object[] testMethodArguments, ITestOutputHelper testOutputHelper)
1215
{
13-
Client = fixture.CreateDefaultClient();
16+
base.Initialize(context, methodInfo, testMethodArguments, testOutputHelper);
17+
Factory = new MvcTestFixture<BasicWebSite.StartupWithoutEndpointRouting>(LoggerFactory);
18+
Client = Factory.CreateDefaultClient();
1419
}
1520

16-
public HttpClient Client { get; }
21+
public override void Dispose()
22+
{
23+
Factory.Dispose();
24+
base.Dispose();
25+
}
26+
27+
public MvcTestFixture<BasicWebSite.StartupWithoutEndpointRouting> Factory { get; private set; }
28+
public HttpClient Client { get; private set; }
1729

1830
[Fact]
1931
public async Task MultipleAFTokensWithinTheSamePage_GeneratesASingleCookieToken()

src/Mvc/test/Mvc.FunctionalTests/ApiBehaviorTest.cs

Lines changed: 22 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -4,28 +4,40 @@
44
using System;
55
using System.Net;
66
using System.Net.Http;
7+
using System.Reflection;
78
using System.Text;
89
using BasicWebSite.Models;
910
using Microsoft.AspNetCore.Hosting;
11+
using Microsoft.AspNetCore.InternalTesting;
1012
using Microsoft.AspNetCore.Mvc.NewtonsoftJson;
13+
using Microsoft.AspNetCore.Mvc.Testing;
1114
using Microsoft.VisualStudio.TestPlatform.ObjectModel.DataCollection;
1215
using Newtonsoft.Json;
1316
using Newtonsoft.Json.Linq;
17+
using Xunit.Abstractions;
1418

1519
namespace Microsoft.AspNetCore.Mvc.FunctionalTests;
1620

17-
public abstract class ApiBehaviorTestBase<TStartup> : IClassFixture<MvcTestFixture<TStartup>> where TStartup : class
21+
public abstract class ApiBehaviorTestBase<TStartup> : LoggedTest where TStartup : class
1822
{
19-
protected ApiBehaviorTestBase(MvcTestFixture<TStartup> fixture)
23+
protected override void Initialize(TestContext context, MethodInfo methodInfo, object[] testMethodArguments, ITestOutputHelper testOutputHelper)
2024
{
21-
var factory = fixture.Factories.FirstOrDefault() ?? fixture.WithWebHostBuilder(ConfigureWebHostBuilder);
22-
Client = factory.CreateDefaultClient();
25+
base.Initialize(context, methodInfo, testMethodArguments, testOutputHelper);
26+
Factory = new MvcTestFixture<TStartup>(LoggerFactory).WithWebHostBuilder(ConfigureWebHostBuilder);
27+
Client = Factory.CreateDefaultClient();
28+
}
29+
30+
public override void Dispose()
31+
{
32+
Factory.Dispose();
33+
base.Dispose();
2334
}
2435

2536
private static void ConfigureWebHostBuilder(IWebHostBuilder builder) =>
2637
builder.UseStartup<TStartup>();
2738

28-
public HttpClient Client { get; }
39+
public WebApplicationFactory<TStartup> Factory { get; private set; }
40+
public HttpClient Client { get; private set; }
2941

3042
[Fact]
3143
public virtual async Task ActionsReturnBadRequest_WhenModelStateIsInvalid()
@@ -374,11 +386,6 @@ public virtual async Task SerializingValidationProblemDetails_WithExtensionData(
374386

375387
public class ApiBehaviorTest : ApiBehaviorTestBase<BasicWebSite.StartupWithSystemTextJson>
376388
{
377-
public ApiBehaviorTest(MvcTestFixture<BasicWebSite.StartupWithSystemTextJson> fixture)
378-
: base(fixture)
379-
{
380-
}
381-
382389
[Fact]
383390
public override Task ActionsReturnBadRequest_WhenModelStateIsInvalid()
384391
{
@@ -412,21 +419,16 @@ public override Task SerializingValidationProblemDetails_WithExtensionData()
412419

413420
public class ApiBehaviorTestNewtonsoftJson : ApiBehaviorTestBase<BasicWebSite.StartupWithoutEndpointRouting>
414421
{
415-
public ApiBehaviorTestNewtonsoftJson(MvcTestFixture<BasicWebSite.StartupWithoutEndpointRouting> fixture)
416-
: base(fixture)
417-
{
418-
var factory = fixture.WithWebHostBuilder(ConfigureWebHostBuilder);
419-
CustomInvalidModelStateClient = factory.CreateDefaultClient();
420-
}
421-
422422
private static void ConfigureWebHostBuilder(IWebHostBuilder builder) =>
423423
builder.UseStartup<BasicWebSite.StartupWithCustomInvalidModelStateFactory>();
424424

425-
public HttpClient CustomInvalidModelStateClient { get; }
426-
427425
[Fact]
428426
public async Task ActionsReturnBadRequest_UsesProblemDescriptionProviderAndApiConventionsToConfigureErrorResponse()
429427
{
428+
await using var factory = new MvcTestFixture<BasicWebSite.StartupWithCustomInvalidModelStateFactory>(LoggerFactory)
429+
.WithWebHostBuilder(ConfigureWebHostBuilder);
430+
var customInvalidModelStateClient = factory.CreateDefaultClient();
431+
430432
// Arrange
431433
var contactModel = new Contact
432434
{
@@ -442,7 +444,7 @@ public async Task ActionsReturnBadRequest_UsesProblemDescriptionProviderAndApiCo
442444
};
443445

444446
// Act
445-
var response = await CustomInvalidModelStateClient.PostAsJsonAsync("/contact/PostWithVnd", contactModel);
447+
var response = await customInvalidModelStateClient.PostAsJsonAsync("/contact/PostWithVnd", contactModel);
446448

447449
// Assert
448450
await response.AssertStatusCodeAsync(HttpStatusCode.BadRequest);

src/Mvc/test/Mvc.FunctionalTests/ApiExplorerTest.cs

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,17 +8,29 @@
88
using Microsoft.AspNetCore.Mvc.ModelBinding;
99
using Microsoft.AspNetCore.InternalTesting;
1010
using Newtonsoft.Json;
11+
using Microsoft.Extensions.Logging;
12+
using System.Reflection;
13+
using Xunit.Abstractions;
1114

1215
namespace Microsoft.AspNetCore.Mvc.FunctionalTests;
1316

14-
public class ApiExplorerTest : IClassFixture<MvcTestFixture<ApiExplorerWebSite.Startup>>
17+
public class ApiExplorerTest : LoggedTest
1518
{
16-
public ApiExplorerTest(MvcTestFixture<ApiExplorerWebSite.Startup> fixture)
19+
protected override void Initialize(TestContext context, MethodInfo methodInfo, object[] testMethodArguments, ITestOutputHelper testOutputHelper)
1720
{
18-
Client = fixture.CreateDefaultClient();
21+
base.Initialize(context, methodInfo, testMethodArguments, testOutputHelper);
22+
Factory = new MvcTestFixture<ApiExplorerWebSite.Startup>(LoggerFactory);
23+
Client = Factory.CreateDefaultClient();
1924
}
2025

21-
public HttpClient Client { get; }
26+
public override void Dispose()
27+
{
28+
Factory.Dispose();
29+
base.Dispose();
30+
}
31+
32+
public MvcTestFixture<ApiExplorerWebSite.Startup> Factory { get; private set; }
33+
public HttpClient Client { get; private set; }
2234

2335
[Fact]
2436
public async Task ApiExplorer_IsVisible_EnabledWithConvention()

src/Mvc/test/Mvc.FunctionalTests/ApplicationModelTest.cs

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,29 @@
33

44
using System.Net;
55
using System.Net.Http;
6+
using System.Reflection;
7+
using Microsoft.AspNetCore.InternalTesting;
8+
using Xunit.Abstractions;
69

710
namespace Microsoft.AspNetCore.Mvc.FunctionalTests;
811

9-
public class ApplicationModelTest : IClassFixture<MvcTestFixture<ApplicationModelWebSite.Startup>>
12+
public class ApplicationModelTest : LoggedTest
1013
{
11-
public ApplicationModelTest(MvcTestFixture<ApplicationModelWebSite.Startup> fixture)
14+
protected override void Initialize(TestContext context, MethodInfo methodInfo, object[] testMethodArguments, ITestOutputHelper testOutputHelper)
1215
{
13-
Client = fixture.CreateDefaultClient();
16+
base.Initialize(context, methodInfo, testMethodArguments, testOutputHelper);
17+
Factory = new MvcTestFixture<ApplicationModelWebSite.Startup>(LoggerFactory);
18+
Client = Factory.CreateDefaultClient();
1419
}
1520

16-
public HttpClient Client { get; }
21+
public override void Dispose()
22+
{
23+
Factory.Dispose();
24+
base.Dispose();
25+
}
26+
27+
public MvcTestFixture<ApplicationModelWebSite.Startup> Factory { get; private set; }
28+
public HttpClient Client { get; private set; }
1729

1830
[Fact]
1931
public async Task ControllerModel_CustomizedWithAttribute()

src/Mvc/test/Mvc.FunctionalTests/AsyncActionsTests.cs

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

44
using System.Net;
55
using System.Net.Http;
6+
using System.Reflection;
7+
using Microsoft.AspNetCore.InternalTesting;
8+
using Xunit.Abstractions;
69

710
namespace Microsoft.AspNetCore.Mvc.FunctionalTests;
811

9-
public class AsyncActionsTests : IClassFixture<MvcTestFixture<BasicWebSite.StartupWithoutEndpointRouting>>
12+
public class AsyncActionsTests : LoggedTest
1013
{
11-
public AsyncActionsTests(MvcTestFixture<BasicWebSite.StartupWithoutEndpointRouting> fixture)
14+
protected override void Initialize(TestContext context, MethodInfo methodInfo, object[] testMethodArguments, ITestOutputHelper testOutputHelper)
1215
{
13-
Client = fixture.CreateDefaultClient();
16+
base.Initialize(context, methodInfo, testMethodArguments, testOutputHelper);
17+
Factory = new MvcTestFixture<BasicWebSite.StartupWithoutEndpointRouting>(LoggerFactory);
18+
Client = Factory.CreateDefaultClient();
1419
}
1520

16-
public HttpClient Client { get; }
21+
public override void Dispose()
22+
{
23+
Factory.Dispose();
24+
base.Dispose();
25+
}
26+
27+
public MvcTestFixture<BasicWebSite.StartupWithoutEndpointRouting> Factory { get; private set; }
28+
public HttpClient Client { get; private set; }
1729

1830
[Fact]
1931
public async Task AsyncVoidAction_ReturnsOK()

src/Mvc/test/Mvc.FunctionalTests/AsyncDisposalTest.cs

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,28 +3,39 @@
33

44
using System.Net;
55
using System.Net.Http;
6+
using System.Reflection;
67
using BasicWebSite.Controllers;
78
using Microsoft.AspNetCore.Hosting;
9+
using Microsoft.AspNetCore.InternalTesting;
810
using Microsoft.AspNetCore.Mvc.Testing;
911
using Microsoft.Extensions.DependencyInjection;
12+
using Xunit.Abstractions;
1013

1114
namespace Microsoft.AspNetCore.Mvc.FunctionalTests;
1215

13-
public class AsyncDisposalTest : IClassFixture<MvcTestFixture<BasicWebSite.Startup>>
16+
public class AsyncDisposalTest : LoggedTest
1417
{
15-
public AsyncDisposalTest(MvcTestFixture<BasicWebSite.Startup> fixture)
18+
19+
protected override void Initialize(TestContext context, MethodInfo methodInfo, object[] testMethodArguments, ITestOutputHelper testOutputHelper)
1620
{
17-
Factory = fixture.Factories.FirstOrDefault() ?? fixture.WithWebHostBuilder(ConfigureWebHostBuilder);
21+
base.Initialize(context, methodInfo, testMethodArguments, testOutputHelper);
22+
Factory = new MvcTestFixture<BasicWebSite.Startup>(LoggerFactory).WithWebHostBuilder(ConfigureWebHostBuilder);
1823
Client = Factory.CreateDefaultClient();
1924
}
2025

26+
public override void Dispose()
27+
{
28+
Factory.Dispose();
29+
base.Dispose();
30+
}
31+
2132
private static void ConfigureWebHostBuilder(IWebHostBuilder builder) =>
2233
builder.UseStartup<BasicWebSite.Startup>()
2334
.ConfigureServices(s => s.AddSingleton<ControllerTestDisposeAsync>());
2435

25-
public WebApplicationFactory<BasicWebSite.Startup> Factory { get; }
36+
public WebApplicationFactory<BasicWebSite.Startup> Factory { get; private set; }
2637

27-
public HttpClient Client { get; }
38+
public HttpClient Client { get; private set; }
2839

2940
[Fact]
3041
public async Task CanDisposeAsyncController()

src/Mvc/test/Mvc.FunctionalTests/AsyncEnumerableTestBase.cs

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,20 +3,32 @@
33

44
using System.Net;
55
using System.Net.Http;
6+
using System.Reflection;
67
using System.Text.Json;
78
using System.Xml.Linq;
89
using FormatterWebSite;
10+
using Microsoft.AspNetCore.InternalTesting;
11+
using Xunit.Abstractions;
912

1013
namespace Microsoft.AspNetCore.Mvc.FunctionalTests;
1114

12-
public class AsyncEnumerableTestBase : IClassFixture<MvcTestFixture<StartupWithJsonFormatter>>
15+
public class AsyncEnumerableTestBase : LoggedTest
1316
{
14-
public AsyncEnumerableTestBase(MvcTestFixture<StartupWithJsonFormatter> fixture)
17+
protected override void Initialize(TestContext context, MethodInfo methodInfo, object[] testMethodArguments, ITestOutputHelper testOutputHelper)
1518
{
16-
Client = fixture.CreateDefaultClient();
19+
base.Initialize(context, methodInfo, testMethodArguments, testOutputHelper);
20+
Factory = new MvcTestFixture<StartupWithJsonFormatter>(LoggerFactory);
21+
Client = Factory.CreateDefaultClient();
1722
}
1823

19-
public HttpClient Client { get; }
24+
public override void Dispose()
25+
{
26+
Factory.Dispose();
27+
base.Dispose();
28+
}
29+
30+
public MvcTestFixture<StartupWithJsonFormatter> Factory { get; private set; }
31+
public HttpClient Client { get; private set; }
2032

2133
[Fact]
2234
public Task AsyncEnumerableReturnedWorks() => AsyncEnumerableWorks("getallprojects");

src/Mvc/test/Mvc.FunctionalTests/AuthMiddlewareAndFilterTest.cs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,4 @@ namespace Microsoft.AspNetCore.Mvc.FunctionalTests;
55

66
public class AuthMiddlewareAndFilterTest : AuthMiddlewareAndFilterTestBase<SecurityWebSite.StartupWithGlobalAuthFilter>
77
{
8-
public AuthMiddlewareAndFilterTest(MvcTestFixture<SecurityWebSite.StartupWithGlobalAuthFilter> fixture)
9-
: base(fixture)
10-
{
11-
}
128
}

0 commit comments

Comments
 (0)