001/** 002 * Copyright 2005-2014 The Kuali Foundation 003 * 004 * Licensed under the Educational Community License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.opensource.org/licenses/ecl2.php 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016package org.kuali.rice.kim.test.service; 017 018import java.util.Collections; 019import java.util.HashMap; 020import java.util.List; 021import java.util.Map; 022 023import org.junit.Test; 024import org.kuali.rice.kim.api.common.attribute.KimAttribute; 025import org.kuali.rice.kim.api.group.Group; 026import org.kuali.rice.kim.api.services.KimApiServiceLocator; 027import org.kuali.rice.kim.api.type.KimType; 028import org.kuali.rice.kim.api.type.KimTypeAttribute; 029import org.kuali.rice.kim.impl.common.attribute.KimAttributeBo; 030import org.kuali.rice.kim.impl.type.KimTypeAttributeBo; 031import org.kuali.rice.kim.impl.type.KimTypeBo; 032import org.kuali.rice.kim.test.KIMTestCase; 033import org.kuali.rice.krad.service.KRADServiceLocator; 034import org.kuali.rice.test.BaselineTestCase; 035 036import static org.junit.Assert.*; 037 038/** 039 * Unit test for {@link org.kuali.rice.kim.api.group.GroupService} 040 * 041 * @author Kuali Rice Team (rice.collab@kuali.org) 042 * 043 */ 044@BaselineTestCase.BaselineMode(BaselineTestCase.Mode.NONE) 045public class GroupUpdateServiceApiCustomTest extends KIMTestCase { 046 047 private static final String NAMESPACE = "KUALI"; 048 private static final String KIM_ATTRIBUTE_ID = "KS-KRIM-ATTR-DEFN-1003"; 049 private static final String KIM_ATTRIBUTE_LABEL = "Hold Authorization Org Id"; 050 private static final String KIM_ATTRIBUTE_NAME = "org.kuali.student.hold.authorization.orgId"; 051 private static final String KIM_ATTRIBUTE_VALUE = "ORGID-128487550"; 052 private static final String KIM_ATTRIBUTE_COMPONENT_NAME = "org.kuali.rice.student.bo.KualiStudentKimAttributes"; 053 private static final String KIM_TYPE_ID = "KS-KRIM-TYP-1011"; 054 private static final String KIM_TYPE_NAME = "KS Hold Org Authorization Group Type"; 055 private static final String KIM_TYPE_SERVICE_NAME = "kimGroupTypeService"; 056 private static final String KIM_TYPE_ATTRIBUTE_ID = "KS-KRIM-TYP-ATTR-1027"; 057 private static final String GROUP_NAME = "gAwAttrs"; 058 059 @Test 060 public void testCreateGroupWithCustomKimTypeAttributes() { 061 // This test needs to be run in separate test class 062 // with @BaselineTestCase.BaselineMode(BaselineTestCase.Mode.NONE) 063 KimAttribute.Builder kimAttribute = KimAttribute.Builder.create(KIM_ATTRIBUTE_COMPONENT_NAME, 064 KIM_ATTRIBUTE_NAME, NAMESPACE); 065 kimAttribute.setAttributeLabel(KIM_ATTRIBUTE_LABEL); 066 kimAttribute.setId(KIM_ATTRIBUTE_ID); 067 kimAttribute.setActive(true); 068 KimAttributeBo kimAddrBo = KRADServiceLocator.getDataObjectService().save(KimAttributeBo.from(kimAttribute.build())); 069 070 KimType.Builder kimTypeBuilder = KimType.Builder.create(); 071 kimTypeBuilder.setId(KIM_TYPE_ID); 072 kimTypeBuilder.setName(KIM_TYPE_NAME); 073 kimTypeBuilder.setNamespaceCode(NAMESPACE); 074 kimTypeBuilder.setServiceName(KIM_TYPE_SERVICE_NAME); 075 kimTypeBuilder.setActive(true); 076 KimTypeBo kimTypeBo = KRADServiceLocator.getDataObjectService().save(KimTypeBo.from(kimTypeBuilder.build())); 077 078 KimTypeAttribute.Builder kimTypeAttributeBuilder = KimTypeAttribute.Builder.create(); 079 kimTypeAttributeBuilder.setId(KIM_TYPE_ATTRIBUTE_ID); 080 kimTypeAttributeBuilder.setActive(true); 081 kimTypeAttributeBuilder.setSortCode("a"); 082 kimTypeAttributeBuilder.setKimTypeId(KIM_TYPE_ID); 083 kimTypeAttributeBuilder.setKimAttribute(kimAttribute); 084 KimTypeAttributeBo kimTypeAttrBo = KRADServiceLocator.getDataObjectService().save(KimTypeAttributeBo.from(kimTypeAttributeBuilder.build())); 085 086 kimTypeBuilder = KimType.Builder.create(KimApiServiceLocator.getKimTypeInfoService().getKimType(KIM_TYPE_ID)); 087 kimTypeAttributeBuilder = KimTypeAttribute.Builder.create(kimTypeAttrBo); 088 List<KimTypeAttribute.Builder> attrList = Collections.singletonList(kimTypeAttributeBuilder); 089 kimTypeBuilder.setAttributeDefinitions(attrList); 090 091 kimTypeBo = KRADServiceLocator.getDataObjectService().save(KimTypeBo.from(kimTypeBuilder.build())); 092 KRADServiceLocator.getDataObjectService().flush(KimTypeBo.class); 093 094 Map<String, String> attributes = new HashMap<String, String>(); 095 attributes.put(KIM_ATTRIBUTE_NAME, KIM_ATTRIBUTE_VALUE); 096 097 Group.Builder groupInfo = Group.Builder.create(NAMESPACE, GROUP_NAME, KIM_TYPE_ID); 098 groupInfo.setAttributes(attributes); 099 groupInfo.setActive(true); 100 groupInfo.setDescription(KIM_ATTRIBUTE_LABEL + " " + KIM_ATTRIBUTE_VALUE); 101 Group group = KimApiServiceLocator.getGroupService().createGroup(groupInfo.build()); 102 103 Group result = KimApiServiceLocator.getGroupService().getGroupByNamespaceCodeAndName(NAMESPACE, GROUP_NAME); 104 assertEquals(groupInfo.isActive(), result.isActive()); 105 assertTrue(groupInfo.getNamespaceCode().equals(result.getNamespaceCode())); 106 assertTrue(groupInfo.getName().equals(result.getName())); 107 assertTrue(groupInfo.getKimTypeId().equals(result.getKimTypeId())); 108 assertEquals(1, result.getAttributes().size()); 109 assertTrue(result.getAttributes().get(KIM_ATTRIBUTE_NAME).contains(KIM_ATTRIBUTE_VALUE)); 110 } 111}