Skip to content

Commit b8f8667

Browse files
Merge pull request #2796 from martincostello/gh-2741-copy-comparer
Fix configuration properties not being copied
2 parents 79375b9 + 3421b71 commit b8f8667

File tree

4 files changed

+41
-2
lines changed

4 files changed

+41
-2
lines changed

src/Swashbuckle.AspNetCore.SwaggerGen/DependencyInjection/ConfigureSwaggerGeneratorOptions.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,12 +63,15 @@ public void DeepCopy(SwaggerGeneratorOptions source, SwaggerGeneratorOptions tar
6363
target.SortKeySelector = source.SortKeySelector;
6464
target.InferSecuritySchemes = source.InferSecuritySchemes;
6565
target.DescribeAllParametersInCamelCase = source.DescribeAllParametersInCamelCase;
66+
target.SchemaComparer = source.SchemaComparer;
6667
target.Servers = new List<OpenApiServer>(source.Servers);
6768
target.SecuritySchemes = new Dictionary<string, OpenApiSecurityScheme>(source.SecuritySchemes);
6869
target.SecurityRequirements = new List<OpenApiSecurityRequirement>(source.SecurityRequirements);
6970
target.ParameterFilters = new List<IParameterFilter>(source.ParameterFilters);
7071
target.OperationFilters = new List<IOperationFilter>(source.OperationFilters);
7172
target.DocumentFilters = new List<IDocumentFilter>(source.DocumentFilters);
73+
target.InferSecuritySchemes = source.InferSecuritySchemes;
74+
target.SecuritySchemesSelector = source.SecuritySchemesSelector;
7275
}
7376

7477
private TFilter CreateFilter<TFilter>(FilterDescriptor filterDescriptor)
@@ -77,4 +80,4 @@ private TFilter CreateFilter<TFilter>(FilterDescriptor filterDescriptor)
7780
.CreateInstance(_serviceProvider, filterDescriptor.Type, filterDescriptor.Arguments);
7881
}
7982
}
80-
}
83+
}

src/Swashbuckle.AspNetCore.SwaggerGen/DependencyInjection/SwaggerGenServiceCollectionExtensions.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ public static IServiceCollection AddSwaggerGen(
2020
c.Conventions.Add(new SwaggerApplicationConvention()));
2121

2222
// Register custom configurators that takes values from SwaggerGenOptions (i.e. high level config)
23-
// and applies them to SwaggerGeneratorOptions and SchemaGeneratorOptoins (i.e. lower-level config)
23+
// and applies them to SwaggerGeneratorOptions and SchemaGeneratorOptions (i.e. lower-level config)
2424
services.AddTransient<IConfigureOptions<SwaggerGeneratorOptions>, ConfigureSwaggerGeneratorOptions>();
2525
services.AddTransient<IConfigureOptions<SchemaGeneratorOptions>, ConfigureSchemaGeneratorOptions>();
2626

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
using System.Reflection;
2+
using Xunit;
3+
4+
namespace Swashbuckle.AspNetCore.SwaggerGen.Test;
5+
6+
public static class ConfigureSchemaGeneratorOptionsTests
7+
{
8+
[Fact]
9+
public static void DeepCopy_Copies_All_Properties()
10+
{
11+
var type = typeof(SchemaGeneratorOptions);
12+
var publicProperties = type.GetProperties(BindingFlags.Public | BindingFlags.Instance);
13+
14+
// If this assertion fails, it means that a new property has been added
15+
// to SwaggerGeneratorOptions and ConfigureSchemaGeneratorOptions.DeepCopy() needs to be updated
16+
Assert.Equal(12, publicProperties.Length);
17+
}
18+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
using System.Reflection;
2+
using Xunit;
3+
4+
namespace Swashbuckle.AspNetCore.SwaggerGen.Test;
5+
6+
public static class ConfigureSwaggerGeneratorOptionsTests
7+
{
8+
[Fact]
9+
public static void DeepCopy_Copies_All_Properties()
10+
{
11+
var type = typeof(SwaggerGeneratorOptions);
12+
var publicProperties = type.GetProperties(BindingFlags.Public | BindingFlags.Instance);
13+
14+
// If this assertion fails, it means that a new property has been added
15+
// to SwaggerGeneratorOptions and ConfigureSwaggerGeneratorOptions.DeepCopy() needs to be updated
16+
Assert.Equal(18, publicProperties.Length);
17+
}
18+
}

0 commit comments

Comments
 (0)