1. Project Clover database Tue Dec 20 2016 21:24:09 CET
  2. Package org.xwiki.test.escaping

File TemplateTest.java

 
testParameterEscaping: got: <false>, expected: is <true>
testParameterEscaping: got: <false>, expected: is <true>
testParameterEscaping: got: <false>, expected: is <true>
testParameterEscaping: got: <false>, expected: is <true>
testParameterEscaping: got: <false>, expected: is <true>
testParameterEscaping: got: <false>, expected: is <true>
testParameterEscaping: got: <false>, expected: is <true>
testParameterEscaping: got: <false>, expected: is <true>
testParameterEscaping: got: <false>, expected: is <true>
testParameterEscaping: got: <false>, expected: is <true>
testParameterEscaping: got: <false>, expected: is <true>
testParameterEscaping: got: <false>, expected: is <true>
testParameterEscaping: got: <false>, expected: is <true>
testParameterEscaping: got: <false>, expected: is <true>
testParameterEscaping: got: <false>, expected: is <true>
testParameterEscaping: got: <false>, expected: is <true>
testParameterEscaping: got: <false>, expected: is <true>
testParameterEscaping: got: <false>, expected: is <true>
testParameterEscaping: got: <false>, expected: is <true>
testParameterEscaping: got: <false>, expected: is <true>
testParameterEscaping: got: <false>, expected: is <true>
testParameterEscaping: got: <false>, expected: is <true>
testParameterEscaping: got: <false>, expected: is <true>
testParameterEscaping: got: <false>, expected: is <true>
testParameterEscaping: got: <false>, expected: is <true>
testParameterEscaping: got: <false>, expected: is <true>
testParameterEscaping: got: <false>, expected: is <true>
testParameterEscaping: got: <false>, expected: is <true>
testParameterEscaping: got: <false>, expected: is <true>
testParameterEscaping: got: <false>, expected: is <true>
testParameterEscaping: got: <false>, expected: is <true>
testParameterEscaping: got: <false>, expected: is <true>
testParameterEscaping: got: <false>, expected: is <true>
testParameterEscaping: got: <false>, expected: is <true>
testParameterEscaping: got: <false>, expected: is <true>
testParameterEscaping: got: <false>, expected: is <true>
testParameterEscaping: got: <false>, expected: is <true>
testParameterEscaping: got: <false>, expected: is <true>
testParameterEscaping: got: <false>, expected: is <true>
testParameterEscaping: got: <false>, expected: is <true>
testParameterEscaping: got: <false>, expected: is <true>
testParameterEscaping: got: <false>, expected: is <true>
testParameterEscaping: got: <false>, expected: is <true>
testParameterEscaping: got: <false>, expected: is <true>
testParameterEscaping: got: <false>, expected: is <true>
testParameterEscaping: got: <false>, expected: is <true>
testParameterEscaping: got: <false>, expected: is <true>
testParameterEscaping: got: <false>, expected: is <true>
testParameterEscaping: got: <false>, expected: is <true>
testParameterEscaping: got: <false>, expected: is <true>
testParameterEscaping: got: <false>, expected: is <true>
testParameterEscaping: got: <false>, expected: is <true>
testParameterEscaping: got: <false>, expected: is <true>
testParameterEscaping: got: <false>, expected: is <true>
testParameterEscaping: got: <false>, expected: is <true>
testParameterEscaping: got: <false>, expected: is <true>
testParameterEscaping: got: <false>, expected: is <true>
testParameterEscaping: got: <false>, expected: is <true>
testParameterEscaping: got: <false>, expected: is <true>
testParameterEscaping: got: <false>, expected: is <true>
testParameterEscaping: got: <false>, expected: is <true>
testParameterEscaping: got: <false>, expected: is <true>
testParameterEscaping: got: <false>, expected: is <true>
testParameterEscaping: got: <false>, expected: is <true>
testParameterEscaping: got: <false>, expected: is <true>
testParameterEscaping: got: <false>, expected: is <true>
testParameterEscaping: got: <false>, expected: is <true>
testParameterEscaping: got: <false>, expected: is <true>
testParameterEscaping: got: <false>, expected: is <true>
testParameterEscaping: got: <false>, expected: is <true>
testParameterEscaping: got: <false>, expected: is <true>
testParameterEscaping: got: <false>, expected: is <true>
testParameterEscaping: got: <false>, expected: is <true>
testParameterEscaping: got: <false>, expected: is <true>
testParameterEscaping: got: <false>, expected: is <true>
testParameterEscaping: got: <false>, expected: is <true>
testParameterEscaping: got: <false>, expected: is <true>
testParameterEscaping: got: <false>, expected: is <true>
testParameterEscaping: got: <false>, expected: is <true>
testParameterEscaping: got: <false>, expected: is <true>
testParameterEscaping: got: <false>, expected: is <true>
testParameterEscaping: got: <false>, expected: is <true>
testParameterEscaping: got: <false>, expected: is <true>
testParameterEscaping: got: <false>, expected: is <true>
testParameterEscaping: got: <false>, expected: is <true>
 

