Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion src/Mvc/Mvc.slnf
Original file line number Diff line number Diff line change
Expand Up @@ -28,15 +28,16 @@
"src\\Http\\Authentication.Core\\src\\Microsoft.AspNetCore.Authentication.Core.csproj",
"src\\Http\\Headers\\src\\Microsoft.Net.Http.Headers.csproj",
"src\\Http\\Http.Abstractions\\src\\Microsoft.AspNetCore.Http.Abstractions.csproj",
"src\\Http\\Http.Extensions\\gen\\Microsoft.AspNetCore.Http.RequestDelegateGenerator.csproj",
"src\\Http\\Http.Extensions\\src\\Microsoft.AspNetCore.Http.Extensions.csproj",
"src\\Http\\Http.Features\\src\\Microsoft.AspNetCore.Http.Features.csproj",
"src\\Http\\Http.Results\\src\\Microsoft.AspNetCore.Http.Results.csproj",
"src\\Http\\Http\\src\\Microsoft.AspNetCore.Http.csproj",
"src\\Http\\Metadata\\src\\Microsoft.AspNetCore.Metadata.csproj",
"src\\Http\\Routing.Abstractions\\src\\Microsoft.AspNetCore.Routing.Abstractions.csproj",
"src\\Http\\Routing\\src\\Microsoft.AspNetCore.Routing.csproj",
"src\\Http\\samples\\MinimalSample\\MinimalSample.csproj",
"src\\Http\\WebUtilities\\src\\Microsoft.AspNetCore.WebUtilities.csproj",
"src\\Http\\samples\\MinimalSample\\MinimalSample.csproj",
"src\\JSInterop\\Microsoft.JSInterop\\src\\Microsoft.JSInterop.csproj",
"src\\Localization\\Abstractions\\src\\Microsoft.Extensions.Localization.Abstractions.csproj",
"src\\Localization\\Localization\\src\\Microsoft.Extensions.Localization.csproj",
Expand Down
22 changes: 17 additions & 5 deletions src/Mvc/test/Mvc.FunctionalTests/AntiforgeryAuthTests.cs
Original file line number Diff line number Diff line change
@@ -1,20 +1,32 @@
// Licensed to the .NET Foundation under one or more agreements.
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.

using System.Net;
using System.Net.Http;
using System.Reflection;
using Microsoft.AspNetCore.InternalTesting;
using SecurityWebSite;
using Xunit.Abstractions;

namespace Microsoft.AspNetCore.Mvc.FunctionalTests;

