001package org.apache.turbine.services.velocity;
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
024import static org.junit.Assert.assertEquals;
025import static org.junit.Assert.assertNotNull;
026
027import org.apache.commons.collections.ExtendedProperties;
028import org.apache.commons.configuration.Configuration;
029import org.apache.turbine.Turbine;
030import org.apache.turbine.services.TurbineServices;
031import org.apache.turbine.test.BaseTestCase;
032import org.apache.turbine.util.TurbineConfig;
033import org.junit.AfterClass;
034import org.junit.BeforeClass;
035import org.junit.Test;
036
037/**
038 * Tests startup of the Velocity Service and translation of various
039 * path patterns.
040 *
041 * @author <a href="hps@intermeta.de">Henning P. Schmiedehausen</a>
042 * @version $Id: PathConverterTest.java 1606111 2014-06-27 14:46:47Z gk $
043 */
044
045public class PathConverterTest
046    extends BaseTestCase
047{
048    private static TurbineConfig tc = null;
049    private static VelocityService vs = null;
050    private static String fileSeperator = System.getProperty("file.separator");
051
052    
053    @BeforeClass
054    public static void setUp() throws Exception {
055        tc = new TurbineConfig(".", "/conf/test/TemplateService.properties");
056        tc.initialize();
057
058        vs = (VelocityService) TurbineServices.getInstance().getService(VelocityService.SERVICE_NAME);
059    }
060
061    @AfterClass
062    public static void destroy() throws Exception {
063        vs.shutdown();
064        tc.dispose();
065    }
066
067    @Test public void testService()
068        throws Exception
069    {
070
071        // Can we start the service?
072        assertNotNull("Could not load Service!", vs);
073    }
074
075    @Test
076    public void testPathTranslation()
077        throws Exception
078    {
079        Configuration conf = vs.getConfiguration();
080        ExtendedProperties ep = ((TurbineVelocityService) vs).createVelocityProperties(conf);
081
082        String rootPath = Turbine.getRealPath("");
083
084        String [] test1 = ep.getStringArray("test1.resource.loader.path");
085        assertEquals("No Test1 Property found", 1, test1.length);
086        assertEquals("Test1 Path translation failed", rootPath
087                +fileSeperator+"relative"+fileSeperator+"path" , test1[0]);
088
089        String [] test2 = ep.getStringArray("test2.resource.loader.path");
090        assertEquals("No Test2 Property found", 1, test2.length);
091        assertEquals("Test2 Path translation failed", rootPath
092                +fileSeperator+"absolute"+fileSeperator+"path" , test2[0]);
093
094        String [] test3 = ep.getStringArray("test3.resource.loader.path");
095        assertEquals("No Test3 Property found", 1, test2.length);
096        assertEquals("Test3 Path translation failed", rootPath
097                +fileSeperator+"jar-file.jar!/", test3[0]);
098
099        String [] test4 = ep.getStringArray("test4.resource.loader.path");
100        assertEquals("No Test4 Property found", 1, test4.length);
101        assertEquals("Test4 Path translation failed", rootPath
102                +fileSeperator+"jar-file.jar!/with/some/extensions" , test4[0]);
103
104        String [] test5 = ep.getStringArray("test5.resource.loader.path");
105        assertEquals("No Test5 Property found", 1, test5.length);
106        assertEquals("Test5 Path translation failed", rootPath
107                +fileSeperator+"jar-file.jar" , test5[0]);
108
109        String [] test6 = ep.getStringArray("test6.resource.loader.path");
110        assertEquals("No Test6 Property found", 1, test6.length);
111        assertEquals("Test6 Path translation failed", "jar:http://jar.on.website/" , test6[0]);
112
113        String [] test7 = ep.getStringArray("test7.resource.loader.path");
114        assertEquals("No Test7 Property found", 1, test7.length);
115        assertEquals("Test7 Path translation failed", rootPath
116                +fileSeperator+"file"+fileSeperator
117                +"system"+fileSeperator+"reference" , test7[0]);
118
119        String [] test8 = ep.getStringArray("test8.resource.loader.path");
120        assertEquals("No Test8 Property found", 1, test8.length);
121        assertEquals("Test8 Path translation failed", "http://reference.on.website/" , test8[0]);
122
123    }
124}