blob: 21962ea78b88de608c29d9098cc26074832a2649 [file] [log] [blame]
/****************************************************************
* 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. *
****************************************************************/
package org.apache.hupa.server.utils;
import junit.framework.TestCase;
public class RegexPatternsTest extends TestCase {
public void testRegexHtml() {
String txt, res;
txt = "<!'https://www.aaa.1:#@%/;$()~_?+-=\\.&<br/>";
res = RegexPatterns.replaceAll(txt, RegexPatterns.regex_htmllink, "");
assertEquals("<!'<br/>", res);
txt = "... a b c http://somewhere d e f ...";
res = RegexPatterns.replaceAll(txt, RegexPatterns.regex_htmllink, RegexPatterns.repl_htmllink);
assertEquals("... a b c <a href=\"http://somewhere\">http://somewhere</a> d e f ...", res);
}
public void testRegexEmail() {
String txt, res;
txt = "!'BcD091_%55-+.aa@abc01-01.dd-a.aBc+";
res = RegexPatterns.replaceAll(txt, RegexPatterns.regex_email, "");
assertEquals("!'+", res);
txt = "!'=BcD091_%55-+.aa@abc01-01.dd-a.aBc+";
res = RegexPatterns.replaceAll(txt, RegexPatterns.regex_email, "");
assertEquals(txt, res);
txt = "... a b c aaa@aaa.bbb d e f ...";
res = RegexPatterns.replaceAll(txt, RegexPatterns.regex_email, RegexPatterns.repl_email);
assertEquals(res, "... a b c <a href=\"mailto:aaa@aaa.bbb\">aaa@aaa.bbb</a> d e f ...");
}
public void testRegexInlineImg() {
String txt, res;
txt = ".. <img\nsrc=\"cid:abcd\"\nwhatever=/>click</a\n> ..";
res = RegexPatterns.replaceAll(txt, RegexPatterns.regex_inlineImg, RegexPatterns.repl_inlineImg);
assertEquals(".. <img\nsrc='hupa/downloadAttachmentServlet?mode=inline&folder=%%FOLDER%%&uid=%%UID%%&name=abcd' name='cid:abcd'\nwhatever=/>click</a\n> ..", res);
}
public void testRegexRestoreInlineLinks() {
String txt, res;
txt = ".. <img\nsrc='cid:abcd'\nwhatever=/>click</a\n> ..";
res = RegexPatterns.replaceAll(txt, RegexPatterns.regex_inlineImg, RegexPatterns.repl_inlineImg);
assertNotSame(txt, res);
res = RegexPatterns.replaceAll(txt, RegexPatterns.regex_revertInlineImg, RegexPatterns.repl_revertInlineImg);
assertEquals(txt, res);
}
public void testRegexBadTags() {
String txt, res;
txt = "<html><head>h<tag></head><body>.<style>..</style>.<script type=>//</script></body>.</html>";
res = RegexPatterns.replaceAll(txt, RegexPatterns.regex_badTags, RegexPatterns.repl_badTags);
res = RegexPatterns.replaceAll(res, RegexPatterns.regex_unneededTags, RegexPatterns.repl_unneededTags);
assertEquals("...", res);
}
public void testRegexBadAttributes() {
String txt, res;
txt = "... <div attr=a onClick=\"something('');\"> ...";
res = RegexPatterns.replaceAllRecursive(txt, RegexPatterns.regex_badAttrs, RegexPatterns.repl_badAttrs);
assertEquals("... <div attr=a> ...", res);
txt = "... <div attr=a onClick=\"something('');\" attr=b onMouseOver=whatever attr=c onKeyup=\"\" /> ...";
res = RegexPatterns.replaceAllRecursive(txt, RegexPatterns.regex_badAttrs, RegexPatterns.repl_badAttrs);
assertEquals("... <div attr=a attr=b attr=c /> ...", res);
}
public void testRegexHtmlLinks() {
String txt, res;
txt = ".. <a href=\"http://whatever\">..</a> ..";
res = RegexPatterns.replaceAll(txt, RegexPatterns.regex_existingHttpLinks, RegexPatterns.repl_existingHttpLinks);
assertEquals(".. <a onClick=\"openLink('http://whatever');return false;\" href=\"http://whatever\">..</a> ..", res);
txt = "-- <div> .. <img src=\"http://whatever\"/> .. </div>";
res = RegexPatterns.replaceAll(txt, RegexPatterns.regex_orphandHttpLinks, RegexPatterns.repl_orphandHttpLinks);
assertEquals(txt, res);
txt = "-- <div> .. \"http://whatever\" .. </div>";
res = RegexPatterns.replaceAll(txt, RegexPatterns.regex_orphandHttpLinks, RegexPatterns.repl_orphandHttpLinks);
assertEquals("-- <div> .. \"<a href=\"http://whatever\">http://whatever</a>\" .. </div>", res);
res = RegexPatterns.replaceAll(res, RegexPatterns.regex_existingHttpLinks, RegexPatterns.repl_existingHttpLinks);
assertEquals("-- <div> .. \"<a onClick=\"openLink('http://whatever');return false;\" href=\"http://whatever\">http://whatever</a>\" .. </div>", res);
}
public void testRegexEmailLinks() {
String txt, res;
txt = ".. <a href=\"mailTo:someone@somedomain.com\">..</a> ..";
res = RegexPatterns.replaceAll(txt, RegexPatterns.regex_existingEmailLinks, RegexPatterns.repl_existngEmailLinks);
assertEquals(".. <a onClick=\"mailTo('someone@somedomain.com');return false;\" href=\"mailto:someone@somedomain.com\">..</a> ..", res);
txt = "-- <div> .. someone@somedomain.com .. </div>";
res = RegexPatterns.replaceAll(txt, RegexPatterns.regex_orphandEmailLinks, RegexPatterns.repl_orphandEmailLinks);
assertEquals("-- <div> .. <a href=\"mailto:someone@somedomain.com\">someone@somedomain.com</a> .. </div>", res);
res = RegexPatterns.replaceAll(res, RegexPatterns.regex_existingEmailLinks, RegexPatterns.repl_existngEmailLinks);
assertEquals("-- <div> .. <a onClick=\"mailTo('someone@somedomain.com');return false;\" href=\"mailto:someone@somedomain.com\">someone@somedomain.com</a> .. </div>", res);
}
}