Skip to content

Commit 414e3eb

Browse files
authored
Add parameterless RequireCors overload (#47341)
1 parent 77e4daf commit 414e3eb

File tree

3 files changed

+40
-9
lines changed

3 files changed

+40
-9
lines changed

src/Middleware/CORS/src/Infrastructure/CorsEndpointConventionBuilderExtensions.cs

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,22 @@ namespace Microsoft.AspNetCore.Builder;
1111
/// </summary>
1212
public static class CorsEndpointConventionBuilderExtensions
1313
{
14+
/// <summary>
15+
/// Adds a CORS policy with the default policy name to the endpoint(s).
16+
/// </summary>
17+
/// <param name="builder">The endpoint convention builder.</param>
18+
/// <returns>The original convention builder parameter.</returns>
19+
public static TBuilder RequireCors<TBuilder>(this TBuilder builder) where TBuilder : IEndpointConventionBuilder
20+
{
21+
ArgumentNullException.ThrowIfNull(builder);
22+
23+
builder.Add(endpointBuilder =>
24+
{
25+
endpointBuilder.Metadata.Add(new EnableCorsAttribute());
26+
});
27+
return builder;
28+
}
29+
1430
/// <summary>
1531
/// Adds a CORS policy with the specified name to the endpoint(s).
1632
/// </summary>
@@ -19,10 +35,7 @@ public static class CorsEndpointConventionBuilderExtensions
1935
/// <returns>The original convention builder parameter.</returns>
2036
public static TBuilder RequireCors<TBuilder>(this TBuilder builder, string policyName) where TBuilder : IEndpointConventionBuilder
2137
{
22-
if (builder == null)
23-
{
24-
throw new ArgumentNullException(nameof(builder));
25-
}
38+
ArgumentNullException.ThrowIfNull(builder);
2639

2740
builder.Add(endpointBuilder =>
2841
{
@@ -39,11 +52,7 @@ public static TBuilder RequireCors<TBuilder>(this TBuilder builder, string polic
3952
/// <returns>The original convention builder parameter.</returns>
4053
public static TBuilder RequireCors<TBuilder>(this TBuilder builder, Action<CorsPolicyBuilder> configurePolicy) where TBuilder : IEndpointConventionBuilder
4154
{
42-
if (builder == null)
43-
{
44-
throw new ArgumentNullException(nameof(builder));
45-
}
46-
55+
ArgumentNullException.ThrowIfNull(builder);
4756
ArgumentNullException.ThrowIfNull(configurePolicy);
4857

4958
var policyBuilder = new CorsPolicyBuilder();
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
11
#nullable enable
2+
static Microsoft.AspNetCore.Builder.CorsEndpointConventionBuilderExtensions.RequireCors<TBuilder>(this TBuilder builder) -> TBuilder

src/Middleware/CORS/test/UnitTests/CorsEndpointConventionBuilderExtensionsTests.cs

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,27 @@ public void RequireCors_Policy_MetadataAdded()
5151
Assert.True(metadata.Policy.AllowAnyOrigin);
5252
}
5353

54+
[Fact]
55+
public void RequireCors_NoParameter_MetadataAdded()
56+
{
57+
// Arrange
58+
var testConventionBuilder = new TestEndpointConventionBuilder();
59+
60+
// Act
61+
testConventionBuilder.RequireCors();
62+
63+
// Assert
64+
var addCorsPolicy = Assert.Single(testConventionBuilder.Conventions);
65+
66+
var endpointModel = new TestEndpointBuilder();
67+
addCorsPolicy(endpointModel);
68+
var endpoint = endpointModel.Build();
69+
70+
var metadata = endpoint.Metadata.GetMetadata<IEnableCorsAttribute>();
71+
Assert.NotNull(metadata);
72+
Assert.Null(metadata.PolicyName);
73+
}
74+
5475
[Fact]
5576
public void RequireCors_ChainedCall_ReturnedBuilderIsDerivedType()
5677
{

0 commit comments

Comments
 (0)