Skip to content

Commit

Permalink
Extended TestEntitlement to multi-intent association.
Browse files Browse the repository at this point in the history
  • Loading branch information
semancik committed Feb 22, 2016
1 parent 09eef8d commit 1b79732
Show file tree
Hide file tree
Showing 4 changed files with 417 additions and 3 deletions.
Expand Up @@ -92,6 +92,16 @@ public class TestEntitlements extends AbstractInitializedModelIntegrationTest {
public static final File ROLE_MAPMAKER_FILE = new File(TEST_DIR, "role-mapmaker.xml");
public static final String ROLE_MAPMAKER_OID = "10000000-0000-0000-0000-000000001605";

public static final File ROLE_BRUTE_FILE = new File(TEST_DIR, "role-brute.xml");
public static final String ROLE_BRUTE_OID = "10000000-0000-0000-0000-000000001606";
public static final String ROLE_BRUTE_NAME = "Brute";
public static final String GROUP_BRUTE_NAME = "brute";

public static final File ROLE_THUG_FILE = new File(TEST_DIR, "role-thug.xml");
public static final String ROLE_THUG_OID = "10000000-0000-0000-0000-000000001607";
public static final String ROLE_THUG_NAME = "Thug";
public static final String GROUP_THUG_NAME = "thug";

public static final File SHADOW_GROUP_DUMMY_SWASHBUCKLERS_FILE = new File(TEST_DIR, "group-swashbucklers.xml");
public static final String SHADOW_GROUP_DUMMY_SWASHBUCKLERS_OID = "20000000-0000-0000-3333-000000000001";
public static final String GROUP_DUMMY_SWASHBUCKLERS_NAME = "swashbucklers";
Expand Down Expand Up @@ -374,6 +384,62 @@ public void test300AddRoleWimp() throws Exception {
assertNoGroupMembers(dummyGroupAtOrange);
}

@Test
public void test302AddRoleBrute() throws Exception {
final String TEST_NAME = "test302AddRoleBrute";
TestUtil.displayTestTile(this, TEST_NAME);

Task task = taskManager.createTaskInstance(TestEntitlements.class.getName() + "." + TEST_NAME);
OperationResult result = task.getResult();

// WHEN
TestUtil.displayWhen(TEST_NAME);
addObject(ROLE_BRUTE_FILE, task, result);

// THEN
TestUtil.displayThen(TEST_NAME);
result.computeStatus();
TestUtil.assertSuccess(result);

DummyGroup dummyGroupBrute = dummyResourceOrange.getGroupByName(GROUP_BRUTE_NAME);
assertNotNull("No group on orange dummy resource", dummyGroupBrute);
display("Group", dummyGroupBrute);
assertNoGroupMembers(dummyGroupBrute);

DummyGroup dummyGroupBruteWannabe = dummyResourceOrange.getGroupByName(GROUP_BRUTE_NAME + "-wannabe");
assertNotNull("No wannabe group on orange dummy resource", dummyGroupBruteWannabe);
display("Wannabe Group", dummyGroupBruteWannabe);
assertNoGroupMembers(dummyGroupBruteWannabe);
}

@Test
public void test304AddRoleThug() throws Exception {
final String TEST_NAME = "test304AddRoleThug";
TestUtil.displayTestTile(this, TEST_NAME);

Task task = taskManager.createTaskInstance(TestEntitlements.class.getName() + "." + TEST_NAME);
OperationResult result = task.getResult();

// WHEN
TestUtil.displayWhen(TEST_NAME);
addObject(ROLE_THUG_FILE, task, result);

// THEN
TestUtil.displayThen(TEST_NAME);
result.computeStatus();
TestUtil.assertSuccess(result);

DummyGroup dummyGroupThug = dummyResourceOrange.getGroupByName(GROUP_THUG_NAME);
assertNotNull("No group on orange dummy resource", dummyGroupThug);
display("Group", dummyGroupThug);
assertNoGroupMembers(dummyGroupThug);

DummyGroup dummyGroupThugWannabe = dummyResourceOrange.getGroupByName(GROUP_THUG_NAME + "-wannabe");
assertNotNull("No wannabe group on orange dummy resource", dummyGroupThugWannabe);
display("Wannabe Group", dummyGroupThugWannabe);
assertNoGroupMembers(dummyGroupThugWannabe);
}

@Test
public void test310AssignRoleWimpToLargo() throws Exception {
final String TEST_NAME = "test310AssignRoleWimpToLargo";
Expand Down Expand Up @@ -406,13 +472,153 @@ public void test310AssignRoleWimpToLargo() throws Exception {
assertGroupMember(dummyGroupAtOrange, USER_LARGO_USERNAME);
}

@Test
public void test312AssignRoleBruteToLargo() throws Exception {
final String TEST_NAME = "test312AssignRoleBruteToLargo";
TestUtil.displayTestTile(this, TEST_NAME);

Task task = taskManager.createTaskInstance(TestEntitlements.class.getName() + "." + TEST_NAME);
OperationResult result = task.getResult();

// WHEN
TestUtil.displayWhen(TEST_NAME);
assignRole(USER_LARGO_OID, ROLE_BRUTE_OID, task, result);

// THEN
TestUtil.displayThen(TEST_NAME);
result.computeStatus();
TestUtil.assertSuccess(result);

DummyGroup dummyGroupBrute = dummyResourceOrange.getGroupByName(GROUP_BRUTE_NAME);
assertNotNull("No group on orange dummy resource", dummyGroupBrute);
display("Group", dummyGroupBrute);
// assertEquals("Wrong group description", GROUP_DUMMY_LANDLUBERS_DESCRIPTION,
// dummyGroup.getAttributeValue(DummyResourceContoller.DUMMY_GROUP_ATTRIBUTE_DESCRIPTION));
assertGroupMember(dummyGroupBrute, USER_LARGO_USERNAME);

DummyGroup dummyGroupBruteWannabe = dummyResourceOrange.getGroupByName(GROUP_BRUTE_NAME + "-wannabe");
assertNotNull("No wannabe group on orange dummy resource", dummyGroupBruteWannabe);
display("Wannabe Group", dummyGroupBruteWannabe);
assertGroupMember(dummyGroupBruteWannabe, USER_LARGO_USERNAME);
}

@Test
public void test313UnAssignRoleBruteFromLargo() throws Exception {
final String TEST_NAME = "test313UnAssignRoleBruteFromLargo";
TestUtil.displayTestTile(this, TEST_NAME);

Task task = taskManager.createTaskInstance(TestEntitlements.class.getName() + "." + TEST_NAME);
OperationResult result = task.getResult();

// WHEN
TestUtil.displayWhen(TEST_NAME);
unassignRole(USER_LARGO_OID, ROLE_BRUTE_OID, task, result);

// THEN
TestUtil.displayThen(TEST_NAME);
result.computeStatus();
TestUtil.assertSuccess(result);

DummyGroup dummyGroupBrute = dummyResourceOrange.getGroupByName(GROUP_BRUTE_NAME);
assertNotNull("No group on orange dummy resource", dummyGroupBrute);
display("Group", dummyGroupBrute);
assertNoGroupMembers(dummyGroupBrute);

DummyGroup dummyGroupBruteWannabe = dummyResourceOrange.getGroupByName(GROUP_BRUTE_NAME + "-wannabe");
assertNotNull("No wannabe group on orange dummy resource", dummyGroupBruteWannabe);
display("Wannabe Group", dummyGroupBruteWannabe);
assertNoGroupMembers(dummyGroupBruteWannabe);

DummyGroup dummyGroup = dummyResource.getGroupByName(GROUP_DUMMY_WIMPS_NAME);
assertNotNull("No group on dummy resource", dummyGroup);
display("Group", dummyGroup);
// assertEquals("Wrong group description", GROUP_DUMMY_LANDLUBERS_DESCRIPTION,
// dummyGroup.getAttributeValue(DummyResourceContoller.DUMMY_GROUP_ATTRIBUTE_DESCRIPTION));
assertGroupMember(dummyGroup, USER_LARGO_USERNAME);

DummyGroup dummyGroupAtOrange = dummyResourceOrange.getGroupByName(GROUP_DUMMY_WIMPS_NAME);
assertNotNull("No group on orange dummy resource", dummyGroupAtOrange);
display("Group @orange", dummyGroupAtOrange);
assertGroupMember(dummyGroupAtOrange, USER_LARGO_USERNAME);
}

@Test
public void test314AssignRoleThugToLargo() throws Exception {
final String TEST_NAME = "test314AssignRoleThugToLargo";
TestUtil.displayTestTile(this, TEST_NAME);

Task task = taskManager.createTaskInstance(TestEntitlements.class.getName() + "." + TEST_NAME);
OperationResult result = task.getResult();

// WHEN
TestUtil.displayWhen(TEST_NAME);
assignRole(USER_LARGO_OID, ROLE_THUG_OID, task, result);

// THEN
TestUtil.displayThen(TEST_NAME);
result.computeStatus();
TestUtil.assertSuccess(result);

DummyGroup dummyGroupThug = dummyResourceOrange.getGroupByName(GROUP_THUG_NAME);
assertNotNull("No group on orange dummy resource", dummyGroupThug);
display("Group", dummyGroupThug);
// assertEquals("Wrong group description", GROUP_DUMMY_LANDLUBERS_DESCRIPTION,
// dummyGroup.getAttributeValue(DummyResourceContoller.DUMMY_GROUP_ATTRIBUTE_DESCRIPTION));
assertGroupMember(dummyGroupThug, USER_LARGO_USERNAME);

DummyGroup dummyGroupThugWannabe = dummyResourceOrange.getGroupByName(GROUP_THUG_NAME + "-wannabe");
assertNotNull("No wannabe group on orange dummy resource", dummyGroupThugWannabe);
display("Wannabe Group", dummyGroupThugWannabe);
assertGroupMember(dummyGroupThugWannabe, USER_LARGO_USERNAME);
}

@Test
public void test315UnAssignRoleThugFromLargo() throws Exception {
final String TEST_NAME = "test315UnAssignRoleThugFromLargo";
TestUtil.displayTestTile(this, TEST_NAME);

Task task = taskManager.createTaskInstance(TestEntitlements.class.getName() + "." + TEST_NAME);
OperationResult result = task.getResult();

// WHEN
TestUtil.displayWhen(TEST_NAME);
unassignRole(USER_LARGO_OID, ROLE_THUG_OID, task, result);

// THEN
TestUtil.displayThen(TEST_NAME);
result.computeStatus();
TestUtil.assertSuccess(result);

DummyGroup dummyGroupThug = dummyResourceOrange.getGroupByName(GROUP_THUG_NAME);
assertNotNull("No group on orange dummy resource", dummyGroupThug);
display("Group", dummyGroupThug);
assertNoGroupMembers(dummyGroupThug);

DummyGroup dummyGroupThugWannabe = dummyResourceOrange.getGroupByName(GROUP_THUG_NAME + "-wannabe");
assertNotNull("No wannabe group on orange dummy resource", dummyGroupThugWannabe);
display("Wannabe Group", dummyGroupThugWannabe);
assertNoGroupMembers(dummyGroupThugWannabe);

DummyGroup dummyGroup = dummyResource.getGroupByName(GROUP_DUMMY_WIMPS_NAME);
assertNotNull("No group on dummy resource", dummyGroup);
display("Group", dummyGroup);
// assertEquals("Wrong group description", GROUP_DUMMY_LANDLUBERS_DESCRIPTION,
// dummyGroup.getAttributeValue(DummyResourceContoller.DUMMY_GROUP_ATTRIBUTE_DESCRIPTION));
assertGroupMember(dummyGroup, USER_LARGO_USERNAME);

DummyGroup dummyGroupAtOrange = dummyResourceOrange.getGroupByName(GROUP_DUMMY_WIMPS_NAME);
assertNotNull("No group on orange dummy resource", dummyGroupAtOrange);
display("Group @orange", dummyGroupAtOrange);
assertGroupMember(dummyGroupAtOrange, USER_LARGO_USERNAME);
}

/**
* after renaming user largo it should be also propagated to the associations
* @throws Exception
*/
@Test
public void test311RenameLargo() throws Exception {
final String TEST_NAME = "test311RenameLargo";
public void test317RenameLargo() throws Exception {
final String TEST_NAME = "test317RenameLargo";
TestUtil.displayTestTile(this, TEST_NAME);

Task task = taskManager.createTaskInstance(TestEntitlements.class.getName() + "." + TEST_NAME);
Expand Down
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ Copyright (c) 2010-2014 Evolveum
~ Copyright (c) 2010-2016 Evolveum
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
Expand Down Expand Up @@ -376,6 +376,7 @@
</outbound>
<kind>entitlement</kind>
<intent>group</intent>
<intent>group-wannabe</intent>
<direction>objectToSubject</direction>
<associationAttribute>ri:members</associationAttribute>
<valueAttribute>icfs:name</valueAttribute>
Expand Down Expand Up @@ -459,6 +460,45 @@
</attribute>
</objectType>

<objectType>
<kind>entitlement</kind>
<intent>group-wannabe</intent>
<default>false</default>
<objectClass>ri:GroupObjectClass</objectClass>
<attribute>
<ref>icfs:name</ref>
<displayName>Groupname</displayName>
<exclusiveStrong>true</exclusiveStrong>
<outbound>
<source>
<path>name</path>
</source>
<expression>
<script>
<code>name.getNorm() + '-wannabe'</code>
</script>
</expression>
</outbound>
</attribute>
<attribute>
<ref>ri:description</ref>
<outbound>
<source>
<path>$focus/description</path>
</source>
</outbound>
</attribute>
<attribute>
<ref>ri:cc</ref>
<outbound>
<strength>weak</strength>
<expression>
<value>WANNABE</value>
</expression>
</outbound>
</attribute>
</objectType>

<objectType>
<kind>entitlement</kind>
<intent>privilege</intent>
Expand Down
80 changes: 80 additions & 0 deletions model/model-intest/src/test/resources/entitlements/role-brute.xml
@@ -0,0 +1,80 @@
<!--
~ 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.
-->
<role oid="10000000-0000-0000-0000-000000001606"
xmlns="http://midpoint.evolveum.com/xml/ns/public/common/common-3"
xmlns:c="http://midpoint.evolveum.com/xml/ns/public/common/common-3"
xmlns:t="http://prism.evolveum.com/xml/ns/public/types-3"
xmlns:ri="http://midpoint.evolveum.com/xml/ns/public/resource/instance/10000000-0000-0000-0000-000000000004"
xmlns:riOrange="http://midpoint.evolveum.com/xml/ns/public/resource/instance-3"
xmlns:icfs="http://midpoint.evolveum.com/xml/ns/public/connector/icf-1/resource-schema-3"
xmlns:piracy="http://midpoint.evolveum.com/xml/ns/samples/piracy">
<name>Brute</name>
<assignment>
<construction>
<resourceRef oid="10000000-0000-0000-0000-000000001104" type="c:ResourceType"/>
<kind>entitlement</kind>
<intent>group</intent>
</construction>
</assignment>
<assignment>
<construction>
<resourceRef oid="10000000-0000-0000-0000-000000001104" type="c:ResourceType"/>
<kind>entitlement</kind>
<intent>group-wannabe</intent>
</construction>
</assignment>
<inducement>
<construction>
<resourceRef oid="10000000-0000-0000-0000-000000001104" type="c:ResourceType"/>
<kind>account</kind>
<intent>default</intent>
<association>
<ref>riOrange:group</ref>
<outbound>
<expression>
<associationFromLink>
<projectionDiscriminator>
<kind>entitlement</kind>
<intent>group</intent>
</projectionDiscriminator>
</associationFromLink>
</expression>
</outbound>
</association>
</construction>
</inducement>
<inducement>
<construction>
<resourceRef oid="10000000-0000-0000-0000-000000001104" type="c:ResourceType"/>
<kind>account</kind>
<intent>default</intent>
<association>
<ref>riOrange:group</ref>
<outbound>
<expression>
<associationFromLink>
<projectionDiscriminator>
<kind>entitlement</kind>
<intent>group-wannabe</intent>
</projectionDiscriminator>
</associationFromLink>
</expression>
</outbound>
</association>
</construction>
</inducement>
<requestable>true</requestable>
</role>

0 comments on commit 1b79732

Please sign in to comment.