001    package org.apache.turbine.services.security;
002    
003    
004    /*
005     * Licensed to the Apache Software Foundation (ASF) under one
006     * or more contributor license agreements.  See the NOTICE file
007     * distributed with this work for additional information
008     * regarding copyright ownership.  The ASF licenses this file
009     * to you under the Apache License, Version 2.0 (the
010     * "License"); you may not use this file except in compliance
011     * with the License.  You may obtain a copy of the License at
012     *
013     *   http://www.apache.org/licenses/LICENSE-2.0
014     *
015     * Unless required by applicable law or agreed to in writing,
016     * software distributed under the License is distributed on an
017     * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
018     * KIND, either express or implied.  See the License for the
019     * specific language governing permissions and limitations
020     * under the License.
021     */
022    
023    
024    import java.util.HashMap;
025    import java.util.Map;
026    
027    import org.apache.commons.configuration.BaseConfiguration;
028    import org.apache.commons.configuration.Configuration;
029    
030    import org.apache.turbine.services.ServiceManager;
031    import org.apache.turbine.services.TurbineServices;
032    import org.apache.turbine.services.security.SecurityService;
033    import org.apache.turbine.test.BaseTestCase;
034    import org.apache.turbine.test.MockSecurityService;
035    import org.apache.turbine.util.TurbineConfig;
036    import org.apache.turbine.util.security.AccessControlList;
037    import org.apache.turbine.util.security.TurbineAccessControlList;
038    
039    public class AccessControlListTest
040        extends BaseTestCase
041    {
042    
043            private static TurbineConfig tc = null;
044        private static final String PREFIX = "services." +
045            SecurityService.SERVICE_NAME + '.';
046    
047        public AccessControlListTest( String name )
048                throws Exception
049        {
050            super(name);
051        }
052    
053        public void setUp() throws Exception
054        {
055            tc = new TurbineConfig(".", "/conf/test/TestFulcrumComponents.properties");
056            tc.initialize();
057        }
058        public void tearDown() throws Exception
059        {
060            if (tc != null)
061            {
062                tc.dispose();
063            }
064        }
065    
066        public void testSelection() throws Exception
067        {
068              ServiceManager serviceManager = TurbineServices.getInstance();
069              serviceManager.setApplicationRoot(".");
070    
071              Configuration cfg = new BaseConfiguration();
072    
073              cfg.setProperty(PREFIX + "classname",
074                              MockSecurityService.class.getName());
075    
076              cfg.setProperty(PREFIX + "acl.class",
077                              TurbineAccessControlList.class.getName());
078    
079              // We must run init!
080              cfg.setProperty(PREFIX+"earlyInit", "true");
081    
082              /* Ugh */
083    
084     //         cfg.setProperty("services." + FactoryService.SERVICE_NAME + ".classname",
085       //                       TurbineFactoryService.class.getName());
086    
087              serviceManager.setConfiguration(cfg);
088    
089              serviceManager.init();
090    
091              Class aclClass = TurbineSecurity.getService().getAclClass();
092    
093              if(!aclClass.getName().equals(TurbineAccessControlList.class.getName()))
094              {
095                  fail("ACL Class is " + aclClass.getName()
096                       + ", expected was " + TurbineAccessControlList.class.getName());
097              }
098    
099              Map roles = new HashMap();
100              Map permissions = new HashMap();
101    
102              AccessControlList aclTest =
103                TurbineSecurity.getService().getAclInstance(roles, permissions);
104    
105              if(aclTest == null)
106              {
107                fail("Security Service failed to deliver a " + aclClass.getName()
108                     + " Object");
109              }
110       }
111    
112    
113    }