Skip to content

Commit 2941023

Browse files
committed
feat: extend policy size limit from 12 to 14 parameters
1 parent 999b3f4 commit 2941023

12 files changed

Lines changed: 706 additions & 30 deletions

File tree

Casbin.UnitTests/Examples/support_count_model.conf

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,10 @@ r9 = value1, value2, value3, value4, value5, value6, value7, value8, value9
1111
r10= value1, value2, value3, value4, value5, value6, value7, value8, value9, valueA
1212
r11= value1, value2, value3, value4, value5, value6, value7, value8, value9, valueA, valueB
1313
r12= value1, value2, value3, value4, value5, value6, value7, value8, value9, valueA, valueB, valueC
14-
# Not support generic
1514
r13= value1, value2, value3, value4, value5, value6, value7, value8, value9, valueA, valueB, valueC, valueD
15+
r14= value1, value2, value3, value4, value5, value6, value7, value8, value9, valueA, valueB, valueC, valueD, valueE
16+
# Not support generic
17+
r15= value1, value2, value3, value4, value5, value6, value7, value8, value9, valueA, valueB, valueC, valueD, valueE, valueF
1618

1719
[policy_definition]
1820
p = value1
@@ -27,8 +29,10 @@ p9 = value1, value2, value3, value4, value5, value6, value7, value8, value9
2729
p10= value1, value2, value3, value4, value5, value6, value7, value8, value9, valueA
2830
p11= value1, value2, value3, value4, value5, value6, value7, value8, value9, valueA, valueB
2931
p12= value1, value2, value3, value4, value5, value6, value7, value8, value9, valueA, valueB, valueC
30-
# Not support generic
3132
p13= value1, value2, value3, value4, value5, value6, value7, value8, value9, valueA, valueB, valueC, valueD
33+
p14= value1, value2, value3, value4, value5, value6, value7, value8, value9, valueA, valueB, valueC, valueD, valueE
34+
# Not support generic
35+
p15= value1, value2, value3, value4, value5, value6, value7, value8, value9, valueA, valueB, valueC, valueD, valueE, valueF
3236

3337
[role_definition]
3438
g = _, _
@@ -49,5 +53,7 @@ m9 = r9.value1 == p9.value1 && r9.value2 == p9.value2 && r9.value3 == p9.value3
4953
m10= r10.value1 == p10.value1 && r10.value2 == p10.value2 && r10.value3 == p10.value3 && r10.value4 == p10.value4 && r10.value5 == p10.value5 && r10.value6 == p10.value6 && r10.value7 == p10.value7 && r10.value8 == p10.value8 && r10.value9 == p10.value9 && r10.valueA == p10.valueA
5054
m11= r11.value1 == p11.value1 && r11.value2 == p11.value2 && r11.value3 == p11.value3 && r11.value4 == p11.value4 && r11.value5 == p11.value5 && r11.value6 == p11.value6 && r11.value7 == p11.value7 && r11.value8 == p11.value8 && r11.value9 == p11.value9 && r11.valueA == p11.valueA && r11.valueB == p11.valueB
5155
m12= r12.value1 == p12.value1 && r12.value2 == p12.value2 && r12.value3 == p12.value3 && r12.value4 == p12.value4 && r12.value5 == p12.value5 && r12.value6 == p12.value6 && r12.value7 == p12.value7 && r12.value8 == p12.value8 && r12.value9 == p12.value9 && r12.valueA == p12.valueA && r12.valueB == p12.valueB && r12.valueC == p12.valueC
52-
# Not support generic
5356
m13= r13.value1 == p13.value1 && r13.value2 == p13.value2 && r13.value3 == p13.value3 && r13.value4 == p13.value4 && r13.value5 == p13.value5 && r13.value6 == p13.value6 && r13.value7 == p13.value7 && r13.value8 == p13.value8 && r13.value9 == p13.value9 && r13.valueA == p13.valueA && r13.valueB == p13.valueB && r13.valueC == p13.valueC && r13.valueD == p13.valueD
57+
m14= r14.value1 == p14.value1 && r14.value2 == p14.value2 && r14.value3 == p14.value3 && r14.value4 == p14.value4 && r14.value5 == p14.value5 && r14.value6 == p14.value6 && r14.value7 == p14.value7 && r14.value8 == p14.value8 && r14.value9 == p14.value9 && r14.valueA == p14.valueA && r14.valueB == p14.valueB && r14.valueC == p14.valueC && r14.valueD == p14.valueD && r14.valueE == p14.valueE
58+
# Not support generic
59+
m15= r15.value1 == p15.value1 && r15.value2 == p15.value2 && r15.value3 == p15.value3 && r15.value4 == p15.value4 && r15.value5 == p15.value5 && r15.value6 == p15.value6 && r15.value7 == p15.value7 && r15.value8 == p15.value8 && r15.value9 == p15.value9 && r15.valueA == p15.valueA && r15.valueB == p15.valueB && r15.valueC == p15.valueC && r15.valueD == p15.valueD && r15.valueE == p15.valueE && r15.valueF == p15.valueF