public class AntiforgeryAuthTests : IClassFixture<MvcTestFixture<Startup>>
public class AntiforgeryAuthTests : LoggedTest
{
public AntiforgeryAuthTests(MvcTestFixture<Startup> fixture)
protected override void Initialize(TestContext context, MethodInfo methodInfo, object[] testMethodArguments, ITestOutputHelper testOutputHelper)
{
Client = fixture.CreateDefaultClient();
base.Initialize(context, methodInfo, testMethodArguments, testOutputHelper);
Factory = new MvcTestFixture<Startup>(LoggerFactory);
Client = Factory.CreateDefaultClient();
}

public HttpClient Client { get; }
public override void Dispose()
{
Factory.Dispose();
base.Dispose();
}

public MvcTestFixture<Startup> Factory { get; private set; }
public HttpClient Client { get; private set; }

[Fact]
public async Task AutomaticAuthenticationBeforeAntiforgery()
Expand Down
20 changes: 16 additions & 4 deletions src/Mvc/test/Mvc.FunctionalTests/AntiforgeryTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,29 @@

using System.Net;
using System.Net.Http;
using System.Reflection;
using Microsoft.AspNetCore.InternalTesting;
using Xunit.Abstractions;

namespace Microsoft.AspNetCore.Mvc.FunctionalTests;

public class AntiforgeryTests : IClassFixture<MvcTestFixture<BasicWebSite.StartupWithoutEndpointRouting>>
public class AntiforgeryTests : LoggedTest
{
public AntiforgeryTests(MvcTestFixture<BasicWebSite.StartupWithoutEndpointRouting> fixture)
protected override void Initialize(TestContext context, MethodInfo methodInfo, object[] testMethodArguments, ITestOutputHelper testOutputHelper)
{
Client = fixture.CreateDefaultClient();
base.Initialize(context, methodInfo, testMethodArguments, testOutputHelper);
Factory = new MvcTestFixture<BasicWebSite.StartupWithoutEndpointRouting>(LoggerFactory);
Client = Factory.CreateDefaultClient();
}

public HttpClient Client { get; }
public override void Dispose()
{
Factory.Dispose();
base.Dispose();
}

public MvcTestFixture<BasicWebSite.StartupWithoutEndpointRouting> Factory { get; private set; }
public HttpClient Client { get; private set; }

[Fact]
public async Task MultipleAFTokensWithinTheSamePage_GeneratesASingleCookieToken()
Expand Down
42 changes: 22 additions & 20 deletions src/Mvc/test/Mvc.FunctionalTests/ApiBehaviorTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,28 +4,40 @@
using System;
using System.Net;
using System.Net.Http;
using System.Reflection;
using System.Text;
using BasicWebSite.Models;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.InternalTesting;
using Microsoft.AspNetCore.Mvc.NewtonsoftJson;
using Microsoft.AspNetCore.Mvc.Testing;
using Microsoft.VisualStudio.TestPlatform.ObjectModel.DataCollection;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using Xunit.Abstractions;

namespace Microsoft.AspNetCore.Mvc.FunctionalTests;

public abstract class ApiBehaviorTestBase<TStartup> : IClassFixture<MvcTestFixture<TStartup>> where TStartup : class
public abstract class ApiBehaviorTestBase<TStartup> : LoggedTest where TStartup : class
{
protected ApiBehaviorTestBase(MvcTestFixture<TStartup> fixture)
protected override void Initialize(TestContext context, MethodInfo methodInfo, object[] testMethodArguments, ITestOutputHelper testOutputHelper)
{
var factory = fixture.Factories.FirstOrDefault() ?? fixture.WithWebHostBuilder(ConfigureWebHostBuilder);
Client = factory.CreateDefaultClient();
base.Initialize(context, methodInfo, testMethodArguments, testOutputHelper);
Factory = new MvcTestFixture<TStartup>(LoggerFactory).WithWebHostBuilder(ConfigureWebHostBuilder);
Client = Factory.CreateDefaultClient();
}

public override void Dispose()
{
Factory.Dispose();
base.Dispose();
}

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

public HttpClient Client { get; }
public WebApplicationFactory<TStartup> Factory { get; private set; }
public HttpClient Client { get; private set; }

[Fact]
public virtual async Task ActionsReturnBadRequest_WhenModelStateIsInvalid()
Expand Down Expand Up @@ -374,11 +386,6 @@ public virtual async Task SerializingValidationProblemDetails_WithExtensionData(

public class ApiBehaviorTest : ApiBehaviorTestBase<BasicWebSite.StartupWithSystemTextJson>
{
public ApiBehaviorTest(MvcTestFixture<BasicWebSite.StartupWithSystemTextJson> fixture)
: base(fixture)
{
}

[Fact]
public override Task ActionsReturnBadRequest_WhenModelStateIsInvalid()
{
Expand Down Expand Up @@ -412,21 +419,16 @@ public override Task SerializingValidationProblemDetails_WithExtensionData()

public class ApiBehaviorTestNewtonsoftJson : ApiBehaviorTestBase<BasicWebSite.StartupWithoutEndpointRouting>
{
public ApiBehaviorTestNewtonsoftJson(MvcTestFixture<BasicWebSite.StartupWithoutEndpointRouting> fixture)
: base(fixture)
{
var factory = fixture.WithWebHostBuilder(ConfigureWebHostBuilder);
CustomInvalidModelStateClient = factory.CreateDefaultClient();
}

private static void ConfigureWebHostBuilder(IWebHostBuilder builder) =>
builder.UseStartup<BasicWebSite.StartupWithCustomInvalidModelStateFactory>();

public HttpClient CustomInvalidModelStateClient { get; }

[Fact]
public async Task ActionsReturnBadRequest_UsesProblemDescriptionProviderAndApiConventionsToConfigureErrorResponse()
{
await using var factory = new MvcTestFixture<BasicWebSite.StartupWithCustomInvalidModelStateFactory>(LoggerFactory)
.WithWebHostBuilder(ConfigureWebHostBuilder);
var customInvalidModelStateClient = factory.CreateDefaultClient();

// Arrange
var contactModel = new Contact
{
Expand All @@ -442,7 +444,7 @@ public async Task ActionsReturnBadRequest_UsesProblemDescriptionProviderAndApiCo
};

// Act
var response = await CustomInvalidModelStateClient.PostAsJsonAsync("/contact/PostWithVnd", contactModel);
var response = await customInvalidModelStateClient.PostAsJsonAsync("/contact/PostWithVnd", contactModel);

// Assert
await response.AssertStatusCodeAsync(HttpStatusCode.BadRequest);
Expand Down
20 changes: 16 additions & 4 deletions src/Mvc/test/Mvc.FunctionalTests/ApiExplorerTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,17 +8,29 @@
using Microsoft.AspNetCore.Mvc.ModelBinding;
using Microsoft.AspNetCore.InternalTesting;
using Newtonsoft.Json;
using Microsoft.Extensions.Logging;
using System.Reflection;
using Xunit.Abstractions;

namespace Microsoft.AspNetCore.Mvc.FunctionalTests;

public class ApiExplorerTest : IClassFixture<MvcTestFixture<ApiExplorerWebSite.Startup>>
public class ApiExplorerTest : LoggedTest
{
public ApiExplorerTest(MvcTestFixture<ApiExplorerWebSite.Startup> fixture)
protected override void Initialize(TestContext context, MethodInfo methodInfo, object[] testMethodArguments, ITestOutputHelper testOutputHelper)
{
Client = fixture.CreateDefaultClient();
base.Initialize(context, methodInfo, testMethodArguments, testOutputHelper);
Factory = new MvcTestFixture<ApiExplorerWebSite.Startup>(LoggerFactory);
Client = Factory.CreateDefaultClient();
}

public HttpClient Client { get; }
public override void Dispose()
{
Factory.Dispose();
base.Dispose();
}

public MvcTestFixture<ApiExplorerWebSite.Startup> Factory { get; private set; }
public HttpClient Client { get; private set; }

[Fact]
public async Task ApiExplorer_IsVisible_EnabledWithConvention()
Expand Down
20 changes: 16 additions & 4 deletions src/Mvc/test/Mvc.FunctionalTests/ApplicationModelTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,29 @@

using System.Net;
using System.Net.Http;
using System.Reflection;
using Microsoft.AspNetCore.InternalTesting;
using Xunit.Abstractions;

namespace Microsoft.AspNetCore.Mvc.FunctionalTests;

public class ApplicationModelTest : IClassFixture<MvcTestFixture<ApplicationModelWebSite.Startup>>
public class ApplicationModelTest : LoggedTest
{
public ApplicationModelTest(MvcTestFixture<ApplicationModelWebSite.Startup> fixture)
protected override void Initialize(TestContext context, MethodInfo methodInfo, object[] testMethodArguments, ITestOutputHelper testOutputHelper)
{
Client = fixture.CreateDefaultClient();
base.Initialize(context, methodInfo, testMethodArguments, testOutputHelper);
Factory = new MvcTestFixture<ApplicationModelWebSite.Startup>(LoggerFactory);
Client = Factory.CreateDefaultClient();
}

public HttpClient Client { get; }
public override void Dispose()
{
Factory.Dispose();
base.Dispose();
}

public MvcTestFixture<ApplicationModelWebSite.Startup> Factory { get; private set; }
public HttpClient Client { get; private set; }

[Fact]
public async Task ControllerModel_CustomizedWithAttribute()
Expand Down
22 changes: 17 additions & 5 deletions src/Mvc/test/Mvc.FunctionalTests/AsyncActionsTests.cs
Original file line number Diff line number Diff line change
@@ -1,19 +1,31 @@
// Licensed to the .NET Foundation under one or more agreements.
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.

using System.Net;
using System.Net.Http;
using System.Reflection;
using Microsoft.AspNetCore.InternalTesting;
using Xunit.Abstractions;

namespace Microsoft.AspNetCore.Mvc.FunctionalTests;

public class AsyncActionsTests : IClassFixture<MvcTestFixture<BasicWebSite.StartupWithoutEndpointRouting>>
public class AsyncActionsTests : LoggedTest
{
public AsyncActionsTests(MvcTestFixture<BasicWebSite.StartupWithoutEndpointRouting> fixture)
protected override void Initialize(TestContext context, MethodInfo methodInfo, object[] testMethodArguments, ITestOutputHelper testOutputHelper)
{
Client = fixture.CreateDefaultClient();
base.Initialize(context, methodInfo, testMethodArguments, testOutputHelper);
Factory = new MvcTestFixture<BasicWebSite.StartupWithoutEndpointRouting>(LoggerFactory);
Client = Factory.CreateDefaultClient();
}

public HttpClient Client { get; }
public override void Dispose()
{
Factory.Dispose();
base.Dispose();
}

public MvcTestFixture<BasicWebSite.StartupWithoutEndpointRouting> Factory { get; private set; }
public HttpClient Client { get; private set; }

[Fact]
public async Task AsyncVoidAction_ReturnsOK()
Expand Down
21 changes: 16 additions & 5 deletions src/Mvc/test/Mvc.FunctionalTests/AsyncDisposalTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,28 +3,39 @@

using System.Net;
using System.Net.Http;
using System.Reflection;
using BasicWebSite.Controllers;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.InternalTesting;
using Microsoft.AspNetCore.Mvc.Testing;
using Microsoft.Extensions.DependencyInjection;
using Xunit.Abstractions;

namespace Microsoft.AspNetCore.Mvc.FunctionalTests;

public class AsyncDisposalTest : IClassFixture<MvcTestFixture<BasicWebSite.Startup>>
public class AsyncDisposalTest : LoggedTest
{
public AsyncDisposalTest(MvcTestFixture<BasicWebSite.Startup> fixture)

protected override void Initialize(TestContext context, MethodInfo methodInfo, object[] testMethodArguments, ITestOutputHelper testOutputHelper)
{
Factory = fixture.Factories.FirstOrDefault() ?? fixture.WithWebHostBuilder(ConfigureWebHostBuilder);
base.Initialize(context, methodInfo, testMethodArguments, testOutputHelper);
Factory = new MvcTestFixture<BasicWebSite.Startup>(LoggerFactory).WithWebHostBuilder(ConfigureWebHostBuilder);
Client = Factory.CreateDefaultClient();
}

public override void Dispose()
{
Factory.Dispose();
base.Dispose();
}

private static void ConfigureWebHostBuilder(IWebHostBuilder builder) =>
builder.UseStartup<BasicWebSite.Startup>()
.ConfigureServices(s => s.AddSingleton<ControllerTestDisposeAsync>());

public WebApplicationFactory<BasicWebSite.Startup> Factory { get; }
public WebApplicationFactory<BasicWebSite.Startup> Factory { get; private set; }

public HttpClient Client { get; }
public HttpClient Client { get; private set; }

[Fact]
public async Task CanDisposeAsyncController()
Expand Down
20 changes: 16 additions & 4 deletions src/Mvc/test/Mvc.FunctionalTests/AsyncEnumerableTestBase.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,20 +3,32 @@

using System.Net;
using System.Net.Http;
using System.Reflection;
using System.Text.Json;
using System.Xml.Linq;
using FormatterWebSite;
using Microsoft.AspNetCore.InternalTesting;
using Xunit.Abstractions;

namespace Microsoft.AspNetCore.Mvc.FunctionalTests;

public class AsyncEnumerableTestBase : IClassFixture<MvcTestFixture<StartupWithJsonFormatter>>
public class AsyncEnumerableTestBase : LoggedTest
{
public AsyncEnumerableTestBase(MvcTestFixture<StartupWithJsonFormatter> fixture)
protected override void Initialize(TestContext context, MethodInfo methodInfo, object[] testMethodArguments, ITestOutputHelper testOutputHelper)
{
Client = fixture.CreateDefaultClient();
base.Initialize(context, methodInfo, testMethodArguments, testOutputHelper);
Factory = new MvcTestFixture<StartupWithJsonFormatter>(LoggerFactory);
Client = Factory.CreateDefaultClient();
}

public HttpClient Client { get; }
public override void Dispose()
{
Factory.Dispose();
base.Dispose();
}

public MvcTestFixture<StartupWithJsonFormatter> Factory { get; private set; }
public HttpClient Client { get; private set; }

[Fact]
public Task AsyncEnumerableReturnedWorks() => AsyncEnumerableWorks("getallprojects");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,4 @@ namespace Microsoft.AspNetCore.Mvc.FunctionalTests;

public class AuthMiddlewareAndFilterTest : AuthMiddlewareAndFilterTestBase<SecurityWebSite.StartupWithGlobalAuthFilter>
{
public AuthMiddlewareAndFilterTest(MvcTestFixture<SecurityWebSite.StartupWithGlobalAuthFilter> fixture)
: base(fixture)
{
}
}
Loading