1-
2- import XCTest
1+ import Testing
32import Casbin
4- final class RoleTests : XCTestCase {
3+ @Suite ( " Role Manager Tests " )
4+ struct RoleTests {
55 struct Params {
66 let name1 : String
77 let name2 : String
88 }
9+ @Test ( " Role hierarchy management " )
910 func testRole( ) {
1011 let rm = DefaultRoleManager . init ( maxHierarchyLevel: 3 )
1112
@@ -19,50 +20,51 @@ final class RoleTests: XCTestCase {
1920 rm. addLink ( name1: p. name1, name2: p. name2, domain: nil )
2021 }
2122 params. forEach { p in
22- XCTAssertTrue ( rm. hasLink ( name1: p. name1, name2: p. name2, domain: nil ) )
23+ #expect ( rm. hasLink ( name1: p. name1, name2: p. name2, domain: nil ) )
2324 }
24- XCTAssertFalse ( rm. hasLink ( name1: " u1 " , name2: " g2 " , domain: nil ) )
25- XCTAssertFalse ( rm. hasLink ( name1: " u2 " , name2: " g2 " , domain: nil ) )
26- XCTAssertFalse ( rm. hasLink ( name1: " u3 " , name2: " g1 " , domain: nil ) )
27- XCTAssertFalse ( rm. hasLink ( name1: " u3 " , name2: " g3 " , domain: nil ) )
28- XCTAssertFalse ( rm. hasLink ( name1: " u4 " , name2: " g1 " , domain: nil ) )
25+ #expect ( ! rm. hasLink ( name1: " u1 " , name2: " g2 " , domain: nil ) )
26+ #expect ( ! rm. hasLink ( name1: " u2 " , name2: " g2 " , domain: nil ) )
27+ #expect ( ! rm. hasLink ( name1: " u3 " , name2: " g1 " , domain: nil ) )
28+ #expect ( ! rm. hasLink ( name1: " u3 " , name2: " g3 " , domain: nil ) )
29+ #expect ( ! rm. hasLink ( name1: " u4 " , name2: " g1 " , domain: nil ) )
2930
3031 // test getROles
3132
32- XCTAssertEqual ( [ " g1 " ] , rm. getRoles ( name: " u1 " , domain: nil ) )
33- XCTAssertEqual ( [ " g1 " ] , rm. getRoles ( name: " u2 " , domain: nil ) )
34- XCTAssertEqual ( [ " g2 " ] , rm. getRoles ( name: " u3 " , domain: nil ) )
35- XCTAssertEqual ( [ " g2 " , " g3 " ] , rm. getRoles ( name: " u4 " , domain: nil ) . sorted ( ) )
36- XCTAssertEqual ( [ " g3 " ] , rm. getRoles ( name: " g1 " , domain: nil ) )
37- XCTAssertEqual ( [ ] , rm. getRoles ( name: " g2 " , domain: nil ) )
38- XCTAssertEqual ( [ ] , rm. getRoles ( name: " g3 " , domain: nil ) )
33+ #expect ( [ " g1 " ] == rm. getRoles ( name: " u1 " , domain: nil ) )
34+ #expect ( [ " g1 " ] == rm. getRoles ( name: " u2 " , domain: nil ) )
35+ #expect ( [ " g2 " ] == rm. getRoles ( name: " u3 " , domain: nil ) )
36+ #expect ( [ " g2 " , " g3 " ] == rm. getRoles ( name: " u4 " , domain: nil ) . sorted ( ) )
37+ #expect ( [ " g3 " ] == rm. getRoles ( name: " g1 " , domain: nil ) )
38+ #expect ( [ ] == rm. getRoles ( name: " g2 " , domain: nil ) )
39+ #expect ( [ ] == rm. getRoles ( name: " g3 " , domain: nil ) )
3940
4041 // test deleteLink
4142 _ = rm. deleteLink ( name1: " g1 " , name2: " g3 " , domain: nil )
4243 _ = rm. deleteLink ( name1: " u4 " , name2: " g2 " , domain: nil )
4344
44- XCTAssertTrue ( rm. hasLink ( name1: " u1 " , name2: " g1 " , domain: nil ) )
45- XCTAssertTrue ( rm. hasLink ( name1: " u2 " , name2: " g1 " , domain: nil ) )
46- XCTAssertTrue ( rm. hasLink ( name1: " u3 " , name2: " g2 " , domain: nil ) )
47- XCTAssertTrue ( rm. hasLink ( name1: " u4 " , name2: " g3 " , domain: nil ) )
48- XCTAssertFalse ( rm. hasLink ( name1: " u1 " , name2: " g2 " , domain: nil ) )
49- XCTAssertFalse ( rm. hasLink ( name1: " u1 " , name2: " g3 " , domain: nil ) )
50- XCTAssertFalse ( rm. hasLink ( name1: " u2 " , name2: " g2 " , domain: nil ) )
51- XCTAssertFalse ( rm. hasLink ( name1: " u2 " , name2: " g3 " , domain: nil ) )
52- XCTAssertFalse ( rm. hasLink ( name1: " u3 " , name2: " g1 " , domain: nil ) )
53- XCTAssertFalse ( rm. hasLink ( name1: " u3 " , name2: " g3 " , domain: nil ) )
54- XCTAssertFalse ( rm. hasLink ( name1: " u4 " , name2: " g1 " , domain: nil ) )
55- XCTAssertFalse ( rm. hasLink ( name1: " u4 " , name2: " g2 " , domain: nil ) )
56- XCTAssertEqual ( [ " g1 " ] , rm. getRoles ( name: " u1 " , domain: nil ) )
57- XCTAssertEqual ( [ " g1 " ] , rm. getRoles ( name: " u2 " , domain: nil ) )
58- XCTAssertEqual ( [ " g2 " ] , rm. getRoles ( name: " u3 " , domain: nil ) )
59- XCTAssertEqual ( [ " g3 " ] , rm. getRoles ( name: " u4 " , domain: nil ) )
60- XCTAssertEqual ( [ ] , rm. getRoles ( name: " g1 " , domain: nil ) )
61- XCTAssertEqual ( [ ] , rm. getRoles ( name: " g2 " , domain: nil ) )
62- XCTAssertEqual ( [ ] , rm. getRoles ( name: " g3 " , domain: nil ) )
45+ #expect ( rm. hasLink ( name1: " u1 " , name2: " g1 " , domain: nil ) )
46+ #expect ( rm. hasLink ( name1: " u2 " , name2: " g1 " , domain: nil ) )
47+ #expect ( rm. hasLink ( name1: " u3 " , name2: " g2 " , domain: nil ) )
48+ #expect ( rm. hasLink ( name1: " u4 " , name2: " g3 " , domain: nil ) )
49+ #expect ( ! rm. hasLink ( name1: " u1 " , name2: " g2 " , domain: nil ) )
50+ #expect ( ! rm. hasLink ( name1: " u1 " , name2: " g3 " , domain: nil ) )
51+ #expect ( ! rm. hasLink ( name1: " u2 " , name2: " g2 " , domain: nil ) )
52+ #expect ( ! rm. hasLink ( name1: " u2 " , name2: " g3 " , domain: nil ) )
53+ #expect ( ! rm. hasLink ( name1: " u3 " , name2: " g1 " , domain: nil ) )
54+ #expect ( ! rm. hasLink ( name1: " u3 " , name2: " g3 " , domain: nil ) )
55+ #expect ( ! rm. hasLink ( name1: " u4 " , name2: " g1 " , domain: nil ) )
56+ #expect ( ! rm. hasLink ( name1: " u4 " , name2: " g2 " , domain: nil ) )
57+ #expect ( [ " g1 " ] == rm. getRoles ( name: " u1 " , domain: nil ) )
58+ #expect ( [ " g1 " ] == rm. getRoles ( name: " u2 " , domain: nil ) )
59+ #expect ( [ " g2 " ] == rm. getRoles ( name: " u3 " , domain: nil ) )
60+ #expect ( [ " g3 " ] == rm. getRoles ( name: " u4 " , domain: nil ) )
61+ #expect ( [ ] == rm. getRoles ( name: " g1 " , domain: nil ) )
62+ #expect ( [ ] == rm. getRoles ( name: " g2 " , domain: nil ) )
63+ #expect ( [ ] == rm. getRoles ( name: " g3 " , domain: nil ) )
6364
6465 }
6566
67+ @Test ( " Clear all roles " )
6668 func testClear( ) {
6769 let rm = DefaultRoleManager . init ( maxHierarchyLevel: 3 )
6870
@@ -76,20 +78,21 @@ final class RoleTests: XCTestCase {
7678 rm. addLink ( name1: p. name1, name2: p. name2, domain: nil )
7779 }
7880 rm. clear ( )
79- XCTAssertFalse ( rm. hasLink ( name1: " u1 " , name2: " g1 " , domain: nil ) )
80- XCTAssertFalse ( rm. hasLink ( name1: " u1 " , name2: " g2 " , domain: nil ) )
81- XCTAssertFalse ( rm. hasLink ( name1: " u1 " , name2: " g3 " , domain: nil ) )
82- XCTAssertFalse ( rm. hasLink ( name1: " u2 " , name2: " g1 " , domain: nil ) )
83- XCTAssertFalse ( rm. hasLink ( name1: " u2 " , name2: " g2 " , domain: nil ) )
84- XCTAssertFalse ( rm. hasLink ( name1: " u2 " , name2: " g3 " , domain: nil ) )
85- XCTAssertFalse ( rm. hasLink ( name1: " u3 " , name2: " g1 " , domain: nil ) )
86- XCTAssertFalse ( rm. hasLink ( name1: " u3 " , name2: " g2 " , domain: nil ) )
87- XCTAssertFalse ( rm. hasLink ( name1: " u3 " , name2: " g3 " , domain: nil ) )
88- XCTAssertFalse ( rm. hasLink ( name1: " u4 " , name2: " g1 " , domain: nil ) )
89- XCTAssertFalse ( rm. hasLink ( name1: " u4 " , name2: " g2 " , domain: nil ) )
90- XCTAssertFalse ( rm. hasLink ( name1: " u4 " , name2: " g3 " , domain: nil ) )
81+ #expect ( ! rm. hasLink ( name1: " u1 " , name2: " g1 " , domain: nil ) )
82+ #expect ( ! rm. hasLink ( name1: " u1 " , name2: " g2 " , domain: nil ) )
83+ #expect ( ! rm. hasLink ( name1: " u1 " , name2: " g3 " , domain: nil ) )
84+ #expect ( ! rm. hasLink ( name1: " u2 " , name2: " g1 " , domain: nil ) )
85+ #expect ( ! rm. hasLink ( name1: " u2 " , name2: " g2 " , domain: nil ) )
86+ #expect ( ! rm. hasLink ( name1: " u2 " , name2: " g3 " , domain: nil ) )
87+ #expect ( ! rm. hasLink ( name1: " u3 " , name2: " g1 " , domain: nil ) )
88+ #expect ( ! rm. hasLink ( name1: " u3 " , name2: " g2 " , domain: nil ) )
89+ #expect ( ! rm. hasLink ( name1: " u3 " , name2: " g3 " , domain: nil ) )
90+ #expect ( ! rm. hasLink ( name1: " u4 " , name2: " g1 " , domain: nil ) )
91+ #expect ( ! rm. hasLink ( name1: " u4 " , name2: " g2 " , domain: nil ) )
92+ #expect ( ! rm. hasLink ( name1: " u4 " , name2: " g3 " , domain: nil ) )
9193 }
9294
95+ @Test ( " Domain-specific roles " )
9396 func testDomainRole( ) {
9497 let rm = DefaultRoleManager . init ( maxHierarchyLevel: 3 )
9598 rm. addLink ( name1: " u1 " , name2: " g1 " , domain: " domain1 " )
@@ -99,50 +102,51 @@ final class RoleTests: XCTestCase {
99102 rm. addLink ( name1: " u4 " , name2: " admin " , domain: " domain1 " )
100103 rm. addLink ( name1: " g1 " , name2: " admin " , domain: " domain1 " )
101104
102- XCTAssertEqual ( true , rm. hasLink ( name1: " u1 " , name2: " g1 " , domain: " domain1 " ) )
103- XCTAssertEqual ( false , rm. hasLink ( name1: " u1 " , name2: " g1 " , domain: " domain2 " ) )
104- XCTAssertEqual ( true , rm. hasLink ( name1: " u1 " , name2: " admin " , domain: " domain1 " ) )
105- XCTAssertEqual ( false , rm. hasLink ( name1: " u1 " , name2: " admin " , domain: " domain2 " ) )
105+ #expect ( rm. hasLink ( name1: " u1 " , name2: " g1 " , domain: " domain1 " ) )
106+ #expect ( ! rm. hasLink ( name1: " u1 " , name2: " g1 " , domain: " domain2 " ) )
107+ #expect ( rm. hasLink ( name1: " u1 " , name2: " admin " , domain: " domain1 " ) )
108+ #expect ( ! rm. hasLink ( name1: " u1 " , name2: " admin " , domain: " domain2 " ) )
106109
107- XCTAssertEqual ( true , rm. hasLink ( name1: " u2 " , name2: " g1 " , domain: " domain1 " ) )
108- XCTAssertEqual ( false , rm. hasLink ( name1: " u2 " , name2: " g1 " , domain: " domain2 " ) )
109- XCTAssertEqual ( true , rm. hasLink ( name1: " u2 " , name2: " admin " , domain: " domain1 " ) )
110- XCTAssertEqual ( false , rm. hasLink ( name1: " u2 " , name2: " admin " , domain: " domain2 " ) )
110+ #expect ( rm. hasLink ( name1: " u2 " , name2: " g1 " , domain: " domain1 " ) )
111+ #expect ( ! rm. hasLink ( name1: " u2 " , name2: " g1 " , domain: " domain2 " ) )
112+ #expect ( rm. hasLink ( name1: " u2 " , name2: " admin " , domain: " domain1 " ) )
113+ #expect ( ! rm. hasLink ( name1: " u2 " , name2: " admin " , domain: " domain2 " ) )
111114
112- XCTAssertEqual ( false , rm. hasLink ( name1: " u3 " , name2: " g1 " , domain: " domain1 " ) )
113- XCTAssertEqual ( false , rm. hasLink ( name1: " u3 " , name2: " g1 " , domain: " domain2 " ) )
114- XCTAssertEqual ( false , rm. hasLink ( name1: " u3 " , name2: " admin " , domain: " domain1 " ) )
115- XCTAssertEqual ( true , rm. hasLink ( name1: " u3 " , name2: " admin " , domain: " domain2 " ) )
115+ #expect ( ! rm. hasLink ( name1: " u3 " , name2: " g1 " , domain: " domain1 " ) )
116+ #expect ( ! rm. hasLink ( name1: " u3 " , name2: " g1 " , domain: " domain2 " ) )
117+ #expect ( ! rm. hasLink ( name1: " u3 " , name2: " admin " , domain: " domain1 " ) )
118+ #expect ( rm. hasLink ( name1: " u3 " , name2: " admin " , domain: " domain2 " ) )
116119
117- XCTAssertEqual ( false , rm. hasLink ( name1: " u4 " , name2: " g1 " , domain: " domain1 " ) )
118- XCTAssertEqual ( false , rm. hasLink ( name1: " u4 " , name2: " g1 " , domain: " domain2 " ) )
119- XCTAssertEqual ( true , rm. hasLink ( name1: " u4 " , name2: " admin " , domain: " domain1 " ) )
120- XCTAssertEqual ( true , rm. hasLink ( name1: " u4 " , name2: " admin " , domain: " domain2 " ) )
120+ #expect ( ! rm. hasLink ( name1: " u4 " , name2: " g1 " , domain: " domain1 " ) )
121+ #expect ( ! rm. hasLink ( name1: " u4 " , name2: " g1 " , domain: " domain2 " ) )
122+ #expect ( rm. hasLink ( name1: " u4 " , name2: " admin " , domain: " domain1 " ) )
123+ #expect ( rm. hasLink ( name1: " u4 " , name2: " admin " , domain: " domain2 " ) )
121124
122125 _ = rm. deleteLink ( name1: " g1 " , name2: " admin " , domain: " domain1 " )
123126 _ = rm. deleteLink ( name1: " u4 " , name2: " admin " , domain: " domain2 " )
124127
125- XCTAssertEqual ( true , rm. hasLink ( name1: " u1 " , name2: " g1 " , domain: " domain1 " ) )
126- XCTAssertEqual ( false , rm. hasLink ( name1: " u1 " , name2: " g1 " , domain: " domain2 " ) )
127- XCTAssertEqual ( false , rm. hasLink ( name1: " u1 " , name2: " admin " , domain: " domain1 " ) )
128- XCTAssertEqual ( false , rm. hasLink ( name1: " u1 " , name2: " admin " , domain: " domain2 " ) )
129-
130- XCTAssertEqual ( true , rm. hasLink ( name1: " u2 " , name2: " g1 " , domain: " domain1 " ) )
131- XCTAssertEqual ( false , rm. hasLink ( name1: " u2 " , name2: " g1 " , domain: " domain2 " ) )
132- XCTAssertEqual ( false , rm. hasLink ( name1: " u2 " , name2: " admin " , domain: " domain1 " ) )
133- XCTAssertEqual ( false , rm. hasLink ( name1: " u2 " , name2: " admin " , domain: " domain2 " ) )
134-
135- XCTAssertEqual ( false , rm. hasLink ( name1: " u3 " , name2: " g1 " , domain: " domain1 " ) )
136- XCTAssertEqual ( false , rm. hasLink ( name1: " u3 " , name2: " g1 " , domain: " domain2 " ) )
137- XCTAssertEqual ( false , rm. hasLink ( name1: " u3 " , name2: " admin " , domain: " domain1 " ) )
138- XCTAssertEqual ( true , rm. hasLink ( name1: " u3 " , name2: " admin " , domain: " domain2 " ) )
139-
140- XCTAssertEqual ( false , rm. hasLink ( name1: " u4 " , name2: " g1 " , domain: " domain1 " ) )
141- XCTAssertEqual ( false , rm. hasLink ( name1: " u4 " , name2: " g1 " , domain: " domain2 " ) )
142- XCTAssertEqual ( true , rm. hasLink ( name1: " u4 " , name2: " admin " , domain: " domain1 " ) )
143- XCTAssertEqual ( false , rm. hasLink ( name1: " u4 " , name2: " admin " , domain: " domain2 " ) )
128+ #expect ( rm. hasLink ( name1: " u1 " , name2: " g1 " , domain: " domain1 " ) )
129+ #expect ( ! rm. hasLink ( name1: " u1 " , name2: " g1 " , domain: " domain2 " ) )
130+ #expect ( ! rm. hasLink ( name1: " u1 " , name2: " admin " , domain: " domain1 " ) )
131+ #expect ( ! rm. hasLink ( name1: " u1 " , name2: " admin " , domain: " domain2 " ) )
132+
133+ #expect ( rm. hasLink ( name1: " u2 " , name2: " g1 " , domain: " domain1 " ) )
134+ #expect ( ! rm. hasLink ( name1: " u2 " , name2: " g1 " , domain: " domain2 " ) )
135+ #expect ( ! rm. hasLink ( name1: " u2 " , name2: " admin " , domain: " domain1 " ) )
136+ #expect ( ! rm. hasLink ( name1: " u2 " , name2: " admin " , domain: " domain2 " ) )
137+
138+ #expect ( ! rm. hasLink ( name1: " u3 " , name2: " g1 " , domain: " domain1 " ) )
139+ #expect ( ! rm. hasLink ( name1: " u3 " , name2: " g1 " , domain: " domain2 " ) )
140+ #expect ( ! rm. hasLink ( name1: " u3 " , name2: " admin " , domain: " domain1 " ) )
141+ #expect ( rm. hasLink ( name1: " u3 " , name2: " admin " , domain: " domain2 " ) )
142+
143+ #expect ( ! rm. hasLink ( name1: " u4 " , name2: " g1 " , domain: " domain1 " ) )
144+ #expect ( ! rm. hasLink ( name1: " u4 " , name2: " g1 " , domain: " domain2 " ) )
145+ #expect ( rm. hasLink ( name1: " u4 " , name2: " admin " , domain: " domain1 " ) )
146+ #expect ( ! rm. hasLink ( name1: " u4 " , name2: " admin " , domain: " domain2 " ) )
144147 }
145148
149+ @Test ( " Get users for a role " )
146150 func testUsers( ) {
147151 let rm = DefaultRoleManager . init ( maxHierarchyLevel: 3 )
148152 rm. addLink ( name1: " u1 " , name2: " g1 " , domain: " domain1 " )
@@ -151,9 +155,9 @@ final class RoleTests: XCTestCase {
151155 rm. addLink ( name1: " u4 " , name2: " g2 " , domain: " domain2 " )
152156 rm. addLink ( name1: " u5 " , name2: " g3 " , domain: nil )
153157
154- XCTAssertEqual ( [ " u1 " , " u2 " ] , rm. getUsers ( name: " g1 " , domain: " domain1 " ) . sorted ( ) )
155- XCTAssertEqual ( [ " u3 " , " u4 " ] , rm. getUsers ( name: " g2 " , domain: " domain2 " ) . sorted ( ) )
156- XCTAssertEqual ( [ " u5 " ] , rm. getUsers ( name: " g3 " , domain: nil ) )
158+ #expect ( [ " u1 " , " u2 " ] == rm. getUsers ( name: " g1 " , domain: " domain1 " ) . sorted ( ) )
159+ #expect ( [ " u3 " , " u4 " ] == rm. getUsers ( name: " g2 " , domain: " domain2 " ) . sorted ( ) )
160+ #expect ( [ " u5 " ] == rm. getUsers ( name: " g3 " , domain: nil ) )
157161 }
158162
159163}
0 commit comments