📄 viewtoolstests.java
字号:
package org.apache.velocity.tools.test.blackbox;/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */import java.util.regex.Pattern;import java.util.regex.Matcher;import java.io.PrintWriter;import java.io.IOException;import org.junit.*;import static org.junit.Assert.*;import com.meterware.httpunit.HTMLElement;import com.meterware.httpunit.WebResponse;import com.meterware.httpunit.WebConversation;import com.meterware.httpunit.WebRequest;import com.meterware.httpunit.GetMethodWebRequest;import com.meterware.httpunit.WebForm;import com.meterware.httpunit.HttpUnitOptions;/** * <p>View tools blackbox tests.</p> * * @author <a href="mailto:cbrisson@apache.org">Claude Brisson</a> * @since Velocity Tools 1.3 * @version $Id$ */public class ViewToolsTests { private static final String ROOT_URL = "http://localhost:@test.webcontainer.port@/"; public static @BeforeClass void initViewToolsTests() throws Exception { } /******* Helpers **********/ /** * Utility function to check the text content of an HTML element * @param resp web response * @param id HTML element id * @param text expected text * @throws Exception */ private void checkText(WebResponse resp,String id,String text) throws Exception { HTMLElement element = resp.getElementWithID(id); assertNotNull(element); assertEquals(text,element.getText()); } /** * Utility function to check the text content of an HTML element * @param resp web response * @param id HTML element id * @param text expected start of the text * @throws Exception */ private void checkTextStart(WebResponse resp,String id,String text) throws Exception { HTMLElement element = resp.getElementWithID(id); assertNotNull(element); assertTrue(element.getText().startsWith(text)); } /** * Utility function to check the text content of an HTML element * @param resp web response * @param id HTML element id * @param text expected contained text * @throws Exception */ private void checkTextContent(WebResponse resp,String id,String text) throws Exception { HTMLElement element = resp.getElementWithID(id); assertNotNull(element); assertTrue(element.getText().indexOf(text) != -1); } /** * Utility function to check the text content of an HTML element * @param resp web response * @param id HTML element id * @param regex expected regex * @throws Exception */ private void checkTextRegex(WebResponse resp,String id,String regex) throws Exception { HTMLElement element = resp.getElementWithID(id); assertNotNull(element); Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(element.getText()); assertTrue(matcher.matches()); } /** * * @param orig original web response * @param formname form name * @param paramname parameter name * @param value parameter value * @return new web response * @throws Exception */ private WebResponse submitWithParam(WebResponse orig, String formname, String paramname, String value) throws Exception { WebForm form = orig.getFormWithName(formname); form.setParameter(paramname,value); return form.submit(); } /** * Used for debugging testcases * @param resp webresponse */ private void dump(WebResponse resp) { try { PrintWriter pw = new PrintWriter("/tmp/dump.html"); pw.println(resp.getText()); pw.flush(); pw.close(); } catch (IOException ioe) { } } /******* Tests **********/ public @Test void testBrowserSnifferTool() throws Exception { WebConversation conv = new WebConversation(); WebRequest req = new GetMethodWebRequest(ROOT_URL+"browser.vm"); WebResponse resp = conv.getResponse(req); /* check we are identified as a Java (HttpUnit) client */ checkText(resp,"Java","true"); } public @Test void testContextTool() throws Exception { WebConversation conv = new WebConversation(); WebRequest req = new GetMethodWebRequest(ROOT_URL+"context.vm"); WebResponse resp = conv.getResponse(req); /* check that getThis() is a ChainedContext instance */ checkTextStart(resp,"this","org.apache.velocity.tools.view.context.ChainedContext"); /* check contains('context') */ resp = submitWithParam(resp,"contains","contains","context"); checkText(resp,"contains","true"); /* check get('context') */ resp = submitWithParam(resp,"get","get","context"); checkTextStart(resp,"get","org.apache.velocity.tools.view.tools.ContextTool"); /* check keys (the only expected uppercase is in 'velocityCount') */ checkTextRegex(resp,"keys","^\\[[a-z_C]+(?:,\\s*[a-z_C]+)*\\]$"); /* check toolbox */ checkTextRegex(resp,"toolbox","^\\{[a-z_C]+=.*(?:,\\s*[a-z_C]+=.*)*\\}$"); /* check values */ checkTextRegex(resp,"values","^\\[.*\\]$"); } public @Test void testCookiesTool() throws Exception { WebConversation conv = new WebConversation(); WebRequest req = new GetMethodWebRequest(ROOT_URL+"cookies.vm"); WebResponse resp = conv.getResponse(req); /* check all */ checkTextStart(resp,"all","[Ljavax.servlet.http.Cookie;"); /* check get('JSESSIONID') */ resp = submitWithParam(resp,"get","get","JSESSIONID"); checkTextStart(resp,"get","javax.servlet.http.Cookie"); /* check add('foo','bar') */ WebForm form = resp.getFormWithName("add2"); form.setParameter("add1","foo"); form.setParameter("add2","bar"); resp = form.submit(); resp = submitWithParam(resp,"get","get","foo"); checkTextStart(resp,"get","javax.servlet.http.Cookie"); } public @Test void testLinkTool() throws Exception { WebConversation conv = new WebConversation(); WebRequest req = new GetMethodWebRequest(ROOT_URL+"link.vm"); WebResponse resp = conv.getResponse(req); /* check anchor(foo) and anchor */ resp = submitWithParam(resp,"anchor","anchor","foo"); checkText(resp,"anchor","#foo"); checkText(resp,"altanchor","#foo"); /* check uri(bar) and uri */ resp = submitWithParam(resp,"uri","uri","bar"); checkText(resp,"uri","bar"); checkText(resp,"alturi","bar"); /* check relative(foo) */ resp = submitWithParam(resp,"relative","relative","foo"); checkText(resp,"relative","/foo"); /* check absolute(bar) */ resp = submitWithParam(resp,"absolute","absolute","bar"); checkText(resp,"absolute",ROOT_URL + "bar"); /* check contextURL */ checkText(resp,"contextURL",ROOT_URL.substring(0,ROOT_URL.length()-1)); /* check contextPath */ checkText(resp,"contextPath",""); /* check requestPath */ checkText(resp,"requestPath","/link.vm"); /* check baseRef */ checkText(resp,"baseRef",ROOT_URL+"link.vm"); /* check self */ checkText(resp,"self","/link.vm"); /* check encodeURL */ resp = submitWithParam(resp,"encodeURL","encodeURL",": /"); checkText(resp,"encodeURL","%3A+%2F"); } public @Test void testParameterParserTool() throws Exception { WebConversation conv = new WebConversation(); WebRequest req = new GetMethodWebRequest(ROOT_URL+"params.vm?foo=bar&b=false&n=55&d=1.2"); WebResponse resp = conv.getResponse(req); /* check exists(foo) */ resp = submitWithParam(resp,"exists","exists","foo"); checkText(resp,"exists","true"); /* check get(foo) */ resp = submitWithParam(resp,"get","get","foo"); checkText(resp,"get","bar"); /* check getString(foo) */ resp = submitWithParam(resp,"getString","getString","foo"); checkText(resp,"getString","bar"); /* check getBoolean(b) */ resp = submitWithParam(resp,"getBoolean","getBoolean","b"); checkText(resp,"getBoolean","false"); /* check getNumber(n) */ resp = submitWithParam(resp,"getNumber","getNumber","n"); checkText(resp,"getNumber","55"); /* check getDouble(d) */ resp = submitWithParam(resp,"getDouble","getDouble","d"); checkText(resp,"getDouble","1.2"); /* check getInteger(n) */ resp = submitWithParam(resp,"getInteger","getInteger","n"); checkText(resp,"getInteger","55"); /* check getStrings(foo) */ resp = submitWithParam(resp,"getStrings","getStrings","foo"); checkTextStart(resp,"getStrings","[Ljava.lang.String;@"); /* check getBooleans(b) */ resp = submitWithParam(resp,"getBooleans","getBooleans","b"); checkTextStart(resp,"getBooleans","[Ljava.lang.Boolean;@"); /* check getNumbers(n) */ resp = submitWithParam(resp,"getNumbers","getNumbers","n"); checkTextStart(resp,"getNumbers","[Ljava.lang.Number;@"); /* check getDoubles(d) */ resp = submitWithParam(resp,"getDoubles","getDoubles","d"); checkTextStart(resp,"getDoubles","[D@"); /* check getInts(n) */ resp = submitWithParam(resp,"getInts","getInts","n"); checkTextStart(resp,"getInts","[I@"); /* check getString(bar,foo) */ WebForm form = resp.getFormWithName("getString2"); form.setParameter("getString1","'bar'"); form.setParameter("getString2","'foo'"); resp = form.submit(); checkText(resp,"getString2","foo"); /* TODO other getters with default values */ /* check all */ checkTextRegex(resp,"all","^\\{.*\\}$"); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -