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 022import static org.junit.Assert.assertEquals; 023import static org.junit.Assert.assertNotNull; 024import static org.junit.Assert.assertTrue; 025 026import java.util.HashMap; 027import java.util.Map; 028 029import org.apache.commons.lang3.ArrayUtils; 030import org.apache.turbine.TurbineConstants; 031import org.apache.turbine.services.TurbineServices; 032import org.apache.turbine.services.jsonrpc.JsonrpcServicelTest; 033import org.apache.turbine.services.pull.PullService; 034import org.apache.turbine.test.BaseTestCase; 035import org.apache.turbine.util.TurbineConfig; 036import org.apache.velocity.context.Context; 037import org.junit.AfterClass; 038import org.junit.BeforeClass; 039import org.junit.Test; 040import org.junit.runner.RunWith; 041import org.junit.runners.Suite; 042 043@RunWith(Suite.class) 044@Suite.SuiteClasses({ JsonrpcServicelTest.class }) 045public class UIToolTest extends BaseTestCase 046{ 047 048 private static TurbineConfig turbineConfig = null; 049 private static PullService pullService = null; 050 private static UITool ui = null; 051 052 @BeforeClass 053 public static void setUp() throws Exception 054 { 055 Map<String, String> initParams = new HashMap<>(); 056 initParams.put(TurbineConfig.PROPERTIES_PATH_KEY, "/conf/test/CompleteTurbineResources.properties"); // "conf/test/TurbineResources.properties" 057 initParams.put(TurbineConstants.LOGGING_ROOT_KEY, "target/test-logs"); 058 059 turbineConfig = new TurbineConfig(".", initParams); 060 turbineConfig.initialize(); 061 062 pullService = (PullService)TurbineServices.getInstance().getService(PullService.SERVICE_NAME); 063 assertNotNull(pullService); 064 Context globalContext = pullService.getGlobalContext(); 065 assertNotNull(globalContext); 066 067 ui = (UITool) globalContext.get("ui"); 068 } 069 070 @AfterClass 071 public static void destroy() throws Exception 072 { 073 turbineConfig.dispose(); 074 ui = null; 075 } 076 077 @Test 078 public void testTool() 079 { 080 assertNotNull(ui); 081 } 082 083 @Test 084 public void testCssSlashes() 085 { 086 087 ui.setSkin("myskin"); 088 089 String cssUrl = ui.getStylecss(); 090 assertEquals("CSS URL does not match", "http:///conf/test/turbine-resources/turbine-skins/myskin/skins.css", cssUrl); 091 } 092 093 @Test 094 public void testImageSlashes() 095 { 096 ui.setSkin("myskin"); 097 098 String img = "myimage.gif"; 099 100 String imgUrl = ui.image(img); 101 assertEquals("CSS URL does not match", "http:///conf/test/turbine-resources/turbine-skins/myskin/turbine-images/" + img, 102 imgUrl); 103 104 String img2 = "foo/myimage.gif"; 105 106 String imgUrl2 = ui.image(img2); 107 assertEquals("CSS URL does not match", "http:///conf/test/turbine-resources/turbine-skins/myskin/turbine-images/" + img2, 108 imgUrl2); 109 110 String img3 = "/foo/myimage.gif"; 111 112 String imgUrl3 = ui.image(img3); 113 assertEquals("CSS URL does not match", "http:///conf/test/turbine-resources/turbine-skins/myskin/turbine-images" + img3, 114 imgUrl3); 115 } 116 117 @Test 118 public void testPathologicalCases() 119 { 120 ui.setSkin("myskin"); 121 122 String img = ""; 123 String imgUrl = ui.image(img); 124 assertEquals("Could not strip empty String", "http:///conf/test/turbine-resources/turbine-skins/myskin/turbine-images/", 125 imgUrl); 126 127 img = "/"; 128 imgUrl = ui.image(img); 129 assertEquals("Could not strip single Slash", "http:///conf/test/turbine-resources/turbine-skins/myskin/turbine-images/", 130 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/", 135 imgUrl); 136 } 137 138 @Test 139 public void testGetSkinNames() 140 { 141 142 String[] skinNames = ui.getSkinNames(); 143 // Remove the ".svn" dir that may be present. 144 skinNames = ArrayUtils.removeElement(skinNames, ".svn"); 145 assertEquals(2, skinNames.length); 146 147 assertTrue(ArrayUtils.contains(skinNames, "myotherskin")); 148 assertTrue(ArrayUtils.contains(skinNames, "myskin")); 149 } 150 151 @Test 152 public void testSkinValues() 153 { 154 155 // Default skin 156 // skin_property_1 = skin_property_1_my_skin 157 assertEquals("skin_property_1_my_skin", ui.get("skin_property_1")); 158 159 ui.setSkin("myotherskin"); 160 // skin_property_1 = skin_property_1_my_other_skin 161 assertEquals("skin_property_1_my_other_skin", ui.get("skin_property_1")); 162 } 163}