66import gov .nist .csd .pm .core .common .graph .node .NodeType ;
77import gov .nist .csd .pm .core .common .graph .relationship .AccessRightSet ;
88import gov .nist .csd .pm .core .common .graph .relationship .Association ;
9+ import gov .nist .csd .pm .core .pap .function .PluginRegistry ;
910import gov .nist .csd .pm .core .pap .function .arg .FormalParameter ;
1011import gov .nist .csd .pm .core .pap .function .arg .Args ;
1112import gov .nist .csd .pm .core .pap .function .op .Operation ;
1213import gov .nist .csd .pm .core .impl .memory .pap .MemoryPAP ;
1314import gov .nist .csd .pm .core .pap .admin .AdminPolicyNode ;
1415import gov .nist .csd .pm .core .pap .function .routine .Routine ;
1516import gov .nist .csd .pm .core .pap .query .model .context .UserContext ;
17+ import gov .nist .csd .pm .core .pdp .bootstrap .PMLBootstrapper ;
1618import gov .nist .csd .pm .core .pdp .bootstrap .PolicyBootstrapper ;
1719import gov .nist .csd .pm .core .util .SamplePolicy ;
1820import gov .nist .csd .pm .core .util .TestPAP ;
@@ -81,7 +83,7 @@ void testTx() throws PMException {
8183 assertTrue (pap .query ().graph ().nodeExists ("pc1" ));
8284 assertTrue (pap .query ().graph ().nodeExists ("oa1" ));
8385 assertTrue (pap .query ().graph ().nodeExists ("ua1" ));
84- assertEquals (pap .query ().graph ().getAssociationsWithSource (id ("ua1" )).iterator ().next (), new Association (id ("ua1" ), id ("oa1" ), new AccessRightSet ()));
86+ assertEquals (pap .query ().graph ().getAssociationsWithSource (id ("ua1" )).iterator ().next (), new Association (id ("ua1" ), id ("oa1" ), new AccessRightSet ()));
8587
8688 pap .beginTx ();
8789 pap .modify ().graph ().deleteNode (id ("ua1" ));
@@ -120,12 +122,12 @@ public static void testAdminPolicy(PAP pap) throws PMException {
120122 assertTrue (pap .query ().graph ().nodeExists (AdminPolicyNode .PM_ADMIN_PC .nodeId ()));
121123 Collection <Long > ascendants = pap .query ().graph ().getAdjacentAscendants (AdminPolicyNode .PM_ADMIN_PC .nodeId ());
122124 assertEquals (1 , ascendants .size ());
123- assertEquals (ascendants .iterator ().next (), (AdminPolicyNode .PM_ADMIN_BASE_OA .nodeId ()));
125+ assertEquals (ascendants .iterator ().next (), (AdminPolicyNode .PM_ADMIN_BASE_OA .nodeId ()));
124126
125127 assertTrue (pap .query ().graph ().nodeExists (AdminPolicyNode .PM_ADMIN_BASE_OA .nodeId ()));
126128 Collection <Long > descendants = pap .query ().graph ().getAdjacentDescendants (AdminPolicyNode .PM_ADMIN_BASE_OA .nodeId ());
127129 assertEquals (1 , descendants .size ());
128- assertEquals (descendants .iterator ().next (), (AdminPolicyNode .PM_ADMIN_PC .nodeId ()));
130+ assertEquals (descendants .iterator ().next (), (AdminPolicyNode .PM_ADMIN_PC .nodeId ()));
129131 }
130132
131133 @ Test
@@ -209,4 +211,30 @@ protected Args prepareArgs(Map<FormalParameter<?>, Object> argsMap) {
209211 assertTrue (pap .plugins ().getOperationNames ().contains ("op1" ));
210212 assertTrue (pap .plugins ().getRoutineNames ().contains ("routine1" ));
211213 }
214+
215+ @ Test
216+ void testBootstrapDoesNotThrowExceptionWhenPluginRegistryHasPlugins () throws PMException {
217+ pap .plugins ().registerOperation (new Operation <>("op1" , List .of ()) {
218+ @ Override
219+ public Object execute (PAP pap , Args args ) throws PMException {
220+ return null ;
221+ }
222+
223+ @ Override
224+ protected Args prepareArgs (Map <FormalParameter <?>, Object > argsMap ) {
225+ return null ;
226+ }
227+
228+ @ Override
229+ public void canExecute (PAP pap , UserContext userCtx , Args args ) throws PMException {
230+
231+ }
232+ });
233+
234+ assertDoesNotThrow (() -> pap .bootstrap (new PMLBootstrapper ("u1" , """
235+ create pc "pc1"
236+ create ua "ua1" in ["pc1"]
237+ assign "u1" to ["ua1"]
238+ """ )));
239+ }
212240}
0 commit comments