Casbin.UnitTests/GenericTests/SupportCountTest.cs

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ public class SupportCountTest
1212
[Fact]
1313
public void TestSupportCount()
1414
{
15-
for (int i = 1; i <= 13; i++)
15+
for (int i = 1; i <= 14; i++)
1616
{
1717
IEnforcer enforcer = new Enforcer(DefaultModel.CreateFromText(TestModelFixture.SupportCountModelText));
1818
string policyType = $"p{i}";
@@ -120,6 +120,13 @@ private static void TestEnforce(IEnforcer enforcer, EnforceContext context, int
120120
Assert.True(enforcer.Enforce(context, "value1", "value2", "value3", "value4", "value5", "value6",
121121
"value7", "value8", "value9", "value10", "value11", "value12", "value13"));
122122
break;
123+
case 14:
124+
Assert.True(enforcer.Enforce(context, Request.CreateValues("value1", "value2", "value3",
125+
"value4", "value5", "value6", "value7", "value8", "value9",
126+
"value10", "value11", "value12", "value13", "value14")));
127+
Assert.True(enforcer.Enforce(context, "value1", "value2", "value3", "value4", "value5", "value6",
128+
"value7", "value8", "value9", "value10", "value11", "value12", "value13", "value14"));
129+
break;
123130
default:
124131
throw new ArgumentOutOfRangeException(nameof(requestCount));
125132
}
@@ -135,4 +142,13 @@ private static IPolicyValues CreateTestPolicy(int count)
135142

136143
return Policy.ValuesFrom(policy);
137144
}
145+
146+
[Fact]
147+
public void TestUnsupportedCount()
148+
{
149+
// 测试不支持的情况 - 15个参数应该抛出异常
150+
// 由于没有15个参数的CreateValues重载,我们需要测试SupportGeneric方法
151+
Assert.False(Request.SupportGeneric(15));
152+
Assert.False(Policy.SupportGeneric(15));
153+
}
138154
}

Casbin/Abstractions/Persist/IPersistPolicy.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ public interface IPersistPolicy
1616
public string Value10 { get; set; }
1717
public string Value11 { get; set; }
1818
public string Value12 { get; set; }
19+
public string Value13 { get; set; }
20+
public string Value14 { get; set; }
1921
}
2022

2123

Casbin/Abstractions/Persist/IReadOnlyPersistPolicy.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ public interface IReadOnlyPersistPolicy
1616
public string Value10 { get; }
1717
public string Value11 { get; }
1818
public string Value12 { get; }
19+
public string Value13 { get; }
20+
public string Value14 { get; }
1921
}
2022

2123

Casbin/Enforcer.Internal.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,10 @@ private bool InternalEnforce<TRequest>(in EnforceContext context, in TRequest re
5858
string, string, string, string>>(in context, requestValues),
5959
12 => InternalEnforce<TRequest, PolicyValues<string, string, string, string, string, string, string,
6060
string, string, string, string, string>>(in context, requestValues),
61+
13 => InternalEnforce<TRequest, PolicyValues<string, string, string, string, string, string, string,
62+
string, string, string, string, string, string>>(in context, requestValues),
63+
14 => InternalEnforce<TRequest, PolicyValues<string, string, string, string, string, string, string,
64+
string, string, string, string, string, string, string>>(in context, requestValues),
6165
_ => InternalEnforce<IRequestValues, IPolicyValues>(in context, requestValues)
6266
};
6367
}

0 commit comments

Comments
 (0)