Code metrics

14
39
8
1
194
102
15
0.38
4.88
8
1.88

Classes

Class Line # Actions
TemplateTest 57 39 0% 15 8
0.8688524486.9%
 

Contributing tests

This file is covered by 531 tests. .

Source view

1    /*
2    * See the NOTICE file distributed with this work for additional
3    * information regarding copyright ownership.
4    *
5    * This is free software; you can redistribute it and/or modify it
6    * under the terms of the GNU Lesser General Public License as
7    * published by the Free Software Foundation; either version 2.1 of
8    * the License, or (at your option) any later version.
9    *
10    * This software is distributed in the hope that it will be useful,
11    * but WITHOUT ANY WARRANTY; without even the implied warranty of
12    * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13    * Lesser General Public License for more details.
14    *
15    * You should have received a copy of the GNU Lesser General Public
16    * License along with this software; if not, write to the Free
17    * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
18    * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
19    */
20   
21    package org.xwiki.test.escaping;
22   
23    import java.io.File;
24    import java.util.ArrayList;
25    import java.util.HashMap;
26    import java.util.List;
27    import java.util.regex.Pattern;
28   
29    import org.apache.commons.lang3.StringUtils;
30    import org.junit.Assume;
31    import org.junit.Test;
32    import org.junit.runner.RunWith;
33    import org.xwiki.test.escaping.framework.AbstractEscapingTest;
34    import org.xwiki.test.escaping.framework.AbstractVelocityEscapingTest;
35    import org.xwiki.test.escaping.framework.EscapingError;
36    import org.xwiki.test.escaping.framework.SingleXWikiExecutor;
37    import org.xwiki.test.escaping.framework.XMLEscapingValidator;
38    import org.xwiki.test.escaping.suite.ArchiveSuite;
39    import org.xwiki.test.escaping.suite.ArchiveSuite.AfterSuite;
40    import org.xwiki.test.escaping.suite.ArchiveSuite.ArchivePathGetter;
41    import org.xwiki.test.escaping.suite.ArchiveSuite.BeforeSuite;
42    import org.xwiki.validator.ValidationError;
43   
44    /**
45    * Runs automatically generated escaping tests for all velocity templates found in XWiki Enterprise WAR file.
46    * <p>
47    * The following configuration properties are supported (set in maven):
48    * <ul>
49    * <li>localRepository: Path to maven repository, where XWiki files can be found</li>
50    * <li>pathToXWikiWar: Used to read all templates</li>
51    * </ul></p>
52    *
53    * @version $Id: 49a36232946c79c55d2d6f650bc9557044607549 $
54    * @since 2.5M1
55    */
56    @RunWith(ArchiveSuite.class)
 
