/* * The Kuali Financial System, a comprehensive financial management system for higher education. * * Copyright 2005-2014 The Kuali Foundation * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package org.kuali.kfs.module.ar.identity; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.kuali.kfs.sys.ConfigureContext; import org.kuali.kfs.sys.KFSPropertyConstants; import org.kuali.kfs.sys.context.KualiTestBase; import org.kuali.kfs.sys.context.SpringContext; import org.kuali.rice.kim.api.role.RoleService; import org.kuali.rice.kim.api.services.IdentityManagementService; import org.kuali.rice.kim.api.services.KimApiServiceLocator; @ConfigureContext public class AccountsReceivableProcessingOrganizationRoleTypeServiceImplTest extends KualiTestBase { protected static final String AR_NAMESPACE = "KFS-AR"; protected static final String AR_BILLER_ROLE = "Biller"; protected static final String AR_PROCESSOR_ROLE = "Processor"; // test data set 1 protected static final String AR_DOC_USER = "besnead"; // user with KFS-SYS User role for org BA-MOTR protected static final String AR_DOC_CHART = "BA"; protected static final String AR_DOC_ORG = "MOTR"; protected static final String AR_DOC_PROCESSING_CHART = "UA"; protected static final String AR_DOC_PROCESSING_ORG = "AR"; // test data set 2 protected static final String AR_DOC_USER_2 = "rginn"; // user with KFS-SYS User role for org IN-ACCT protected static final String AR_DOC_CHART_2 = "IN"; protected static final String AR_DOC_ORG_2 = "LART"; protected static final String AR_DOC_PROCESSING_CHART_2 = "IN"; protected static final String AR_DOC_PROCESSING_ORG_2 = "ACCT"; private static RoleService roleManagementService; private String arUserPrincipalId; private String arUserPrincipalId2; @Override protected void setUp() throws Exception { super.setUp(); } protected Map<String,String> buildDocQualifier() { Map<String,String> qualification = new HashMap<String,String>(); qualification.put(KFSPropertyConstants.CHART_OF_ACCOUNTS_CODE, AR_DOC_CHART ); qualification.put(KFSPropertyConstants.ORGANIZATION_CODE, AR_DOC_ORG ); return qualification; } protected Map<String,String> buildDocQualifier_2() { Map<String,String> qualification = new HashMap<String,String>(); qualification.put(KFSPropertyConstants.CHART_OF_ACCOUNTS_CODE, AR_DOC_CHART_2 ); qualification.put(KFSPropertyConstants.ORGANIZATION_CODE, AR_DOC_ORG_2 ); return qualification; } protected String getArUserPrincipalId() { if ( arUserPrincipalId == null ) { arUserPrincipalId = SpringContext.getBean(IdentityManagementService.class).getPrincipalByPrincipalName(AR_DOC_USER).getPrincipalId(); } return arUserPrincipalId; } protected String getArUserPrincipalId_2() { if ( arUserPrincipalId2 == null ) { arUserPrincipalId2 = SpringContext.getBean(IdentityManagementService.class).getPrincipalByPrincipalName(AR_DOC_USER_2).getPrincipalId(); } return arUserPrincipalId2; } //TODO Andrew 2/5/2009 - Commented out this whole test, as the roleTypeService now explicitly // returns exactly what was passed in, which is the exact opposite of what this test was // testing. So something upstream changed, and this test is no longer relevant. I'm leaving // it in in case we ever need to quickly recover this test case. // public void testConvertQualificationForMemberRoles() { // AccountsReceivableOrganizationDerivedRoleTypeServiceImpl roleTypeService = // new AccountsReceivableOrganizationDerivedRoleTypeServiceImpl(); // roleTypeService.setBusinessObjectService(SpringContext.getBean(BusinessObjectService.class)); // Map<String,String> qualification = buildDocQualifier(); // Map<String,String> result = roleTypeService.convertQualificationForMemberRoles(AR_NAMESPACE, AR_PROCESSOR_ROLE, null, null, qualification); // assertNotSame( "should not have returned the same object", qualification, result ); // assertEquals( "charts did not match", AR_DOC_PROCESSING_CHART, result.get(KFSPropertyConstants.CHART_OF_ACCOUNTS_CODE )); // assertEquals( "orgs did not match", AR_DOC_PROCESSING_ORG, result.get(KFSPropertyConstants.ORGANIZATION_CODE)); // } public void testPrincipalHasRole_Data1() { List<String> tempRoleIdList = new ArrayList<String>( 1 ); // qualification passed for an AR document for the BA-MOTR organization Map<String,String> qualification = buildDocQualifier(); // find the AR Biller Role String billerRoleId = getRoleService().getRoleIdByNamespaceCodeAndName(AR_NAMESPACE, AR_BILLER_ROLE); assertNotNull("unable to find biller role", billerRoleId); tempRoleIdList.add( billerRoleId ); boolean result = getRoleService().principalHasRole(getArUserPrincipalId(), tempRoleIdList, qualification); assertTrue( "exact match on billing org should have passed", result ); // find the AR Processor Role String processorRoleId = getRoleService().getRoleIdByNamespaceCodeAndName(AR_NAMESPACE, AR_PROCESSOR_ROLE); assertNotNull("unable to find processor role", processorRoleId); tempRoleIdList.clear(); tempRoleIdList.add( processorRoleId ); result = getRoleService().principalHasRole(getArUserPrincipalId(), tempRoleIdList, qualification); assertFalse( "test on main user for processing org should have failed - does not have processing org on KFS-SYS User role", result ); } public void testPrincipalHasRole_Data2() { List<String> tempRoleIdList = new ArrayList<String>( 1 ); // qualification passed for an AR document for the BA-MOTR organization Map<String,String> qualification = buildDocQualifier_2(); // find the AR Biller Role String billerRoleId = getRoleService().getRoleIdByNamespaceCodeAndName(AR_NAMESPACE, AR_BILLER_ROLE); assertNotNull("unable to find biller role", billerRoleId); tempRoleIdList.add( billerRoleId ); boolean result = getRoleService().principalHasRole(getArUserPrincipalId_2(), tempRoleIdList, qualification); assertTrue( "exact match on billing org should have passed - user has processing org, not billing org, but all processors are also billers", result ); // find the AR Processor Role String processorRoleId = getRoleService().getRoleIdByNamespaceCodeAndName(AR_NAMESPACE, AR_PROCESSOR_ROLE); assertNotNull("unable to find processor role", processorRoleId); tempRoleIdList.clear(); tempRoleIdList.add( processorRoleId ); result = getRoleService().principalHasRole(getArUserPrincipalId_2(), tempRoleIdList, qualification); assertTrue( "principalHasRole test for processor role should have passed - user has processing org on KFS-SYS User role", result ); } /** * @return the roleService */ public RoleService getRoleService() { if (roleManagementService == null ) { roleManagementService = KimApiServiceLocator.getRoleService(); } return roleManagementService; } }