001package org.apache.turbine.services.pull.tools; 002 003/* 004 * Licensed to the Apache Software Foundation (ASF) under one 005 * or more contributor license agreements. See the NOTICE file 006 * distributed with this work for additional information 007 * regarding copyright ownership. The ASF licenses this file 008 * to you under the Apache License, Version 2.0 (the 009 * "License"); you may not use this file except in compliance 010 * with the License. You may obtain a copy of the License at 011 * 012 * http://www.apache.org/licenses/LICENSE-2.0 013 * 014 * Unless required by applicable law or agreed to in writing, 015 * software distributed under the License is distributed on an 016 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 017 * KIND, either express or implied. See the License for the 018 * specific language governing permissions and limitations 019 * under the License. 020 */ 021 022 023import static org.junit.Assert.assertEquals; 024import static org.junit.Assert.assertNotNull; 025import static org.junit.Assert.assertTrue; 026 027import java.util.HashMap; 028import java.util.Map; 029 030import org.apache.commons.lang.ArrayUtils; 031import org.apache.turbine.TurbineConstants; 032import org.apache.turbine.services.jsonrpc.JsonrpcServicelTest; 033import org.apache.turbine.services.pull.PullService; 034import org.apache.turbine.services.pull.TurbinePull; 035import org.apache.turbine.test.BaseTestCase; 036import org.apache.turbine.util.TurbineConfig; 037import org.apache.velocity.context.Context; 038import org.junit.AfterClass; 039import org.junit.BeforeClass; 040import org.junit.Test; 041import org.junit.runner.RunWith; 042import org.junit.runners.Suite; 043 044@RunWith(Suite.class) 045@Suite.SuiteClasses({ 046 JsonrpcServicelTest.class 047 }) 048public class UIToolTest 049 extends BaseTestCase 050{ 051 052 private static TurbineConfig turbineConfig = null; 053 private static PullService pullService = null; 054 private static UITool ui = null; 055 056 057 @BeforeClass 058 public static void setUp() throws Exception { 059 060 061 Map<String, String> initParams = new HashMap<String, String>(); 062 initParams.put(TurbineConfig.PROPERTIES_PATH_KEY, "/conf/test/CompleteTurbineResources.properties"); // "conf/test/TurbineResources.properties" 063 initParams.put(TurbineConstants.LOGGING_ROOT_KEY, "target/test-logs"); 064 065 turbineConfig = new TurbineConfig(".", initParams); 066 turbineConfig.initialize(); 067 068 //pullService = (PullService)TurbineServices.getInstance().getService(PullService.SERVICE_NAME); 069 pullService = TurbinePull.getService(); 070 assertNotNull(pullService); 071 Context globalContext = pullService.getGlobalContext(); 072 assertNotNull(globalContext); 073 074 ui = (UITool) globalContext.get("ui"); 075 } 076 077 @AfterClass 078 public static void destroy() throws Exception { 079 turbineConfig.dispose(); 080 ui=null; 081 } 082 083 @Test 084 public void testTool() 085 { 086 assertNotNull(ui); 087 } 088 089 @Test 090 public void testCssSlashes() 091 { 092 093 ui.setSkin("myskin"); 094 095 String cssUrl = ui.getStylecss(); 096 assertEquals("CSS URL does not match", "http:///conf/test/turbine-resources/turbine-skins/myskin/skins.css", cssUrl); 097 } 098 099 @Test 100 public void testImageSlashes() 101 { 102 ui.setSkin("myskin"); 103 104 String img = "myimage.gif"; 105 106 String imgUrl = ui.image(img); 107 assertEquals("CSS URL does not match", "http:///conf/test/turbine-resources/turbine-skins/myskin/turbine-images/" + img, imgUrl); 108 109 String img2 = "foo/myimage.gif"; 110 111 String imgUrl2 = ui.image(img2); 112 assertEquals("CSS URL does not match", "http:///conf/test/turbine-resources/turbine-skins/myskin/turbine-images/" + img2, imgUrl2); 113 114 String img3 = "/foo/myimage.gif"; 115 116 String imgUrl3 = ui.image(img3); 117 assertEquals("CSS URL does not match", "http:///conf/test/turbine-resources/turbine-skins/myskin/turbine-images" + img3, imgUrl3); 118 } 119 @Test 120 public void testPathologicalCases() 121 { 122 ui.setSkin("myskin"); 123 124 String img = ""; 125 String imgUrl = ui.image(img); 126 assertEquals("Could not strip empty String", "http:///conf/test/turbine-resources/turbine-skins/myskin/turbine-images/", imgUrl); 127 128 img = "/"; 129 imgUrl = ui.image(img); 130 assertEquals("Could not strip single Slash", "http:///conf/test/turbine-resources/turbine-skins/myskin/turbine-images/", imgUrl); 131 132 img = "//"; 133 imgUrl = ui.image(img); 134 assertEquals("Could not strip double Slash", "http:///conf/test/turbine-resources/turbine-skins/myskin/turbine-images/", imgUrl); 135 } 136 @Test 137 public void testGetSkinNames() 138 { 139 140 String[] skinNames = ui.getSkinNames(); 141 // Remove the ".svn" dir that may be present. 142 skinNames = (String[]) ArrayUtils.removeElement(skinNames, ".svn"); 143 assertEquals(2, skinNames.length); 144 145 assertTrue(ArrayUtils.contains(skinNames, "myotherskin")); 146 assertTrue(ArrayUtils.contains(skinNames, "myskin")); 147 } 148 @Test 149 public void testSkinValues() 150 { 151 152 // Default skin 153 //skin_property_1 = skin_property_1_my_skin 154 assertEquals("skin_property_1_my_skin", ui.get("skin_property_1")); 155 156 ui.setSkin("myotherskin"); 157 //skin_property_1 = skin_property_1_my_other_skin 158 assertEquals("skin_property_1_my_other_skin", ui.get("skin_property_1")); 159 } 160}