57    public class TemplateTest extends AbstractVelocityEscapingTest
58    {
59    /**
60    * Get the path to the archive from system properties defined in the maven build configuration.
61    *
62    * @return local path to the WAR archive to use
63    */
 
64  1 toggle @ArchivePathGetter
65    public static String getArchivePath()
66    {
67  1 return System.getProperty("localRepository") + "/" + System.getProperty("pathToXWikiWar");
68    }
69   
70    /**
71    * Start XWiki server if needed and switch to multi-language mode.
72    *
73    * @throws Exception on errors
74    */
 
75  1 toggle @BeforeSuite
76    public static void init() throws Exception
77    {
78  1 SingleXWikiExecutor.getExecutor().start();
79   
80    // for tests using "language" parameter
81  1 AbstractEscapingTest.setMultiLanguageMode(true);
82    }
83   
84    /**
85    * Switch back to single language mode and stop XWiki server if no longer needed.
86    *
87    * @throws Exception on errors
88    */
 
89  1 toggle @AfterSuite
90    public static void shutdown() throws Exception
91    {
92    // restore single language mode
93  1 AbstractEscapingTest.setMultiLanguageMode(false);
94   
95  1 SingleXWikiExecutor.getExecutor().stop();
96    }
97   
98    /**
99    * Create new TemplateTest for all *.vm files.
100    */
 
101  2934 toggle public TemplateTest()
102    {
103  2934 super(Pattern.compile(".*\\.vm"));
104    }
105   
106    /**
107    * Test escaping of the space name.
108    */
 
109  177 toggle @Test
110    public void testSpaceEscaping()
111    {
112    // space name
113  177 String url = createUrl(XMLEscapingValidator.getTestString(), null, null, "");
114  177 checkUnderEscaping(url, "space name");
115    }
116   
117    /**
118    * Test escaping of the page name.
119    */
 
120  177 toggle @Test
121    public void testPageEscaping()
122    {
123    // page name
124  177 String url = createUrl("Main", XMLEscapingValidator.getTestString(), null, "");
125  177 checkUnderEscaping(url, "page name");
126    }
127   
128    /**
129    * Test escaping of all found parameters.
130    */
 
131  177 toggle @Test
132    public void testParameterEscaping()
133    {
134    // skip the test if there are no parameters to test
135  177 Test failure here Assume.assumeTrue(!this.userInput.isEmpty());
136   
137  92 List<EscapingError> errors = new ArrayList<EscapingError>();
138  92 for (String parameter : this.userInput) {
139  335 String url = createUrl("Main", null, parameter, XMLEscapingValidator.getTestString());
140  335 List<ValidationError> val_errors = getUnderEscapingErrors(url);
141  335 if (!val_errors.isEmpty()) {
142  0 errors.add(new EscapingError("* Parameter: \"" + parameter + "\"", this.name, url, val_errors));
143    }
144    }
145  92 if (!errors.isEmpty()) {
146  0 throw new EscapingError("Escaping test failed.", errors);
147    }
148    }
149   
150    /**
151    * Create a target URL from given parameters, adding the template name.
152    *
153    * @param space space name to use, "Main" is used if null
154    * @param page page name to use, "WebHome" is used if null
155    * @param parameter parameter name to add, omitted if null or empty string
156    * @param value parameter value, empty string is used if null
157    * @return the resulting absolute URL
158    * @see #createUrl(String, String, String, java.util.Map)
159    */
 
160  689 toggle protected String createUrl(String space, String page, String parameter, String value)
161    {
162  689 String skin = "default";
163  689 if (this.name.startsWith("skins")) {
164  247 skin = this.name.replaceFirst("^\\w+/", "").replaceAll("/.+$", "");
165    }
166   
167  689 final String TEMPLATES_DIR = "templates" + File.separator;
168  689 final String SKINS_DIR = "skins" + File.separator;
169  689 String template;
170  689 if (this.name.startsWith(TEMPLATES_DIR)) {
171  442 template = StringUtils.removeStart(this.name, TEMPLATES_DIR);
172  247 } else if (this.name.startsWith(SKINS_DIR)) {
173  247 template = StringUtils.removeStart(this.name, SKINS_DIR + skin + File.separator);
174    } else {
175  0 template = this.name.replaceAll("^(.+)/", "");
176    }
177   
178  689 HashMap<String, String> parameters = new HashMap<String, String>();
179  689 parameters.put("skin", skin);
180  689 if ("xpart".equals(parameter)) {
181    // xpart=something must be tested differently
182  0 parameters.put("xpage", template).replaceAll("\\.\\w+$", "");
183    } else {
184    // this variant initializes some commonly used variables
185  689 parameters.put("xpage", "xpart");
186  689 parameters.put("vm", template);
187    }
188  689 if (parameter != null) {
189  335 parameters.put(parameter, value);
190    }
191  689 return createUrl(null, space, page, parameters);
192    }
193    }
194