001    /**
002     * Copyright 2005-2011 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     */
016    package org.kuali.rice.kim.service;
017    
018    import org.junit.Test;
019    import org.kuali.rice.kim.api.KimConstants;
020    import org.kuali.rice.kim.api.services.KimApiServiceLocator;
021    import org.kuali.rice.kim.api.type.KimType;
022    import org.kuali.rice.kim.framework.services.KimFrameworkServiceLocator;
023    import org.kuali.rice.kim.framework.type.KimTypeService;
024    import org.kuali.rice.kim.test.KIMTestCase;
025    import org.kuali.rice.kns.kim.type.DataDictionaryTypeServiceBase;
026    
027    import javax.xml.namespace.QName;
028    
029    import static org.junit.Assert.*;
030    
031    /**
032     * Tests the {@link org.kuali.rice.kim.impl.services.KimImplServiceLocator} class.
033     * 
034     * @author Kuali Rice Team (rice.collab@kuali.org)
035     *
036     */
037    public class KIMServiceLocatorInternalTest extends KIMTestCase {
038    
039            @Test
040            public void testGetKimTypeService_KimType() {
041                    
042                    // test by passing null
043                    try {
044                        KimTypeService typeService1 = KimFrameworkServiceLocator.getKimTypeService((KimType) null);
045                assertTrue("should have thrown exception and never got here", false);
046            } catch (IllegalArgumentException e) {
047            }
048                    
049                    // test by passing a KimType with a null service name
050                    
051                    KimType.Builder nullKimType = KimType.Builder.create();
052                    nullKimType.setServiceName(null);
053                    KimTypeService typeService2 = KimFrameworkServiceLocator.getKimTypeService(nullKimType.build());
054                    assertNotNull("type service shoudl have been found", typeService2);
055                    assertEquals("should be the default kim type", DataDictionaryTypeServiceBase.class, typeService2.getClass());
056                    
057                    // test by passing a KimType with an empty service name
058                    
059                    KimType.Builder emptyKimType = KimType.Builder.create();
060                    nullKimType.setServiceName("");
061                    KimTypeService typeService3 = KimFrameworkServiceLocator.getKimTypeService(emptyKimType.build());
062                    assertNotNull("type service should have been found", typeService3);
063                    assertEquals("should be the default kim type", DataDictionaryTypeServiceBase.class, typeService3.getClass());
064                    
065                    // test by passing a KimType that refers to the Permission TypeService
066                    
067                    KimType permissionKimType = KimApiServiceLocator.getKimTypeInfoService().findKimTypeByNameAndNamespace(
068                    KimConstants.NAMESPACE_CODE, "Permission");
069                    assertNotNull("The KR-IDM:Permission KimType should exist.", permissionKimType);
070                    
071                    KimTypeService typeService4 = KimFrameworkServiceLocator.getKimTypeService(permissionKimType);
072                    assertNotNull("type service should have been found", typeService4);
073                    
074            }
075            
076            @Test
077            public void testGetKimTypeService_QName() {
078                    
079                    // test by passing null
080                    
081                    try {
082                            KimFrameworkServiceLocator.getKimTypeService((QName) null);
083                            fail("getKimTypeService with a null QName should have thrown an IllegalArgumentException");
084                    } catch (IllegalArgumentException e) {}
085                    
086                    // test by passing an invalid QName
087                    
088                    KimTypeService typeService1 = KimFrameworkServiceLocator.getKimTypeService(new QName("badNamespace", "badServiceName"));
089                    assertNull("A null KimTypeService should have been returned.", typeService1);
090                    
091                    // test by passing a QName for a valid service, but not one which is a KimTypeService, null should be returned
092                    
093                    // fetch the group service instead
094                    KimTypeService typeService2 = KimFrameworkServiceLocator.getKimTypeService(new QName(KimApiServiceLocator.KIM_GROUP_SERVICE));
095                    assertNull("A null KimTypeService should have been returned.", typeService2);
096    
097                    // test by passing the QName for the Permission TypeService
098                    
099                    QName permissionServiceName = new QName("permissionPermissionTypeService");
100                    KimTypeService typeService3 = KimFrameworkServiceLocator.getKimTypeService(permissionServiceName);
101                    assertNotNull("permission type service should have been found", typeService3);
102                    
103            }
104            
105    }