Skip to content

Commit dad34bc

Browse files
authored
Do not consider abstract classes in configuration options (#362)
1 parent e432a6b commit dad34bc

File tree

4 files changed

+27
-0
lines changed

4 files changed

+27
-0
lines changed

src/Microsoft.Azure.WebJobs.Extensions.OpenApi.Core/Resolvers/OpenApiConfigurationResolver.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ public static IOpenApiConfigurationOptions Resolve(Assembly assembly)
2323
{
2424
var type = assembly.GetLoadableTypes()
2525
.SingleOrDefault(p => p.GetInterface("IOpenApiConfigurationOptions", ignoreCase: true).IsNullOrDefault() == false
26+
&& p.IsAbstract == false
2627
&& p.GetCustomAttribute<ObsoleteAttribute>(inherit: false).IsNullOrDefault() == true);
2728
if (type.IsNullOrDefault())
2829
{
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
namespace Microsoft.Azure.WebJobs.Extensions.OpenApi.Core.Tests.Fakes
2+
{
3+
public class FakeOpenApiConfigurationOptions : FakeOpenApiConfigurationOptionsBase
4+
{
5+
}
6+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
using Microsoft.Azure.WebJobs.Extensions.OpenApi.Core.Configurations;
2+
3+
namespace Microsoft.Azure.WebJobs.Extensions.OpenApi.Core.Tests.Fakes
4+
{
5+
public abstract class FakeOpenApiConfigurationOptionsBase : DefaultOpenApiConfigurationOptions
6+
{
7+
}
8+
}

test/Microsoft.Azure.WebJobs.Extensions.OpenApi.Core.Tests/Resolvers/OpenApiConfigurationResolverTests.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
using Microsoft.Azure.WebJobs.Extensions.OpenApi.Core.Abstractions;
66
using Microsoft.Azure.WebJobs.Extensions.OpenApi.Core.Configurations;
77
using Microsoft.Azure.WebJobs.Extensions.OpenApi.Core.Resolvers;
8+
using Microsoft.Azure.WebJobs.Extensions.OpenApi.Core.Tests.Fakes;
89
using Microsoft.VisualStudio.TestTools.UnitTesting;
910

1011
namespace Microsoft.Azure.WebJobs.Extensions.OpenApi.Core.Tests.Resolvers
@@ -39,5 +40,16 @@ public void Given_Assembly_When_Resolve_Invoked_Then_It_Should_Return_Result()
3940

4041
result.Should().BeOfType<DefaultOpenApiConfigurationOptions>();
4142
}
43+
44+
[TestMethod]
45+
public void Given_An_Assembly_With_An_Abstract_Base_Configuration_Then_It_Should_Return_Result()
46+
{
47+
var assembly = Assembly.GetAssembly(typeof(FakeOpenApiConfigurationOptions));
48+
49+
var result = OpenApiConfigurationResolver.Resolve(assembly);
50+
51+
result.Should().BeOfType<FakeOpenApiConfigurationOptions>();
52+
result.GetType().BaseType.Should().Be(typeof(FakeOpenApiConfigurationOptionsBase)); // This verifies the abstract type was considered in the resolution
53+
}
4254
}
4355
}

0 commit comments

Comments
 (0)