diff --git a/model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/AbstractConfiguredModelIntegrationTest.java b/model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/AbstractConfiguredModelIntegrationTest.java index d1e7cad1125..d2214423690 100644 --- a/model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/AbstractConfiguredModelIntegrationTest.java +++ b/model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/AbstractConfiguredModelIntegrationTest.java @@ -158,9 +158,12 @@ public class AbstractConfiguredModelIntegrationTest extends AbstractModelIntegra protected static final String ROLE_CAPTAIN_OID = "12345678-d34d-b33f-f00d-55555555cccc"; // Excludes role "pirate" - protected static final String ROLE_JUDGE_FILENAME = COMMON_DIR_NAME + "/role-judge.xml"; + protected static final File ROLE_JUDGE_FILE = new File(COMMON_DIR, "role-judge.xml"); protected static final String ROLE_JUDGE_OID = "12345111-1111-2222-1111-121212111111"; + protected static final File ROLE_EMPTY_FILE = new File(COMMON_DIR, "role-empty.xml"); + protected static final String ROLE_EMPTY_OID = "12345111-1111-2222-1111-121212111112"; + protected static final File USER_JACK_FILE = new File(COMMON_DIR_NAME, "user-jack.xml"); protected static final String USER_JACK_OID = "c0c010c0-d34d-b33f-f00d-111111111111"; protected static final String USER_JACK_USERNAME = "jack"; diff --git a/model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/AbstractInitializedModelIntegrationTest.java b/model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/AbstractInitializedModelIntegrationTest.java index 2950519c6af..47ac3d59d21 100644 --- a/model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/AbstractInitializedModelIntegrationTest.java +++ b/model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/AbstractInitializedModelIntegrationTest.java @@ -232,7 +232,8 @@ public void initSystem(Task initTask, OperationResult initResult) throws Excepti repoAddObjectFromFile(ROLE_PIRATE_FILE, RoleType.class, initResult); repoAddObjectFromFile(ROLE_NICE_PIRATE_FILENAME, RoleType.class, initResult); repoAddObjectFromFile(ROLE_CAPTAIN_FILENAME, RoleType.class, initResult); - repoAddObjectFromFile(ROLE_JUDGE_FILENAME, RoleType.class, initResult); + repoAddObjectFromFile(ROLE_JUDGE_FILE, RoleType.class, initResult); + repoAddObjectFromFile(ROLE_EMPTY_FILE, RoleType.class, initResult); // Orgstruct if (doAddOrgstruct()) { diff --git a/model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/TestRbac.java b/model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/TestRbac.java index 2b670a8f178..4cd0c7750b2 100644 --- a/model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/TestRbac.java +++ b/model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/TestRbac.java @@ -1183,5 +1183,138 @@ public void test703JackModifyJudgeDeleteInducementHonorabilityRecompute() throws assertDummyAccount(RESOURCE_DUMMY_RED_NAME, ACCOUNT_JACK_DUMMY_USERNAME, ACCOUNT_JACK_DUMMY_FULLNAME, false); assertDummyAccountAttribute(RESOURCE_DUMMY_RED_NAME, ACCOUNT_JACK_DUMMY_USERNAME, "title", "Bloody Honorable"); } + + @Test + public void test709JackUnAssignRoleJudge() throws Exception { + final String TEST_NAME = "test709JackUnAssignRoleJudge"; + TestUtil.displayTestTile(this, TEST_NAME); + assumeAssignmentPolicy(AssignmentPolicyEnforcementType.FULL); + + Task task = taskManager.createTaskInstance(TestRbac.class.getName() + "." + TEST_NAME); + OperationResult result = task.getResult(); + + PrismObject userBefore = getUser(USER_JACK_OID); + display("User jack before", userBefore); + + // WHEN + TestUtil.displayWhen(TEST_NAME); + unassignRole(USER_JACK_OID, ROLE_JUDGE_OID, task, result); + + // THEN + TestUtil.displayThen(TEST_NAME); + result.computeStatus(); + TestUtil.assertSuccess(result); + + assertAssignedNoRole(USER_JACK_OID, task, result); + assertNoDummyAccount(ACCOUNT_JACK_DUMMY_USERNAME); + } + + @Test + public void test710JackAssignRoleEmpty() throws Exception { + final String TEST_NAME = "test710JackAssignRoleEmpty"; + TestUtil.displayTestTile(this, TEST_NAME); + assumeAssignmentPolicy(AssignmentPolicyEnforcementType.FULL); + + Task task = taskManager.createTaskInstance(TestRbac.class.getName() + "." + TEST_NAME); + OperationResult result = task.getResult(); + + PrismObject userBefore = getUser(USER_JACK_OID); + display("User jack before", userBefore); + + // WHEN + TestUtil.displayWhen(TEST_NAME); + assignRole(USER_JACK_OID, ROLE_EMPTY_OID, task, result); + + // THEN + TestUtil.displayThen(TEST_NAME); + result.computeStatus(); + TestUtil.assertSuccess(result); + + assertAssignedRole(USER_JACK_OID, ROLE_EMPTY_OID, task, result); + assertNoDummyAccount(ACCOUNT_JACK_DUMMY_USERNAME); + } + + @Test + public void test712JackModifyEmptyRoleAddInducementPirateRecompute() throws Exception { + final String TEST_NAME = "test712JackModifyEmptyRoleAddInducementPirateRecompute"; + TestUtil.displayTestTile(this, TEST_NAME); + assumeAssignmentPolicy(AssignmentPolicyEnforcementType.FULL); + + Task task = taskManager.createTaskInstance(TestRbac.class.getName() + "." + TEST_NAME); + OperationResult result = task.getResult(); + + PrismObject userBefore = getUser(USER_JACK_OID); + display("User jack before", userBefore); + + modifyRoleAddInducementTarget(ROLE_EMPTY_OID, ROLE_PIRATE_OID); + + // WHEN + TestUtil.displayWhen(TEST_NAME); + recomputeUser(USER_JACK_OID, task, result); + + // THEN + TestUtil.displayThen(TEST_NAME); + result.computeStatus(); + TestUtil.assertSuccess(result); + + assertAssignedRole(USER_JACK_OID, ROLE_EMPTY_OID, task, result); + + assertDummyAccount(ACCOUNT_JACK_DUMMY_USERNAME, ACCOUNT_JACK_DUMMY_FULLNAME, true); + assertDefaultDummyAccountAttribute(ACCOUNT_JACK_DUMMY_USERNAME, "title", "Bloody Pirate"); + assertDefaultDummyAccountAttribute(ACCOUNT_JACK_DUMMY_USERNAME, "weapon", "cutlass"); + } + + @Test + public void test714JackModifyEmptyRoleDeleteInducementPirateRecompute() throws Exception { + final String TEST_NAME = "test714JackModifyEmptyRoleDeleteInducementPirateRecompute"; + TestUtil.displayTestTile(this, TEST_NAME); + assumeAssignmentPolicy(AssignmentPolicyEnforcementType.FULL); + + Task task = taskManager.createTaskInstance(TestRbac.class.getName() + "." + TEST_NAME); + OperationResult result = task.getResult(); + + PrismObject userBefore = getUser(USER_JACK_OID); + display("User jack before", userBefore); + + modifyRoleDeleteInducementTarget(ROLE_EMPTY_OID, ROLE_PIRATE_OID); + + // WHEN + TestUtil.displayWhen(TEST_NAME); + recomputeUser(USER_JACK_OID, task, result); + + // THEN + TestUtil.displayThen(TEST_NAME); + result.computeStatus(); + TestUtil.assertSuccess(result); + + assertAssignedRole(USER_JACK_OID, ROLE_EMPTY_OID, task, result); + + assertNoDummyAccount(ACCOUNT_JACK_DUMMY_USERNAME); + } + + @Test + public void test719JackUnAssignRoleEmpty() throws Exception { + final String TEST_NAME = "test719JackUnAssignRoleEmpty"; + TestUtil.displayTestTile(this, TEST_NAME); + assumeAssignmentPolicy(AssignmentPolicyEnforcementType.FULL); + + Task task = taskManager.createTaskInstance(TestRbac.class.getName() + "." + TEST_NAME); + OperationResult result = task.getResult(); + + PrismObject userBefore = getUser(USER_JACK_OID); + display("User jack before", userBefore); + + // WHEN + TestUtil.displayWhen(TEST_NAME); + unassignRole(USER_JACK_OID, ROLE_EMPTY_OID, task, result); + + // THEN + TestUtil.displayThen(TEST_NAME); + result.computeStatus(); + TestUtil.assertSuccess(result); + + assertAssignedNoRole(USER_JACK_OID, task, result); + assertNoDummyAccount(ACCOUNT_JACK_DUMMY_USERNAME); + } } diff --git a/model/model-intest/src/test/resources/common/role-empty.xml b/model/model-intest/src/test/resources/common/role-empty.xml new file mode 100644 index 00000000000..34cd787c673 --- /dev/null +++ b/model/model-intest/src/test/resources/common/role-empty.xml @@ -0,0 +1,23 @@ + + + Empty +