/* * Copyright (c) 2016 Evolveum * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.evolveum.midpoint.model.intest.orgstruct; import static com.evolveum.midpoint.test.IntegrationTestTools.display; import java.io.File; import com.evolveum.midpoint.model.api.ModelExecuteOptions; import com.evolveum.midpoint.model.intest.AbstractInitializedModelIntegrationTest; import org.springframework.test.annotation.DirtiesContext; import org.springframework.test.annotation.DirtiesContext.ClassMode; import org.springframework.test.context.ContextConfiguration; import org.testng.annotations.Listeners; import org.testng.annotations.Test; import com.evolveum.midpoint.prism.PrismObject; import com.evolveum.midpoint.schema.constants.SchemaConstants; import com.evolveum.midpoint.schema.result.OperationResult; import com.evolveum.midpoint.task.api.Task; import com.evolveum.midpoint.test.DummyResourceContoller; import com.evolveum.midpoint.test.util.TestUtil; import com.evolveum.midpoint.xml.ns._public.common.common_3.OrgType; import com.evolveum.midpoint.xml.ns._public.common.common_3.UserType; /** * @author semancik * */ @ContextConfiguration(locations = {"classpath:ctx-model-intest-test-main.xml"}) @DirtiesContext(classMode = ClassMode.AFTER_CLASS) @Listeners({ com.evolveum.midpoint.tools.testng.AlphabeticalMethodInterceptor.class }) public class TestOrgStructCaribbean extends AbstractInitializedModelIntegrationTest { public static final File TEST_DIR = new File("src/test/resources/orgstruct"); protected static final File ORG_CARIBBEAN_FILE = new File(TEST_DIR, "org-caribbean.xml"); protected static final String ORG_CARIBBEAN_TOP_OID = "00000000-8888-6666-0000-c00000000001"; protected static final String ORG_CARIBBEAN_THE_CROWN_OID = "00000000-8888-6666-0000-c00000000002"; protected static final String ORG_CARIBBEAN_JAMAICA_OID = "00000000-8888-6666-0000-c00000000003"; protected static final String ORG_CARIBBEAN_DEPARTMENT_OF_THINGS_OID = "00000000-8888-6666-0000-c00000000004"; protected static final String ORG_CARIBBEAN_DEPARTMENT_OF_PEOPLE_OID = "00000000-8888-6666-0000-c00000000005"; protected static final String ORG_CARIBBEAN_ENTERTAINMENT_SECTION_OID = "00000000-8888-6666-0000-c00000000006"; public static final File USER_GIBBS_FILE = new File(TEST_DIR, "user-gibbs.xml"); public static final String USER_GIBBS_OID = "aca242ae-a29e-11e6-8bb4-1f8a1be2bd79"; public static final String USER_GIBBS_USERNAME = "gibbs"; public static final File USER_PINTEL_FILE = new File(TEST_DIR, "user-pintel.xml"); public static final String USER_PINTEL_OID = "16522760-a2a3-11e6-bf77-8baa83388f4b"; public static final String USER_PINTEL_USERNAME = "pintel"; public static final File ROLE_META_PIRACY_ORG_FILE = new File(TEST_DIR, "role-meta-piracy-org.xml"); public static final String ROLE_META_PIRACY_ORG_OID = "d534f1b2-a26c-11e6-abf5-e71dff038896"; @Override public void initSystem(Task initTask, OperationResult initResult) throws Exception { super.initSystem(initTask, initResult); addObject(USER_GIBBS_FILE); addObject(USER_PINTEL_FILE); addObject(ROLE_META_PIRACY_ORG_FILE); //DebugUtil.setDetailedDebugDump(true); } /** * MID-3448 */ @Test public void test100AddOrgCaribbean() throws Exception { final String TEST_NAME = "test100AddOrgCaribbean"; TestUtil.displayTestTile(this, TEST_NAME); Task task = taskManager.createTaskInstance(TestOrgStructCaribbean.class.getName() + "." + TEST_NAME); OperationResult result = task.getResult(); // WHEN TestUtil.displayWhen(TEST_NAME); repoAddObjectsFromFile(ORG_CARIBBEAN_FILE, OrgType.class, result); // THEN TestUtil.displayThen(TEST_NAME); result.computeStatus(); TestUtil.assertSuccess(result); PrismObject<OrgType> orgJamaica = getObject(OrgType.class, ORG_CARIBBEAN_JAMAICA_OID); display("Jamaica", orgJamaica); assertAssignedOrgs(orgJamaica, ORG_CARIBBEAN_THE_CROWN_OID); assertHasOrgs(orgJamaica, ORG_CARIBBEAN_THE_CROWN_OID); PrismObject<OrgType> orgMonkeyGovernor = getObject(OrgType.class, ORG_GOVERNOR_OFFICE_OID); display("Moneky Governor", orgMonkeyGovernor); assertHasNoOrg(orgMonkeyGovernor, ORG_GOVERNOR_OFFICE_OID); PrismObject<OrgType> orgDoT = getObject(OrgType.class, ORG_CARIBBEAN_DEPARTMENT_OF_THINGS_OID); display("Department of Things", orgDoT); assertAssignedOrgs(orgDoT, ORG_CARIBBEAN_JAMAICA_OID); assertHasOrgs(orgDoT, ORG_CARIBBEAN_JAMAICA_OID); assertHasNoOrg(orgDoT, ORG_GOVERNOR_OFFICE_OID); } /** * MID-3448 */ @Test public void test102RecomputeJamaica() throws Exception { final String TEST_NAME = "test102RecomputeJamaica"; TestUtil.displayTestTile(this, TEST_NAME); Task task = taskManager.createTaskInstance(TestOrgStructCaribbean.class.getName() + "." + TEST_NAME); OperationResult result = task.getResult(); // WHEN TestUtil.displayWhen(TEST_NAME); modelService.recompute(OrgType.class, ORG_CARIBBEAN_JAMAICA_OID, null, task, result); // THEN TestUtil.displayThen(TEST_NAME); result.computeStatus(); TestUtil.assertSuccess(result); PrismObject<OrgType> orgJamaica = getObject(OrgType.class, ORG_CARIBBEAN_JAMAICA_OID); display("Jamaica", orgJamaica); assertAssignedOrgs(orgJamaica, ORG_CARIBBEAN_THE_CROWN_OID); assertHasOrgs(orgJamaica, ORG_CARIBBEAN_THE_CROWN_OID); assertHasNoOrg(orgJamaica, ORG_GOVERNOR_OFFICE_OID); PrismObject<OrgType> orgMonkeyGovernor = getObject(OrgType.class, ORG_GOVERNOR_OFFICE_OID); display("Monkey Governor", orgMonkeyGovernor); assertHasNoOrg(orgMonkeyGovernor, ORG_CARIBBEAN_JAMAICA_OID); } /** * MID-3448 */ @Test public void test103ReconcileJamaica() throws Exception { final String TEST_NAME = "test103ReconcileJamaica"; TestUtil.displayTestTile(this, TEST_NAME); Task task = taskManager.createTaskInstance(TestOrgStructCaribbean.class.getName() + "." + TEST_NAME); OperationResult result = task.getResult(); // WHEN TestUtil.displayWhen(TEST_NAME); reconcileOrg(ORG_CARIBBEAN_JAMAICA_OID, task, result); // THEN TestUtil.displayThen(TEST_NAME); result.computeStatus(); TestUtil.assertSuccess(result); PrismObject<OrgType> orgJamaica = getObject(OrgType.class, ORG_CARIBBEAN_JAMAICA_OID); display("Jamaica", orgJamaica); assertAssignedOrgs(orgJamaica, ORG_CARIBBEAN_THE_CROWN_OID); assertHasOrgs(orgJamaica, ORG_CARIBBEAN_THE_CROWN_OID); assertHasNoOrg(orgJamaica, ORG_GOVERNOR_OFFICE_OID); PrismObject<OrgType> orgMonkeyGovernor = getObject(OrgType.class, ORG_GOVERNOR_OFFICE_OID); display("Monkey Governor", orgMonkeyGovernor); assertHasNoOrg(orgMonkeyGovernor, ORG_CARIBBEAN_JAMAICA_OID); } /** * MID-3448 */ @Test public void test104RecomputeGovernor() throws Exception { final String TEST_NAME = "test104RecomputeGovernor"; TestUtil.displayTestTile(this, TEST_NAME); Task task = taskManager.createTaskInstance(TestOrgStructCaribbean.class.getName() + "." + TEST_NAME); OperationResult result = task.getResult(); // WHEN TestUtil.displayWhen(TEST_NAME); modelService.recompute(OrgType.class, ORG_GOVERNOR_OFFICE_OID, null, task, result); // THEN TestUtil.displayThen(TEST_NAME); result.computeStatus(); TestUtil.assertSuccess(result); PrismObject<OrgType> orgJamaica = getObject(OrgType.class, ORG_CARIBBEAN_JAMAICA_OID); display("Jamaica", orgJamaica); assertAssignedOrgs(orgJamaica, ORG_CARIBBEAN_THE_CROWN_OID); assertHasOrgs(orgJamaica, ORG_CARIBBEAN_THE_CROWN_OID); assertHasNoOrg(orgJamaica, ORG_GOVERNOR_OFFICE_OID); PrismObject<OrgType> orgMonkeyGovernor = getObject(OrgType.class, ORG_GOVERNOR_OFFICE_OID); display("Monkey Governor", orgMonkeyGovernor); assertHasNoOrg(orgMonkeyGovernor, ORG_CARIBBEAN_JAMAICA_OID); } /** * MID-3448 */ @Test public void test105ReconcileGovernor() throws Exception { final String TEST_NAME = "test105ReconcileGovernor"; TestUtil.displayTestTile(this, TEST_NAME); Task task = taskManager.createTaskInstance(TestOrgStructCaribbean.class.getName() + "." + TEST_NAME); OperationResult result = task.getResult(); // WHEN TestUtil.displayWhen(TEST_NAME); reconcileOrg(ORG_GOVERNOR_OFFICE_OID, task, result); // THEN TestUtil.displayThen(TEST_NAME); result.computeStatus(); TestUtil.assertSuccess(result); PrismObject<OrgType> orgJamaica = getObject(OrgType.class, ORG_CARIBBEAN_JAMAICA_OID); display("Jamaica", orgJamaica); assertAssignedOrgs(orgJamaica, ORG_CARIBBEAN_THE_CROWN_OID); assertHasOrgs(orgJamaica, ORG_CARIBBEAN_THE_CROWN_OID); assertHasNoOrg(orgJamaica, ORG_GOVERNOR_OFFICE_OID); PrismObject<OrgType> orgMonkeyGovernor = getObject(OrgType.class, ORG_GOVERNOR_OFFICE_OID); display("Monkey Governor", orgMonkeyGovernor); assertHasNoOrg(orgMonkeyGovernor, ORG_CARIBBEAN_JAMAICA_OID); } /** * Jamaica has an inducement to Monkey Island Governor Office. * Sub-orgs of Jamaica should appear under Governor office. * * MID-3448 */ @Test public void test106RecomputeDoT() throws Exception { final String TEST_NAME = "test106RecomputeDoT"; TestUtil.displayTestTile(this, TEST_NAME); Task task = taskManager.createTaskInstance(TestOrgStructCaribbean.class.getName() + "." + TEST_NAME); OperationResult result = task.getResult(); // WHEN TestUtil.displayWhen(TEST_NAME); modelService.recompute(OrgType.class, ORG_CARIBBEAN_DEPARTMENT_OF_THINGS_OID, ModelExecuteOptions.createReconcileFocus(), task, result); // THEN TestUtil.displayThen(TEST_NAME); result.computeStatus(); TestUtil.assertSuccess(result); PrismObject<OrgType> orgJamaica = getObject(OrgType.class, ORG_CARIBBEAN_JAMAICA_OID); display("Jamaica", orgJamaica); assertAssignedOrgs(orgJamaica, ORG_CARIBBEAN_THE_CROWN_OID); assertHasOrgs(orgJamaica, ORG_CARIBBEAN_THE_CROWN_OID); assertHasNoOrg(orgJamaica, ORG_GOVERNOR_OFFICE_OID); PrismObject<OrgType> orgMonkeyGovernor = getObject(OrgType.class, ORG_GOVERNOR_OFFICE_OID); display("Monkey Governor", orgMonkeyGovernor); assertHasNoOrg(orgMonkeyGovernor, ORG_CARIBBEAN_JAMAICA_OID); PrismObject<OrgType> orgDoT = getObject(OrgType.class, ORG_CARIBBEAN_DEPARTMENT_OF_THINGS_OID); display("Department of Things", orgDoT); assertAssignedOrgs(orgDoT, ORG_CARIBBEAN_JAMAICA_OID); assertHasOrgs(orgDoT, ORG_CARIBBEAN_JAMAICA_OID, ORG_GOVERNOR_OFFICE_OID); } /** * MID-3448 */ @Test public void test107ReconcileDoT() throws Exception { final String TEST_NAME = "test107ReconcileDoT"; TestUtil.displayTestTile(this, TEST_NAME); Task task = taskManager.createTaskInstance(TestOrgStructCaribbean.class.getName() + "." + TEST_NAME); OperationResult result = task.getResult(); // WHEN TestUtil.displayWhen(TEST_NAME); reconcileOrg(ORG_CARIBBEAN_DEPARTMENT_OF_THINGS_OID, task, result); // THEN TestUtil.displayThen(TEST_NAME); result.computeStatus(); TestUtil.assertSuccess(result); PrismObject<OrgType> orgJamaica = getObject(OrgType.class, ORG_CARIBBEAN_JAMAICA_OID); display("Jamaica", orgJamaica); assertAssignedOrgs(orgJamaica, ORG_CARIBBEAN_THE_CROWN_OID); assertHasOrgs(orgJamaica, ORG_CARIBBEAN_THE_CROWN_OID); assertHasNoOrg(orgJamaica, ORG_GOVERNOR_OFFICE_OID); PrismObject<OrgType> orgMonkeyGovernor = getObject(OrgType.class, ORG_GOVERNOR_OFFICE_OID); display("Monkey Governor", orgMonkeyGovernor); assertHasNoOrg(orgMonkeyGovernor, ORG_CARIBBEAN_JAMAICA_OID); PrismObject<OrgType> orgDoT = getObject(OrgType.class, ORG_CARIBBEAN_DEPARTMENT_OF_THINGS_OID); display("Department of Things", orgDoT); assertAssignedOrgs(orgDoT, ORG_CARIBBEAN_JAMAICA_OID); assertHasOrgs(orgDoT, ORG_CARIBBEAN_JAMAICA_OID, ORG_GOVERNOR_OFFICE_OID); } /** * Department of People (DoP) has in inducement to Monkey Island Scumm Bar. * But that inducement is limited to UserType. Therefore sub-orgs of * DoP should not not appear under Scumm Bar. * * Related to MID-3448 */ @Test public void test110RecomputeDoP() throws Exception { final String TEST_NAME = "test110RecomputeDoP"; TestUtil.displayTestTile(this, TEST_NAME); Task task = taskManager.createTaskInstance(TestOrgStructCaribbean.class.getName() + "." + TEST_NAME); OperationResult result = task.getResult(); // WHEN TestUtil.displayWhen(TEST_NAME); modelService.recompute(OrgType.class, ORG_CARIBBEAN_DEPARTMENT_OF_PEOPLE_OID, null, task, result); // THEN TestUtil.displayThen(TEST_NAME); result.computeStatus(); TestUtil.assertSuccess(result); PrismObject<OrgType> orgEntertainmentSection = getObject(OrgType.class, ORG_CARIBBEAN_ENTERTAINMENT_SECTION_OID); display("Entertainment Section", orgEntertainmentSection); assertHasNoOrg(orgEntertainmentSection, ORG_SCUMM_BAR_OID); PrismObject<OrgType> orgScummBar = getObject(OrgType.class, ORG_SCUMM_BAR_OID); display("Scumm Bar", orgScummBar); assertHasNoOrg(orgScummBar, ORG_CARIBBEAN_ENTERTAINMENT_SECTION_OID); } /** * Department of People (DoP) has in inducement to Monkey Island Scumm Bar. * That inducement is limited to UserType. Therefore sub-orgs of * DoP should not not appear under Scumm Bar. But when Jack is assigned * to the DoP he should also appear under Scumm Bar. * * Related to MID-3448 */ @Test public void test115AssignJackToDoP() throws Exception { final String TEST_NAME = "test115AssignJackToDoP"; TestUtil.displayTestTile(this, TEST_NAME); Task task = taskManager.createTaskInstance(TestOrgStructCaribbean.class.getName() + "." + TEST_NAME); OperationResult result = task.getResult(); assertNoDummyAccount(RESOURCE_DUMMY_YELLOW_NAME, USER_JACK_USERNAME); assertNoDummyAccount(RESOURCE_DUMMY_RED_NAME, USER_JACK_USERNAME); PrismObject<UserType> userJackBefore = getUser(USER_JACK_OID); dumpFocus("User Jack before", userJackBefore); // WHEN TestUtil.displayWhen(TEST_NAME); assignOrg(USER_JACK_OID, ORG_CARIBBEAN_DEPARTMENT_OF_PEOPLE_OID, null); // THEN TestUtil.displayThen(TEST_NAME); result.computeStatus(); TestUtil.assertSuccess(result); PrismObject<OrgType> orgEntertainmentSection = getObject(OrgType.class, ORG_CARIBBEAN_ENTERTAINMENT_SECTION_OID); display("Entertainment Section", orgEntertainmentSection); assertHasNoOrg(orgEntertainmentSection, ORG_SCUMM_BAR_OID); PrismObject<OrgType> orgScummBar = getObject(OrgType.class, ORG_SCUMM_BAR_OID); display("Scumm Bar", orgScummBar); assertHasNoOrg(orgScummBar, ORG_CARIBBEAN_ENTERTAINMENT_SECTION_OID); PrismObject<UserType> userJackAfter = getUser(USER_JACK_OID); dumpFocus("User Jack after", userJackAfter); assertHasOrgs(userJackAfter, ORG_CARIBBEAN_DEPARTMENT_OF_PEOPLE_OID, ORG_SCUMM_BAR_OID); assertRoleMembershipRef(userJackAfter, ORG_CARIBBEAN_DEPARTMENT_OF_PEOPLE_OID, ORG_SCUMM_BAR_OID); assertAccount(userJackAfter, RESOURCE_DUMMY_OID); // From Scumm Bar assertAccount(userJackAfter, RESOURCE_DUMMY_YELLOW_OID); assertLinks(userJackAfter, 2); assertDummyAccount(RESOURCE_DUMMY_YELLOW_NAME, USER_JACK_USERNAME); assertDummyAccountAttribute(RESOURCE_DUMMY_YELLOW_NAME, USER_JACK_USERNAME, DummyResourceContoller.DUMMY_ACCOUNT_ATTRIBUTE_TITLE_NAME, "Pirate"); assertNoDummyAccount(RESOURCE_DUMMY_RED_NAME, USER_JACK_USERNAME); } /** * Barbossa is a manager. He should get the red account from the piracy metarole. * But he should NOT get the yellow account. */ @Test public void test120AssignBarbossaDoTManager() throws Exception { final String TEST_NAME = "test120AssignBarbossaDoTManager"; TestUtil.displayTestTile(this, TEST_NAME); Task task = taskManager.createTaskInstance(TestOrgStructCaribbean.class.getName() + "." + TEST_NAME); OperationResult result = task.getResult(); assertNoDummyAccount(RESOURCE_DUMMY_YELLOW_NAME, USER_BARBOSSA_USERNAME); assertNoDummyAccount(RESOURCE_DUMMY_RED_NAME, USER_BARBOSSA_USERNAME); // WHEN TestUtil.displayWhen(TEST_NAME); assignOrg(USER_BARBOSSA_OID, ORG_CARIBBEAN_DEPARTMENT_OF_THINGS_OID, SchemaConstants.ORG_MANAGER); // THEN TestUtil.displayThen(TEST_NAME); result.computeStatus(); TestUtil.assertSuccess(result); PrismObject<UserType> userBarbossaAfter = getUser(USER_BARBOSSA_OID); dumpFocus("User barbossa after", userBarbossaAfter); assertHasOrgs(userBarbossaAfter, ORG_CARIBBEAN_DEPARTMENT_OF_THINGS_OID); assertRoleMembershipRef(userBarbossaAfter, ORG_CARIBBEAN_DEPARTMENT_OF_THINGS_OID); assertAccount(userBarbossaAfter, RESOURCE_DUMMY_RED_OID); assertLinks(userBarbossaAfter, 1); assertDummyAccount(RESOURCE_DUMMY_RED_NAME, USER_BARBOSSA_USERNAME); assertDummyAccountAttribute(RESOURCE_DUMMY_RED_NAME, USER_BARBOSSA_USERNAME, DummyResourceContoller.DUMMY_ACCOUNT_ATTRIBUTE_TITLE_NAME, "Captain"); assertNoDummyAccount(RESOURCE_DUMMY_YELLOW_NAME, USER_BARBOSSA_USERNAME); } /** * MID-3472 */ @Test public void test130AssignGibbsAsJacksDeputy() throws Exception { final String TEST_NAME = "test130AssignGibbsAsJacksDeputy"; TestUtil.displayTestTile(this, TEST_NAME); Task task = taskManager.createTaskInstance(TestOrgStructCaribbean.class.getName() + "." + TEST_NAME); OperationResult result = task.getResult(); assertNoDummyAccount(RESOURCE_DUMMY_YELLOW_NAME, USER_GIBBS_USERNAME); assertNoDummyAccount(RESOURCE_DUMMY_RED_NAME, USER_GIBBS_USERNAME); // WHEN TestUtil.displayWhen(TEST_NAME); assignDeputy(USER_GIBBS_OID, USER_JACK_OID, task, result); // THEN TestUtil.displayThen(TEST_NAME); result.computeStatus(); TestUtil.assertSuccess(result); PrismObject<UserType> userGibbsAfter = getUser(USER_GIBBS_OID); dumpFocus("User Gibbs after", userGibbsAfter); assertHasOrgs(userGibbsAfter, ORG_CARIBBEAN_DEPARTMENT_OF_PEOPLE_OID, ORG_SCUMM_BAR_OID); assertRoleMembershipRef(userGibbsAfter); assertDelegatedRef(userGibbsAfter, ORG_CARIBBEAN_DEPARTMENT_OF_PEOPLE_OID, ORG_SCUMM_BAR_OID, USER_JACK_OID); assertAccount(userGibbsAfter, RESOURCE_DUMMY_OID); // From Scumm Bar assertAccount(userGibbsAfter, RESOURCE_DUMMY_YELLOW_OID); assertLinks(userGibbsAfter, 2); assertDummyAccount(RESOURCE_DUMMY_YELLOW_NAME, USER_GIBBS_USERNAME); assertDummyAccountAttribute(RESOURCE_DUMMY_YELLOW_NAME, USER_GIBBS_USERNAME, DummyResourceContoller.DUMMY_ACCOUNT_ATTRIBUTE_TITLE_NAME, "Pirate"); assertNoDummyAccount(RESOURCE_DUMMY_RED_NAME, USER_GIBBS_USERNAME); } /** * MID-3472 */ @Test public void test140AssignPintelAsBarbossasDeputy() throws Exception { final String TEST_NAME = "test140AssignPintelAsBarbossasDeputy"; TestUtil.displayTestTile(this, TEST_NAME); Task task = taskManager.createTaskInstance(TestOrgStructCaribbean.class.getName() + "." + TEST_NAME); OperationResult result = task.getResult(); assertNoDummyAccount(RESOURCE_DUMMY_YELLOW_NAME, USER_PINTEL_USERNAME); assertNoDummyAccount(RESOURCE_DUMMY_RED_NAME, USER_PINTEL_USERNAME); // WHEN TestUtil.displayWhen(TEST_NAME); assignDeputy(USER_PINTEL_OID, USER_BARBOSSA_OID, task, result); // THEN TestUtil.displayThen(TEST_NAME); result.computeStatus(); TestUtil.assertSuccess(result); PrismObject<UserType> userPintelAfter = getUser(USER_PINTEL_OID); dumpFocus("User pintel after", userPintelAfter); assertHasOrgs(userPintelAfter, ORG_CARIBBEAN_DEPARTMENT_OF_THINGS_OID); assertRoleMembershipRef(userPintelAfter); assertDelegatedRef(userPintelAfter, ORG_CARIBBEAN_DEPARTMENT_OF_THINGS_OID, USER_BARBOSSA_OID); assertAccount(userPintelAfter, RESOURCE_DUMMY_RED_OID); assertLinks(userPintelAfter, 1); assertDummyAccount(RESOURCE_DUMMY_RED_NAME, USER_PINTEL_USERNAME); assertDummyAccountAttribute(RESOURCE_DUMMY_RED_NAME, USER_PINTEL_USERNAME, DummyResourceContoller.DUMMY_ACCOUNT_ATTRIBUTE_TITLE_NAME, "Captain"); assertNoDummyAccount(RESOURCE_DUMMY_YELLOW_NAME, USER_PINTEL_USERNAME); } }