@@ -23,10 +23,10 @@ namespace test_management_api
2323 std::string policy = " ../../examples/rbac_policy.csv" ;
2424 Enforcer e = Enforcer (model, policy);
2525
26- Assert::IsTrue (ArrayEquals (std::vector<std::string> { " alice" , " bob" , " data2_admin" }, e.GetAllSubjects ()));
27- Assert::IsTrue (ArrayEquals (std::vector<std::string> { " data1" , " data2" }, e.GetAllObjects ()));
28- Assert::IsTrue (ArrayEquals (std::vector<std::string> { " read" , " write" }, e.GetAllActions ()));
29- Assert::IsTrue (ArrayEquals (std::vector<std::string> { " data2_admin" }, e.GetAllRoles ()));
26+ Assert::IsTrue (ArrayEquals ({ " alice" , " bob" , " data2_admin" }, e.GetAllSubjects ()));
27+ Assert::IsTrue (ArrayEquals ({ " data1" , " data2" }, e.GetAllObjects ()));
28+ Assert::IsTrue (ArrayEquals ({ " read" , " write" }, e.GetAllActions ()));
29+ Assert::IsTrue (ArrayEquals ({ " data2_admin" }, e.GetAllRoles ()));
3030 }
3131
3232 void TestGetPolicy (Enforcer e, std::vector<std::vector<std::string>> res) {
@@ -89,35 +89,35 @@ namespace test_management_api
8989 { " data2_admin" , " data2" , " read" },
9090 { " data2_admin" , " data2" , " write" }});
9191
92- TestGetFilteredPolicy (e, 0 , std::vector<std::vector<std::string>> { {" alice" , " data1" , " read" } }, std::vector<std::string> {" alice" });
93- TestGetFilteredPolicy (e, 0 , std::vector<std::vector<std::string>> { {" bob" , " data2" , " write" }}, std::vector<std::string> {" bob" });
94- TestGetFilteredPolicy (e, 0 , std::vector<std::vector<std::string>> { {" data2_admin" , " data2" , " read" }, { " data2_admin" , " data2" , " write" }}, std::vector<std::string> {" data2_admin" });
95- TestGetFilteredPolicy (e, 1 , std::vector<std::vector<std::string>> { {" alice" , " data1" , " read" }}, std::vector<std::string> {" data1" });
96- TestGetFilteredPolicy (e, 1 , std::vector<std::vector<std::string>> { {" bob" , " data2" , " write" }, { " data2_admin" , " data2" , " read" }, { " data2_admin" , " data2" , " write" }}, std::vector<std::string> {" data2" });
97- TestGetFilteredPolicy (e, 2 , std::vector<std::vector<std::string>> { {" alice" , " data1" , " read" }, { " data2_admin" , " data2" , " read" }}, std::vector<std::string> {" read" });
98- TestGetFilteredPolicy (e, 2 , std::vector<std::vector<std::string>> { {" bob" , " data2" , " write" }, { " data2_admin" , " data2" , " write" }}, std::vector<std::string> {" write" });
92+ TestGetFilteredPolicy (e, 0 , { {" alice" , " data1" , " read" } }, {" alice" });
93+ TestGetFilteredPolicy (e, 0 , { {" bob" , " data2" , " write" }}, {" bob" });
94+ TestGetFilteredPolicy (e, 0 , { {" data2_admin" , " data2" , " read" }, { " data2_admin" , " data2" , " write" }}, {" data2_admin" });
95+ TestGetFilteredPolicy (e, 1 , { {" alice" , " data1" , " read" }}, {" data1" });
96+ TestGetFilteredPolicy (e, 1 , { {" bob" , " data2" , " write" }, { " data2_admin" , " data2" , " read" }, { " data2_admin" , " data2" , " write" }}, {" data2" });
97+ TestGetFilteredPolicy (e, 2 , { {" alice" , " data1" , " read" }, { " data2_admin" , " data2" , " read" }}, {" read" });
98+ TestGetFilteredPolicy (e, 2 , { {" bob" , " data2" , " write" }, { " data2_admin" , " data2" , " write" }}, {" write" });
9999
100- TestGetFilteredPolicy (e, 0 , std::vector<std::vector<std::string>> { {" data2_admin" , " data2" , " read" }, { " data2_admin" , " data2" , " write" }}, std::vector<std::string> {" data2_admin" , " data2" });
100+ TestGetFilteredPolicy (e, 0 , { {" data2_admin" , " data2" , " read" }, { " data2_admin" , " data2" , " write" }}, {" data2_admin" , " data2" });
101101 // Note: "" (empty string) in fieldValues means matching all values.
102- TestGetFilteredPolicy (e, 0 , std::vector<std::vector<std::string>> { {" data2_admin" , " data2" , " read" }}, std::vector<std::string> {" data2_admin" , " " , " read" });
103- TestGetFilteredPolicy (e, 1 , std::vector<std::vector<std::string>> { {" bob" , " data2" , " write" }, { " data2_admin" , " data2" , " write" }}, std::vector<std::string> {" data2" , " write" });
102+ TestGetFilteredPolicy (e, 0 , { {" data2_admin" , " data2" , " read" }}, {" data2_admin" , " " , " read" });
103+ TestGetFilteredPolicy (e, 1 , { {" bob" , " data2" , " write" }, { " data2_admin" , " data2" , " write" }}, {" data2" , " write" });
104104
105- TestHasPolicy (e, std::vector<std::string> {" alice" , " data1" , " read" }, true );
106- TestHasPolicy (e, std::vector<std::string> {" bob" , " data2" , " write" }, true );
107- TestHasPolicy (e, std::vector<std::string> {" alice" , " data2" , " read" }, false );
108- TestHasPolicy (e, std::vector<std::string> {" bob" , " data3" , " write" }, false );
105+ TestHasPolicy (e, {" alice" , " data1" , " read" }, true );
106+ TestHasPolicy (e, {" bob" , " data2" , " write" }, true );
107+ TestHasPolicy (e, {" alice" , " data2" , " read" }, false );
108+ TestHasPolicy (e, {" bob" , " data3" , " write" }, false );
109109
110110 TestGetGroupingPolicy (e, std::vector<std::vector<std::string>>{ {" alice" , " data2_admin" }});
111111
112- TestGetFilteredGroupingPolicy (e, 0 , std::vector<std::vector<std::string>> {{" alice" , " data2_admin" }}, std::vector<std::string> {" alice" });
113- TestGetFilteredGroupingPolicy (e, 0 , std::vector<std::vector<std::string>> {}, std::vector<std::string> {" bob" });
114- TestGetFilteredGroupingPolicy (e, 1 , std::vector<std::vector<std::string>> {}, std::vector<std::string> {" data1_admin" });
115- TestGetFilteredGroupingPolicy (e, 1 , std::vector<std::vector<std::string>> { {" alice" , " data2_admin" }}, std::vector<std::string> {" data2_admin" });
112+ TestGetFilteredGroupingPolicy (e, 0 , {{" alice" , " data2_admin" }}, {" alice" });
113+ TestGetFilteredGroupingPolicy (e, 0 , {}, {" bob" });
114+ TestGetFilteredGroupingPolicy (e, 1 , {}, {" data1_admin" });
115+ TestGetFilteredGroupingPolicy (e, 1 , { {" alice" , " data2_admin" }}, {" data2_admin" });
116116 // Note: "" (empty string) in fieldValues means matching all values.
117- TestGetFilteredGroupingPolicy (e, 0 , std::vector<std::vector<std::string>> { {" alice" , " data2_admin" }}, std::vector<std::string> {" " , " data2_admin" });
117+ TestGetFilteredGroupingPolicy (e, 0 , { {" alice" , " data2_admin" }}, {" " , " data2_admin" });
118118
119- TestHasGroupingPolicy (e, std::vector<std::string> {" alice" , " data2_admin" }, true );
120- TestHasGroupingPolicy (e, std::vector<std::string> {" bob" , " data2_admin" }, false );
119+ TestHasGroupingPolicy (e, {" alice" , " data2_admin" }, true );
120+ TestHasGroupingPolicy (e, {" bob" , " data2_admin" }, false );
121121 }
122122
123123
@@ -127,19 +127,20 @@ namespace test_management_api
127127 std::shared_ptr<Adapter> adapter = std::shared_ptr<Adapter>(new BatchFileAdapter (policy));
128128 Enforcer e = Enforcer (model, adapter);
129129
130- TestGetPolicy (e, std::vector<std::vector<std::string>> {
130+ TestGetPolicy (e, {
131131 {" alice" , " data1" , " read" },
132- { " bob" , " data2" , " write" },
133- { " data2_admin" , " data2" , " read" },
134- { " data2_admin" , " data2" , " write" }});
132+ {" bob" , " data2" , " write" },
133+ {" data2_admin" , " data2" , " read" },
134+ {" data2_admin" , " data2" , " write" }
135+ });
135136
136- e.RemovePolicy (std::vector<std::string> {" alice" , " data1" , " read" });
137- e.RemovePolicy (std::vector<std::string> {" bob" , " data2" , " write" });
138- e.RemovePolicy (std::vector<std::string> {" alice" , " data1" , " read" });
139- e.AddPolicy (std::vector<std::string> {" eve" , " data3" , " read" });
140- e.AddPolicy (std::vector<std::string> {" eve" , " data3" , " read" });
137+ e.RemovePolicy ({" alice" , " data1" , " read" });
138+ e.RemovePolicy ({" bob" , " data2" , " write" });
139+ e.RemovePolicy ({" alice" , " data1" , " read" });
140+ e.AddPolicy ({" eve" , " data3" , " read" });
141+ e.AddPolicy ({" eve" , " data3" , " read" });
141142
142- std::vector<std::vector<std::string>>rules{
143+ std::vector<std::vector<std::string>> rules {
143144 {" jack" , " data4" , " read" },
144145 {" katy" , " data4" , " write" },
145146 {" leyo" , " data4" , " read" },
@@ -149,91 +150,113 @@ namespace test_management_api
149150 e.AddPolicies (rules);
150151 e.AddPolicies (rules);
151152
152- TestGetPolicy (e, std::vector<std::vector<std::string>> {
153+ TestGetPolicy (e, {
153154 {" data2_admin" , " data2" , " read" },
154155 { " data2_admin" , " data2" , " write" },
155156 { " eve" , " data3" , " read" },
156157 { " jack" , " data4" , " read" },
157158 { " katy" , " data4" , " write" },
158159 { " leyo" , " data4" , " read" },
159- { " ham" , " data4" , " write" }});
160+ { " ham" , " data4" , " write" }
161+ });
160162
161163 e.RemovePolicies (rules);
162164 e.RemovePolicies (rules);
163165
164- std::vector<std::string>named_policy{ " eve" , " data3" , " read" };
166+ std::vector<std::string> named_policy{ " eve" , " data3" , " read" };
165167 e.RemoveNamedPolicy (" p" , named_policy);
166168 e.AddNamedPolicy (" p" , named_policy);
167169
168- TestGetPolicy (e, std::vector<std::vector<std::string>> {
170+ TestGetPolicy (e, {
169171 {" data2_admin" , " data2" , " read" },
170172 { " data2_admin" , " data2" , " write" },
171- { " eve" , " data3" , " read" }});
173+ { " eve" , " data3" , " read" }
174+ });
172175
173- e.RemoveFilteredPolicy (1 , std::vector<std::string> {" data2" });
176+ e.RemoveFilteredPolicy (1 , {" data2" });
174177
175- TestGetPolicy (e, std::vector<std::vector<std::string>>{ {" eve" , " data3" , " read" }});
178+ TestGetPolicy (e, { {" eve" , " data3" , " read" }});
179+
180+ e.UpdatePolicy ({" eve" , " data3" , " read" }, {" eve" , " data3" , " write" });
181+ TestGetPolicy (e, {{" eve" , " data3" , " write" }});
182+
183+ e.AddPolicies (rules);
184+ e.UpdatePolicies ({
185+ {" eve" , " data3" , " write" },
186+ {" leyo" , " data4" , " read" },
187+ {" katy" , " data4" , " write" }
188+ }, {
189+ {" eve" , " data3" , " read" },
190+ {" leyo" , " data4" , " write" },
191+ {" katy" , " data1" , " write" }
192+ });
193+
194+ TestGetPolicy (e, {
195+ {" eve" , " data3" , " read" },
196+ {" leyo" , " data4" , " write" },
197+ {" katy" , " data1" , " write" }
198+ });
176199 }
177200
178201 TEST_METHOD (TestModifyGroupingPolicyAPI) {
179202 std::string model = " ../../examples/rbac_model.conf" ;
180203 std::string policy = " ../../examples/rbac_policy.csv" ;
181- std::shared_ptr<Adapter> adapter = std::shared_ptr<Adapter>( new BatchFileAdapter ( policy) );
204+ std::shared_ptr<Adapter> adapter = std::make_shared<BatchFileAdapter>( policy);
182205 Enforcer e = Enforcer (model, adapter);
183206
184- Assert::IsTrue (ArrayEquals (std::vector<std::string> {" data2_admin" }, e.GetRolesForUser (" alice" )));
185- Assert::IsTrue (ArrayEquals (std::vector<std::string> {}, e.GetRolesForUser (" bob" )));
186- Assert::IsTrue (ArrayEquals (std::vector<std::string> {}, e.GetRolesForUser (" eve" )));
187- Assert::IsTrue (ArrayEquals (std::vector<std::string> {}, e.GetRolesForUser (" non_exist" )));
207+ Assert::IsTrue (ArrayEquals ({" data2_admin" }, e.GetRolesForUser (" alice" )));
208+ Assert::IsTrue (ArrayEquals ({}, e.GetRolesForUser (" bob" )));
209+ Assert::IsTrue (ArrayEquals ({}, e.GetRolesForUser (" eve" )));
210+ Assert::IsTrue (ArrayEquals ({}, e.GetRolesForUser (" non_exist" )));
188211
189- e.RemoveGroupingPolicy (std::vector<std::string> {" alice" , " data2_admin" });
190- e.AddGroupingPolicy (std::vector<std::string> {" bob" , " data1_admin" });
191- e.AddGroupingPolicy (std::vector<std::string> {" eve" , " data3_admin" });
212+ e.RemoveGroupingPolicy ({" alice" , " data2_admin" });
213+ e.AddGroupingPolicy ({" bob" , " data1_admin" });
214+ e.AddGroupingPolicy ({" eve" , " data3_admin" });
192215
193- std::vector<std::vector<std::string>> grouping_rules{
216+ std::vector<std::vector<std::string>> grouping_rules {
194217 {" ham" , " data4_admin" },
195218 {" jack" , " data5_admin" },
196219 };
197220
198221 e.AddGroupingPolicies (grouping_rules);
199- Assert::IsTrue (ArrayEquals (std::vector<std::string> {" data4_admin" }, e.GetRolesForUser (" ham" )));
200- Assert::IsTrue (ArrayEquals (std::vector<std::string> {" data5_admin" }, e.GetRolesForUser (" jack" )));
222+ Assert::IsTrue (ArrayEquals ({" data4_admin" }, e.GetRolesForUser (" ham" )));
223+ Assert::IsTrue (ArrayEquals ({" data5_admin" }, e.GetRolesForUser (" jack" )));
201224 e.RemoveGroupingPolicies (grouping_rules);
202225
203- Assert::IsTrue (ArrayEquals (std::vector<std::string> {}, e.GetRolesForUser (" alice" )));
226+ Assert::IsTrue (ArrayEquals ({}, e.GetRolesForUser (" alice" )));
204227 std::vector<std::string> named_grouping_policy{ " alice" , " data2_admin" };
205- Assert::IsTrue (ArrayEquals (std::vector<std::string> {}, e.GetRolesForUser (" alice" )));
228+ Assert::IsTrue (ArrayEquals ({}, e.GetRolesForUser (" alice" )));
206229 e.AddNamedGroupingPolicy (" g" , named_grouping_policy);
207- Assert::IsTrue (ArrayEquals (std::vector<std::string> {" data2_admin" }, e.GetRolesForUser (" alice" )));
230+ Assert::IsTrue (ArrayEquals ({" data2_admin" }, e.GetRolesForUser (" alice" )));
208231 e.RemoveNamedGroupingPolicy (" g" , named_grouping_policy);
209232
210233 e.AddNamedGroupingPolicies (" g" , grouping_rules);
211234 e.AddNamedGroupingPolicies (" g" , grouping_rules);
212- Assert::IsTrue (ArrayEquals (std::vector<std::string> {" data4_admin" }, e.GetRolesForUser (" ham" )));
213- Assert::IsTrue (ArrayEquals (std::vector<std::string> {" data5_admin" }, e.GetRolesForUser (" jack" )));
235+ Assert::IsTrue (ArrayEquals ({" data4_admin" }, e.GetRolesForUser (" ham" )));
236+ Assert::IsTrue (ArrayEquals ({" data5_admin" }, e.GetRolesForUser (" jack" )));
214237 e.RemoveNamedGroupingPolicies (" g" , grouping_rules);
215238 e.RemoveNamedGroupingPolicies (" g" , grouping_rules);
216239
217- Assert::IsTrue (ArrayEquals (std::vector<std::string> {}, e.GetRolesForUser (" alice" )));
218- Assert::IsTrue (ArrayEquals (std::vector<std::string> {" data1_admin" }, e.GetRolesForUser (" bob" )));
219- Assert::IsTrue (ArrayEquals (std::vector<std::string> {" data3_admin" }, e.GetRolesForUser (" eve" )));
220- Assert::IsTrue (ArrayEquals (std::vector<std::string> {}, e.GetRolesForUser (" non_exist" )));
240+ Assert::IsTrue (ArrayEquals ({}, e.GetRolesForUser (" alice" )));
241+ Assert::IsTrue (ArrayEquals ({" data1_admin" }, e.GetRolesForUser (" bob" )));
242+ Assert::IsTrue (ArrayEquals ({" data3_admin" }, e.GetRolesForUser (" eve" )));
243+ Assert::IsTrue (ArrayEquals ({}, e.GetRolesForUser (" non_exist" )));
221244
222- Assert::IsTrue (ArrayEquals (std::vector<std::string> {" bob" }, e.GetUsersForRole (" data1_admin" )));
245+ Assert::IsTrue (ArrayEquals ({" bob" }, e.GetUsersForRole (" data1_admin" )));
223246 try {
224- e.GetUsersForRole (" data2_admin" , std::vector<std::string> {});
247+ e.GetUsersForRole (" data2_admin" , {});
225248 }
226249 catch (CasbinRBACException e) {
227250 Assert::IsTrue (true );
228251 }
229- Assert::IsTrue (ArrayEquals (std::vector<std::string> {" eve" }, e.GetUsersForRole (" data3_admin" )));
252+ Assert::IsTrue (ArrayEquals ({" eve" }, e.GetUsersForRole (" data3_admin" )));
230253
231- e.RemoveFilteredGroupingPolicy (0 , std::vector<std::string> {" bob" });
254+ e.RemoveFilteredGroupingPolicy (0 , {" bob" });
232255
233- Assert::IsTrue (ArrayEquals (std::vector<std::string> {}, e.GetRolesForUser (" alice" )));
234- Assert::IsTrue (ArrayEquals (std::vector<std::string> {}, e.GetRolesForUser (" bob" )));
235- Assert::IsTrue (ArrayEquals (std::vector<std::string> {" data3_admin" }, e.GetRolesForUser (" eve" )));
236- Assert::IsTrue (ArrayEquals (std::vector<std::string> {}, e.GetRolesForUser (" non_exist" )));
256+ Assert::IsTrue (ArrayEquals ({}, e.GetRolesForUser (" alice" )));
257+ Assert::IsTrue (ArrayEquals ({}, e.GetRolesForUser (" bob" )));
258+ Assert::IsTrue (ArrayEquals ({" data3_admin" }, e.GetRolesForUser (" eve" )));
259+ Assert::IsTrue (ArrayEquals ({}, e.GetRolesForUser (" non_exist" )));
237260
238261 try {
239262 e.GetUsersForRole (" data1_admin" );
@@ -247,7 +270,17 @@ namespace test_management_api
247270 catch (CasbinRBACException e) {
248271 Assert::IsTrue (true );
249272 }
250- Assert::IsTrue (ArrayEquals (std::vector<std::string>{" eve" }, e.GetUsersForRole (" data3_admin" )));
273+ Assert::IsTrue (ArrayEquals ({" eve" }, e.GetUsersForRole (" data3_admin" )));
274+
275+ Assert::IsTrue (e.AddGroupingPolicy ({" data3_admin" , " data4_admin" }));
276+ e.UpdateGroupingPolicy ({" eve" , " data3_admin" }, {" eve" , " admin" });
277+ e.UpdateGroupingPolicy ({" data3_admin" , " data4_admin" }, {" admin" , " data4_admin" });
278+
279+ // Assert::IsTrue(ArrayEquals({"admin"}, e.GetUsersForRole("data4_admin")));
280+ Assert::IsTrue (ArrayEquals ({" eve" }, e.GetUsersForRole (" admin" )));
281+
282+ Assert::IsTrue (ArrayEquals ({" admin" }, e.GetRolesForUser (" eve" )));
283+ Assert::IsTrue (ArrayEquals ({" data4_admin" }, e.GetRolesForUser (" admin" )));
251284 }
252285 };
253286}
0 commit comments