Skip to content

Commit 85b9330

Browse files
authored
feat: support load policy from text (#372)
* feat: support load policy from text Signed-off-by: Taoyuesong <[email protected]> * feat: add text adapter Signed-off-by: Taoyuesong <[email protected]> * feat: clean up test project Signed-off-by: Taoyuesong <[email protected]> * fix: remove not used set equal Signed-off-by: Taoyuesong <[email protected]> --------- Signed-off-by: Taoyuesong <[email protected]>
1 parent 0b477c0 commit 85b9330

35 files changed

+1871
-2163
lines changed

Casbin.UnitTests/GenericTests/SupportCountTest.cs

Lines changed: 21 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -37,85 +37,81 @@ private static void TestEnforce(IEnforcer enforcer, EnforceContext context, int
3737
{
3838
case 1:
3939
Assert.True(enforcer.Enforce(context, "value1"));
40-
Assert.True(enforcer.Enforce(context, new[] { "value1" }));
40+
Assert.True(enforcer.Enforce(context, ["value1"]));
4141
break;
4242
case 2:
4343
Assert.True(enforcer.Enforce(context, "value1", "value2"));
44-
Assert.True(enforcer.Enforce(context, new[] { "value1", "value2" }));
44+
Assert.True(enforcer.Enforce(context, ["value1", "value2"]));
4545
break;
4646
case 3:
4747
Assert.True(enforcer.Enforce(context, "value1", "value2", "value3"));
48-
Assert.True(enforcer.Enforce(context, new[] { "value1", "value2", "value3" }));
48+
Assert.True(enforcer.Enforce(context, ["value1", "value2", "value3"]));
4949
break;
5050
case 4:
5151
Assert.True(enforcer.Enforce(context, "value1", "value2", "value3",
5252
"value4"));
53-
Assert.True(enforcer.Enforce(context, new[] { "value1", "value2", "value3", "value4" }));
53+
Assert.True(enforcer.Enforce(context, ["value1", "value2", "value3", "value4"]));
5454
break;
5555
case 5:
5656
Assert.True(enforcer.Enforce(context, "value1", "value2", "value3",
5757
"value4", "value5"));
58-
Assert.True(enforcer.Enforce(context, new[] { "value1", "value2", "value3", "value4", "value5" }));
58+
Assert.True(enforcer.Enforce(context, ["value1", "value2", "value3", "value4", "value5"]));
5959
break;
6060
case 6:
6161
Assert.True(enforcer.Enforce(context, "value1", "value2", "value3",
6262
"value4", "value5", "value6"));
6363
Assert.True(enforcer.Enforce(context,
64-
new[] { "value1", "value2", "value3", "value4", "value5", "value6" }));
64+
["value1", "value2", "value3", "value4", "value5", "value6"]));
6565
break;
6666
case 7:
6767
Assert.True(enforcer.Enforce(context, "value1", "value2", "value3",
6868
"value4", "value5", "value6", "value7"));
6969
Assert.True(enforcer.Enforce(context,
70-
new[] { "value1", "value2", "value3", "value4", "value5", "value6", "value7" }));
70+
["value1", "value2", "value3", "value4", "value5", "value6", "value7"]));
7171
break;
7272
case 8:
7373
Assert.True(enforcer.Enforce(context, "value1", "value2", "value3",
7474
"value4", "value5", "value6", "value7", "value8"));
7575
Assert.True(enforcer.Enforce(context,
76-
new[] { "value1", "value2", "value3", "value4", "value5", "value6", "value7", "value8" }));
76+
["value1", "value2", "value3", "value4", "value5", "value6", "value7", "value8"]));
7777
break;
7878
case 9:
7979
Assert.True(enforcer.Enforce(context, "value1", "value2", "value3",
8080
"value4", "value5", "value6", "value7", "value8", "value9"));
8181
Assert.True(enforcer.Enforce(context,
82-
new[]
83-
{
84-
"value1", "value2", "value3", "value4", "value5", "value6", "value7", "value8", "value9"
85-
}));
82+
[
83+
"value1", "value2", "value3", "value4", "value5", "value6", "value7", "value8", "value9"
84+
]));
8685
break;
8786
case 10:
8887
Assert.True(enforcer.Enforce(context, "value1", "value2", "value3",
8988
"value4", "value5", "value6", "value7", "value8", "value9",
9089
"value10"));
9190
Assert.True(enforcer.Enforce(context,
92-
new[]
93-
{
94-
"value1", "value2", "value3", "value4", "value5", "value6", "value7", "value8", "value9",
91+
[
92+
"value1", "value2", "value3", "value4", "value5", "value6", "value7", "value8", "value9",
9593
"value10"
96-
}));
94+
]));
9795
break;
9896
case 11:
9997
Assert.True(enforcer.Enforce(context, "value1", "value2", "value3",
10098
"value4", "value5", "value6", "value7", "value8", "value9",
10199
"value10", "value11"));
102100
Assert.True(enforcer.Enforce(context,
103-
new[]
104-
{
105-
"value1", "value2", "value3", "value4", "value5", "value6", "value7", "value8", "value9",
101+
[
102+
"value1", "value2", "value3", "value4", "value5", "value6", "value7", "value8", "value9",
106103
"value10", "value11"
107-
}));
104+
]));
108105
break;
109106
case 12:
110107
Assert.True(enforcer.Enforce(context, "value1", "value2", "value3",
111108
"value4", "value5", "value6", "value7", "value8", "value9",
112109
"value10", "value11", "value12"));
113110
Assert.True(enforcer.Enforce(context,
114-
new[]
115-
{
116-
"value1", "value2", "value3", "value4", "value5", "value6", "value7", "value8", "value9",
111+
[
112+
"value1", "value2", "value3", "value4", "value5", "value6", "value7", "value8", "value9",
117113
"value10", "value11", "value12"
118-
}));
114+
]));
119115
break;
120116
case 13:
121117
Assert.True(enforcer.Enforce(context, Request.CreateValues("value1", "value2", "value3",
@@ -131,7 +127,7 @@ private static void TestEnforce(IEnforcer enforcer, EnforceContext context, int
131127

132128
private static IPolicyValues CreateTestPolicy(int count)
133129
{
134-
List<string> policy = new();
130+
List<string> policy = [];
135131
for (int i = 0; i < count; i++)
136132
{
137133
policy.Add($"value{i + 1}");

Casbin.UnitTests/Mock/MockRoleManager.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ public class MockCustomRoleManager : IRoleManager
1414

1515
public IEnumerable<string> GetRoles(string name, string domain = null) => null;
1616
public IEnumerable<string> GetUsers(string name, string domain = null) => null;
17-
public IEnumerable<string> GetDomains(string name) => Enumerable.Empty<string>();
17+
public IEnumerable<string> GetDomains(string name) => [];
1818

1919
public bool HasLink(string name1, string name2, string domain = null)
2020
{
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
namespace Casbin.UnitTests.Mock;
2+
3+
public class TestResource
4+
{
5+
public TestResource(string name, string owner)
6+
{
7+
Name = name;
8+
Owner = owner;
9+
}
10+
11+
public string Name { get; }
12+
13+
public string Owner { get; }
14+
}

Casbin.UnitTests/Mock/TestSubject.cs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
namespace Casbin.UnitTests.Mock;
2+
3+
public class TestSubject
4+
{
5+
public TestSubject(string name, int age)
6+
{
7+
Name = name;
8+
Age = age;
9+
}
10+
11+
public string Name { get; }
12+
13+
public int Age { get; }
14+
}

Casbin.UnitTests/ModelTests/CachedEnforcerTest.cs

Lines changed: 22 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,19 @@
22
using Casbin.UnitTests.Mock;
33
using Xunit;
44
using Xunit.Abstractions;
5-
using static Casbin.UnitTests.Util.TestUtil;
65

76
namespace Casbin.UnitTests.ModelTests;
87

98
[Collection("Model collection")]
109
public class CachedEnforcerTest
1110
{
12-
private readonly TestModelFixture TestModelFixture;
11+
private readonly TestModelFixture _testModelFixture;
1312
private readonly ITestOutputHelper _testOutputHelper;
1413

1514
public CachedEnforcerTest(ITestOutputHelper testOutputHelper, TestModelFixture testModelFixture)
1615
{
1716
_testOutputHelper = testOutputHelper;
18-
TestModelFixture = testModelFixture;
17+
_testModelFixture = testModelFixture;
1918
}
2019

2120
[Fact]
@@ -32,28 +31,28 @@ public void TestEnforceWithCache()
3231
e.EnableCache(true);
3332
e.EnableAutoCleanEnforceCache(false);
3433

35-
TestEnforce(e, "alice", "data1", "read", true);
36-
TestEnforce(e, "alice", "data1", "write", false);
37-
TestEnforce(e, "alice", "data2", "read", false);
38-
TestEnforce(e, "alice", "data2", "write", false);
34+
Assert.True(e.Enforce("alice", "data1", "read"));
35+
Assert.False(e.Enforce("alice", "data1", "write"));
36+
Assert.False(e.Enforce("alice", "data2", "read"));
37+
Assert.False(e.Enforce("alice", "data2", "write"));
3938

4039
// The cache is enabled, so even if we remove a policy rule, the decision
4140
// for ("alice", "data1", "read") will still be true, as it uses the cached result.
4241
_ = e.RemovePolicy("alice", "data1", "read");
4342

44-
TestEnforce(e, "alice", "data1", "read", true);
45-
TestEnforce(e, "alice", "data1", "write", false);
46-
TestEnforce(e, "alice", "data2", "read", false);
47-
TestEnforce(e, "alice", "data2", "write", false);
43+
Assert.True(e.Enforce("alice", "data1", "read"));
44+
Assert.False(e.Enforce("alice", "data1", "write"));
45+
Assert.False(e.Enforce("alice", "data2", "read"));
46+
Assert.False(e.Enforce("alice", "data2", "write"));
4847

4948
// Now we invalidate the cache, then all first-coming Enforce() has to be evaluated in real-time.
5049
// The decision for ("alice", "data1", "read") will be false now.
5150
e.EnforceCache.Clear();
5251

53-
TestEnforce(e, "alice", "data1", "read", false);
54-
TestEnforce(e, "alice", "data1", "write", false);
55-
TestEnforce(e, "alice", "data2", "read", false);
56-
TestEnforce(e, "alice", "data2", "write", false);
52+
Assert.False(e.Enforce("alice", "data1", "read"));
53+
Assert.False(e.Enforce("alice", "data1", "write"));
54+
Assert.False(e.Enforce("alice", "data2", "read"));
55+
Assert.False(e.Enforce("alice", "data2", "write"));
5756
}
5857

5958
[Fact]
@@ -69,18 +68,18 @@ public void TestAutoCleanCache()
6968
#endif
7069
e.EnableCache(true);
7170

72-
TestEnforce(e, "alice", "data1", "read", true);
73-
TestEnforce(e, "alice", "data1", "write", false);
74-
TestEnforce(e, "alice", "data2", "read", false);
75-
TestEnforce(e, "alice", "data2", "write", false);
71+
Assert.True(e.Enforce("alice", "data1", "read"));
72+
Assert.False(e.Enforce("alice", "data1", "write"));
73+
Assert.False(e.Enforce("alice", "data2", "read"));
74+
Assert.False(e.Enforce("alice", "data2", "write"));
7675

7776
// The cache is enabled, so even if we remove a policy rule, the decision
7877
// for ("alice", "data1", "read") will still be true, as it uses the cached result.
7978
_ = e.RemovePolicy("alice", "data1", "read");
8079

81-
TestEnforce(e, "alice", "data1", "read", false);
82-
TestEnforce(e, "alice", "data1", "write", false);
83-
TestEnforce(e, "alice", "data2", "read", false);
84-
TestEnforce(e, "alice", "data2", "write", false);
80+
Assert.False(e.Enforce("alice", "data1", "read"));
81+
Assert.False(e.Enforce("alice", "data1", "write"));
82+
Assert.False(e.Enforce("alice", "data2", "read"));
83+
Assert.False(e.Enforce("alice", "data2", "write"));
8584
}
8685
}

0 commit comments

Comments
 (0)