11using Casbin . Persist . Adapter . EFCore . UnitTest . Extensions ;
22using Casbin . Model ;
3+ using Casbin . Persist . Adapter . EFCore . Entities ;
34using Casbin . Persist . Adapter . EFCore . UnitTest . Fixtures ;
45using Xunit ;
56
67namespace Casbin . Persist . Adapter . EFCore . UnitTest
78{
8- public class SpecialPolicyTest : IClassFixture < ModelProvideFixture > , IClassFixture < DbContextProviderFixture >
9+ public class SpecialPolicyTest : TestUtil , IClassFixture < ModelProvideFixture > ,
10+ IClassFixture < DbContextProviderFixture >
911 {
1012 private readonly ModelProvideFixture _modelProvideFixture ;
1113 private readonly DbContextProviderFixture _dbContextProviderFixture ;
1214
13- public SpecialPolicyTest ( ModelProvideFixture modelProvideFixture , DbContextProviderFixture dbContextProviderFixture )
15+ public SpecialPolicyTest ( ModelProvideFixture modelProvideFixture ,
16+ DbContextProviderFixture dbContextProviderFixture )
1417 {
1518 _modelProvideFixture = modelProvideFixture ;
1619 _dbContextProviderFixture = dbContextProviderFixture ;
@@ -22,33 +25,98 @@ public void TestCommaPolicy()
2225 var context = _dbContextProviderFixture . GetContext < int > ( "CommaPolicy" ) ;
2326 context . Clear ( ) ;
2427 var adapter = new EFCoreAdapter < int > ( context ) ;
25- var enforcer = new Enforcer ( DefaultModel . CreateFromText ( @"
26- [request_definition]
27- r = _
28+ var enforcer = new Enforcer ( DefaultModel . CreateFromText (
29+ """
30+ [request_definition]
31+ r = _
32+
33+ [policy_definition]
34+ p = rule, a1, a2
35+
36+ [policy_effect]
37+ e = some(where (p.eft == allow))
38+
39+ [matchers]
40+ m = eval(p.rule)
41+ """
42+ ) , adapter ) ;
43+ enforcer . AddFunction ( "equal" , ( a1 , a2 ) => a1 == a2 ) ;
2844
29- [policy_definition]
30- p = rule, a1, a2
31-
32- [policy_effect]
33- e = some(where (p.eft == allow))
34-
35- [matchers]
36- m = eval(p.rule)
37- " ) , adapter ) ;
38- enforcer . AddFunction ( "equal" , ( a1 , a2 ) => a1 == a2 ) ;
39-
4045 enforcer . AddPolicy ( "equal(p.a1, p.a2)" , "a1" , "a1" ) ;
4146 Assert . True ( enforcer . Enforce ( "_" ) ) ;
42-
47+
4348 enforcer . LoadPolicy ( ) ;
4449 Assert . True ( enforcer . Enforce ( "_" ) ) ;
45-
50+
4651 enforcer . RemovePolicy ( "equal(p.a1, p.a2)" , "a1" , "a1" ) ;
4752 enforcer . AddPolicy ( "equal(p.a1, p.a2)" , "a1" , "a2" ) ;
4853 Assert . False ( enforcer . Enforce ( "_" ) ) ;
49-
54+
5055 enforcer . LoadPolicy ( ) ;
5156 Assert . False ( enforcer . Enforce ( "_" ) ) ;
5257 }
58+
59+ [ Fact ]
60+ public void TestUnexpectedPolicy ( )
61+ {
62+ var context = _dbContextProviderFixture . GetContext < int > ( "UnexpectedPolicy" ) ;
63+ context . Clear ( ) ;
64+ context . Policies . Add ( new EFCorePersistPolicy < int > ( )
65+ {
66+ Type = "p" ,
67+ Value1 = "a1" ,
68+ Value2 = "a2" ,
69+ Value3 = null ,
70+ } ) ;
71+ context . Policies . Add ( new EFCorePersistPolicy < int > ( )
72+ {
73+ Type = "p" ,
74+ Value1 = "a1" ,
75+ Value2 = "a2" ,
76+ Value3 = "a3" ,
77+ } ) ;
78+ context . Policies . Add ( new EFCorePersistPolicy < int > ( )
79+ {
80+ Type = "p" ,
81+ Value1 = "a1" ,
82+ Value2 = "a2" ,
83+ Value3 = "a3" ,
84+ Value4 = "a4" ,
85+ } ) ;
86+ context . Policies . Add ( new EFCorePersistPolicy < int > ( )
87+ {
88+ Type = "p" ,
89+ Value1 = "b1" ,
90+ Value2 = "b2" ,
91+ Value3 = "b3" ,
92+ Value4 = "b4" ,
93+ } ) ;
94+ context . SaveChanges ( ) ;
95+
96+ var adapter = new EFCoreAdapter < int > ( context ) ;
97+ var enforcer = new Enforcer ( DefaultModel . CreateFromText (
98+ """
99+ [request_definition]
100+ r = _
101+
102+ [policy_definition]
103+ p = a1, a2, a3
104+
105+ [policy_effect]
106+ e = some(where (p.eft == allow))
107+
108+ [matchers]
109+ m = true
110+ """ ) , adapter ) ;
111+
112+ enforcer . LoadPolicy ( ) ;
113+ var policies = enforcer . GetPolicy ( ) ;
114+
115+ TestGetPolicy ( enforcer , AsList (
116+ AsList ( "a1" , "a2" , "" ) ,
117+ AsList ( "a1" , "a2" , "a3" ) ,
118+ AsList ( "b1" , "b2" , "b3" )
119+ ) ) ;
120+ }
53121 }
54122}
0 commit comments