Skip to content

Commit 23a56ea

Browse files
committed
Add more tests
1 parent d11c867 commit 23a56ea

File tree

2 files changed

+59
-3
lines changed

2 files changed

+59
-3
lines changed

test/System.Linq.Dynamic.Core.Tests/Helpers/Models/AppSettings.cs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,4 +29,17 @@ public static class AppSettings2
2929
{ "jwt", "test" }
3030
};
3131
}
32+
33+
public class AppSettings3
34+
{
35+
public static Dictionary<string, string> SettingsProp { get; } = new()
36+
{
37+
{ "jwt", "test" }
38+
};
39+
40+
public static Dictionary<string, string> SettingsField = new()
41+
{
42+
{ "jwt", "test" }
43+
};
44+
}
3245
}

test/System.Linq.Dynamic.Core.Tests/SecurityTests.cs

Lines changed: 46 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ public void UsingSystemReflectionAssembly_ThrowsException(string selector)
8787
[InlineData("System.Linq.Dynamic.Core.Tests.Helpers.Models.AppSettings.SettingsField[\"jwt\"]")]
8888
[InlineData("c => System.Linq.Dynamic.Core.Tests.Helpers.Models.AppSettings.SettingsProp[\"jwt\"]")]
8989
[InlineData("c => System.Linq.Dynamic.Core.Tests.Helpers.Models.AppSettings.SettingsField[\"jwt\"]")]
90-
public void UsingStaticClass_ThrowsException(string selector)
90+
public void UsingStaticClassAsType_ThrowsException(string selector)
9191
{
9292
// Arrange
9393
var queryable = new[]
@@ -102,16 +102,36 @@ public void UsingStaticClass_ThrowsException(string selector)
102102
action.Should().Throw<ParseException>().WithMessage("Type 'System.Linq.Dynamic.Core.Tests.Helpers.Models.AppSettings' not found");
103103
}
104104

105+
[Theory]
106+
[InlineData("new System.Linq.Dynamic.Core.Tests.Helpers.Models.AppSettings3().SettingsProp[\"jwt\"]")]
107+
[InlineData("new System.Linq.Dynamic.Core.Tests.Helpers.Models.AppSettings3().SettingsField[\"jwt\"]")]
108+
[InlineData("c => new System.Linq.Dynamic.Core.Tests.Helpers.Models.AppSettings3().SettingsProp[\"jwt\"]")]
109+
[InlineData("c => new System.Linq.Dynamic.Core.Tests.Helpers.Models.AppSettings3().SettingsField[\"jwt\"]")]
110+
public void UsingClassAsType_ThrowsException(string selector)
111+
{
112+
// Arrange
113+
var queryable = new[]
114+
{
115+
new Message("Alice", "Bob")
116+
}.AsQueryable();
117+
118+
// Act
119+
Action action = () => queryable.Select(selector);
120+
121+
// Assert
122+
action.Should().Throw<ParseException>().WithMessage("Type 'System.Linq.Dynamic.Core.Tests.Helpers.Models.AppSettings3' not found");
123+
}
124+
105125
[Theory]
106126
[InlineData("System.Linq.Dynamic.Core.Tests.Helpers.Models.AppSettings.SettingsProp[\"jwt\"]")]
107127
[InlineData("System.Linq.Dynamic.Core.Tests.Helpers.Models.AppSettings.SettingsField[\"jwt\"]")]
108128
[InlineData("c => System.Linq.Dynamic.Core.Tests.Helpers.Models.AppSettings.SettingsProp[\"jwt\"]")]
109129
[InlineData("c => System.Linq.Dynamic.Core.Tests.Helpers.Models.AppSettings.SettingsField[\"jwt\"]")]
110-
public void UsingStaticClass_WhenAddedDefaultDynamicLinqCustomTypeProvider_ShouldBeOk(string selector)
130+
public void UsingStaticClassAsType_WhenAddedToDefaultDynamicLinqCustomTypeProvider_ShouldBeOk(string selector)
111131
{
112132
// Arrange
113133
var config = new ParsingConfig();
114-
config.UseDefaultDynamicLinqCustomTypeProvider([typeof(Helpers.Models.AppSettings)]);
134+
config.UseDefaultDynamicLinqCustomTypeProvider([typeof(Helpers.Models.AppSettings), typeof(Helpers.Models.AppSettings3)]);
115135

116136
var queryable = new[]
117137
{
@@ -125,6 +145,29 @@ public void UsingStaticClass_WhenAddedDefaultDynamicLinqCustomTypeProvider_Shoul
125145
action.Should().NotThrow();
126146
}
127147

148+
[Theory(Skip = "Bug: Accessing static members on instance class is not supported")]
149+
[InlineData("new System.Linq.Dynamic.Core.Tests.Helpers.Models.AppSettings3()", "SettingsProp[\"jwt\"]")]
150+
[InlineData("new System.Linq.Dynamic.Core.Tests.Helpers.Models.AppSettings3()", "SettingsField[\"jwt\"]")]
151+
[InlineData("c => new System.Linq.Dynamic.Core.Tests.Helpers.Models.AppSettings3()", "SettingsProp[\"jwt\"]")]
152+
[InlineData("c => new System.Linq.Dynamic.Core.Tests.Helpers.Models.AppSettings3()", "SettingsField[\"jwt\"]")]
153+
public void UsingClassAsType_WhenAddedToDefaultDynamicLinqCustomTypeProvider_ShouldBeOk(string selector1, string selector2)
154+
{
155+
// Arrange
156+
var config = new ParsingConfig();
157+
config.UseDefaultDynamicLinqCustomTypeProvider([typeof(Helpers.Models.AppSettings), typeof(Helpers.Models.AppSettings3)]);
158+
159+
var queryable = new[]
160+
{
161+
new Message("Alice", "Bob")
162+
}.AsQueryable();
163+
164+
// Act
165+
Action action = () => queryable.Select(config, selector1).Select(config, selector2);
166+
167+
// Assert
168+
action.Should().NotThrow();
169+
}
170+
128171
[Theory]
129172
[InlineData("System.Linq.Dynamic.Core.Tests.Helpers.Models.AppSettings2.SettingsProp[\"jwt\"]")]
130173
[InlineData("System.Linq.Dynamic.Core.Tests.Helpers.Models.AppSettings2.SettingsField[\"jwt\"]")]

0 commit comments

Comments
 (0)