0001: package com.sun.portal.rewriter.engines.js.test;
0002:
0003: import com.sun.portal.rewriter.Rewriter;
0004: import com.sun.portal.rewriter.RewriterModule;
0005: import com.sun.portal.rewriter.RewriterPool;
0006: import com.sun.portal.rewriter.engines.LanguageConstants;
0007: import com.sun.portal.rewriter.rom.RuleSet;
0008: import com.sun.portal.rewriter.test.util.BasicTestCase;
0009: import com.sun.portal.rewriter.test.util.CreateRuleSet;
0010: import com.sun.portal.rewriter.test.util.JSWrapperHelper;
0011: import junit.framework.TestSuite;
0012:
0013: public class TestJSURLVariables extends BasicTestCase {
0014: public TestJSURLVariables(String aName) {
0015: super (aName);
0016: }//constuctor
0017:
0018: public void testArrayVars() throws Exception {
0019: String lInput = "var imgx = new Array();\n"
0020: + "imgx = \"/images/a.gif\"\n"
0021: + "imgxabc = \"/images/a.gi\\\nf\"\n"
0022: + "imgx[1] = \"/images/a.gif\"\n"
0023: + "imgx[2] = \"/images/b.gif\"\n"
0024: + "imgx[3] = imagex[2] + \"/images/b.gif\"\n"
0025: + "imgx = \"/images/a.gif\"\n";
0026:
0027: String lExpectation = "var imgx = new Array();\n"
0028: + "imgx = \"http://rajanagendra.sun.com/images/a.gif\"\n"
0029: + "imgxabc = \"http://rajanagendra.sun.com/images/a.gif\"\n"
0030: + "imgx[1] = \"http://rajanagendra.sun.com/images/a.gif\"\n"
0031: + "imgx[2] = \"http://rajanagendra.sun.com/images/b.gif\"\n"
0032: + "imgx[3] = imagex[2] + \"/images/b.gif\"\n"
0033: + "imgx = \"http://rajanagendra.sun.com/images/a.gif\"\n";
0034:
0035: String[] lJSVarRules = {
0036: "<Variable name=\"imgx*\" type=\"URL\"/>",
0037: "<Variable name=\";*\" type=\"URL\"/>",
0038: "<Variable name=\"*;\" type=\"URL\"/>",
0039: "<Variable name=\"imgx*\" type=\"URL\" source=''/>",
0040: "<Variable name=\"imgx*\" type=\"URL\" source='*'/>", };
0041:
0042: for (int i = 0; i < lJSVarRules.length; i++) {
0043: RuleSet lRuleSet = CreateRuleSet
0044: .withJSVariableRules(lJSVarRules[i]);
0045: Rewriter lRewriter = RewriterPool.create(lRuleSet,
0046: LanguageConstants.JS_MIME);
0047: String lResult = lRewriter.rewrite(lInput,
0048: getDefaultJSTranslator());
0049: assertEquals(lExpectation, lResult);
0050: }
0051: }//testArrayVars()
0052:
0053: public void testSimpleURL2beFixed() throws Exception {
0054: String lJSVarRules = "<Variable name=\"*.src\" type=\"URL\"/>";
0055:
0056: String[][] lData = { {
0057: "doc.al\\\nl[all].src = \"\\\r\n./xd\\\ne.doc\";\r\n"
0058: + "var a = /\\/[^/]*$/\r\n" + //BugNo:4795370
0059: "doc.all[all].src = \"./xde.d\\\noc\";\r\n",
0060:
0061: "doc.al\\\nl[all].src = \"\\\n./xd\\\ne.doc\";\n"
0062: + "var a = /\\/[^/]*$/\n" + //BugNo:4795370
0063: "doc.all[all].src = \"./xde.d\\\noc\";\n",
0064:
0065: //exact change should be this..
0066: "doc.all[all].src = \"http://rajanagendra.sun.com/Base/Raja/xde.doc\";\n"
0067: + "var a = /\\/[^/]*$/\n" + //BugNo:4795370
0068: "doc.all[all].src = \"http://rajanagendra.sun.com/Base/Raja/xde.doc\";\n", }, //0
0069: };
0070:
0071: for (int i = 0; i < lData.length; i++) {
0072: RuleSet lRuleSet = CreateRuleSet
0073: .withJSVariableRules(lJSVarRules);
0074: Rewriter lRewriter = RewriterPool.create(lRuleSet,
0075: LanguageConstants.JS_MIME);
0076: String lResult = lRewriter.rewrite(lData[i][0],
0077: getDefaultJSTranslator());
0078: assertEquals("URLTranslation failed at i=" + i,
0079: lData[i][1], lResult);
0080: }
0081: }//testSimpleURL2beFixed()
0082:
0083: public void testSimpleURL() throws Exception {
0084: String lJSVarRules = "<Variable name=\"*.src\" type=\"URL\"/>";
0085:
0086: String[][] lData = {
0087: {
0088: "doc.all[all].src = \"\\\n./xd\\\ne.d\\\noc\";\n"
0089: + "var a = /\\/[^/]*$/\n" + //BugNo:4795370
0090: "doc.all[all].src = \"./xde.d\\\noc\";\n",
0091:
0092: "doc.all[all].src = \"http://rajanagendra.sun.com/Base/Raja/xde.doc\";\n"
0093: + "var a = /\\/[^/]*$/\n" + //BugNo:4795370
0094: "doc.all[all].src = \"http://rajanagendra.sun.com/Base/Raja/xde.doc\";\n", }, //0
0095:
0096: {
0097: "doc.all[all].src = \"\\\r\n./xd\\\ne.doc\";\r\n"
0098: + "var a = /\\/[^/]*$/\r\n" + //BugNo:4795370
0099: "doc.all[all].src = \"./xde.d\\\noc\";\r\n",
0100:
0101: "doc.all[all].src = \"http://rajanagendra.sun.com/Base/Raja/xde.doc\";\n"
0102: + "var a = /\\/[^/]*$/\n" + //BugNo:4795370
0103: "doc.all[all].src = \"http://rajanagendra.sun.com/Base/Raja/xde.doc\";\n", }, //0
0104:
0105: {
0106: "doc.all[all].src = \"./xde.doc\";\n"
0107: + "var a = /\\/[^/]*$/\n" + //BugNo:4795370
0108: "doc.all[all].src = \"./xde.doc\";\n",
0109:
0110: "doc.all[all].src = \"http://rajanagendra.sun.com/Base/Raja/xde.doc\";\n"
0111: + "var a = /\\/[^/]*$/\n" + //BugNo:4795370
0112: "doc.all[all].src = \"http://rajanagendra.sun.com/Base/Raja/xde.doc\";\n", }, //0
0113:
0114: {
0115: "doc.all[all].src = \"./xde.doc\";\n"
0116: + "var a = /\\\\/[^/]*$/\n" + //BugNo:4795370
0117: "doc.all[all].src = \"./xde.doc\";\n",
0118:
0119: "doc.all[all].src = \"http://rajanagendra.sun.com/Base/Raja/xde.doc\";\n"
0120: + "var a = /\\\\/[^/]*$/\n" + //BugNo:4795370
0121: "doc.all[all].src = \"./xde.doc\";\n", }, //0
0122:
0123: {
0124: "doc.all[all].src = \"./xde.doc\";",
0125: "doc.all[all].src = \"http://rajanagendra.sun.com/Base/Raja/xde.doc\";", }, //0
0126:
0127: {
0128: "doc.all[all].src = './xde.doc';",
0129: "doc.all[all].src = 'http://rajanagendra.sun.com/Base/Raja/xde.doc';", }, //1
0130:
0131: { "doc.all[all].src += \"./xde.doc\";",
0132: "doc.all[all].src += \"./xde.doc\";", }, //2
0133:
0134: { "doc.all[all].src += './xde.doc';",
0135: "doc.all[all].src += './xde.doc';", }, //3
0136:
0137: { "doc.all[all].src -= \"./xde.doc\";",
0138: "doc.all[all].src -= \"./xde.doc\";", }, //4
0139:
0140: { "doc.all[all].src -= './xde.doc';",
0141: "doc.all[all].src -= './xde.doc';", }, //5
0142:
0143: {
0144: "doc.all[all].src = './xde.doc' + a;",
0145: "doc.all[all].src = 'http://rajanagendra.sun.com/Base/Raja/xde.doc' + a;", }, //6
0146:
0147: {
0148: "doc.all[all].src = \"/xde.doc\" + a;",
0149: "doc.all[all].src = \"http://rajanagendra.sun.com/xde.doc\" + a;", }, //7
0150:
0151: {
0152: "doc.all[all].src =" + "'' + b()" + "\n"
0153: + "x(\"./xde.doc\") + a +'\n';",
0154: "doc.all[all].src =" + "'' + b()" + "\n"
0155: + "x(\"./xde.doc\") + a +'\n';", }, //71
0156:
0157: {
0158: "doc.all[all].src =\"\" + b()" + "\n"
0159: + "x('./xde.doc') + a+'\n';",
0160: "doc.all[all].src =\"\" + b()" + "\n"
0161: + "x('./xde.doc') + a+'\n';", }, //72
0162:
0163: { "doc.all[all].src =null;", "doc.all[all].src =null;", }, //73
0164:
0165: { "doc.all[all].src =null", "doc.all[all].src =null", }, //74
0166:
0167: { "doc.all[all].src ='';", "doc.all[all].src ='';", }, //75
0168:
0169: { "doc.all[all].src =\"\"", "doc.all[all].src =\"\"", }, //76
0170:
0171: { "doc.all[all].src =\"\n\t\"",
0172: "doc.all[all].src =\"\n\t\"", }, //77
0173:
0174: { "doc.all[all].src = b + './xde.doc' + a;",
0175: "doc.all[all].src = b + './xde.doc' + a;", }, //8
0176:
0177: { "doc.all[all].src = b + \"./xde.doc\" + a;",
0178: "doc.all[all].src = b + \"./xde.doc\" + a;", }, //9
0179:
0180: { "doc.all[all].src = b() + './xde.doc' + a;",
0181: "doc.all[all].src = b() + './xde.doc' + a;", }, //10
0182:
0183: { "doc.all[all].src = b() + \"./xde.doc\" + a;",
0184: "doc.all[all].src = b() + \"./xde.doc\" + a;", }, //11
0185:
0186: { "doc.all[all].src = b() + './xde.doc' + a();",
0187: "doc.all[all].src = b() + './xde.doc' + a();", }, //12
0188:
0189: {
0190: "doc.all[all].src = b() + \"./xde.doc\" + a();",
0191: "doc.all[all].src = b() + \"./xde.doc\" + a();", }, //13
0192:
0193: { "doc.all[all].src = b() + x('./xde.doc') + a;",
0194: "doc.all[all].src = b() + x('./xde.doc') + a;", }, //14
0195:
0196: {
0197: "doc.all[all].src = b() + x(\"./xde.doc\") + a;",
0198: "doc.all[all].src = b() + x(\"./xde.doc\") + a;", }, //15
0199:
0200: {
0201: "doc.all[all].src = b() + '\n' + x('./xde.doc') + a;",
0202: "doc.all[all].src = b() + '\n' + x('./xde.doc') + a;", }, //16
0203:
0204: {
0205: "doc.all[all].src = b() + '\n' + x(\"./xde.doc\") + a;",
0206: "doc.all[all].src = b() + '\n' + x(\"./xde.doc\") + a;", }, //17
0207:
0208: {
0209: "doc.all[all].src = b() + \"\n\" + x(\"./xde.doc\") + a;",
0210: "doc.all[all].src = b() + \"\n\" + x(\"./xde.doc\") + a;", }, //17
0211:
0212: {
0213: "doc.all[all].src ='\t'+ b() + \"\n\" + x('./xde.doc') + a;",
0214: "doc.all[all].src ='\t'+ b() + \"\n\" + x('./xde.doc') + a;", }, //18
0215:
0216: {
0217: "doc.all[all].src ='\t'+ b() + '\n' + x('./xde.doc') + a;",
0218: "doc.all[all].src ='\t'+ b() + '\n' + x('./xde.doc') + a;", }, //18
0219:
0220: {
0221: "doc.all[all].src = b() + '\n' + x(\"./xde.doc\") + a +'\n';",
0222: "doc.all[all].src = b() + '\n' + x(\"./xde.doc\") + a +'\n';", }, //19
0223:
0224: {
0225: "doc.all[all].src ='\t'+ b() + '\n' + x('./xde.doc') + a+'\n';",
0226: "doc.all[all].src ='\t'+ b() + '\n' + x('./xde.doc') + a+'\n';", }, //20
0227:
0228: {
0229: "doc.all[all].src = '\t' + b() +'\n' + x(\"./xde.doc\") + a;",
0230: "doc.all[all].src = '\t' + b() +'\n' + x(\"./xde.doc\") + a;", }, //21
0231:
0232: {
0233: "doc.all[all].src = 'a\t' + b() +'\n' + x(\"./xde.doc\") + a;",
0234: "doc.all[all].src = 'http://rajanagendra.sun.com/Base/Raja/a\t' + b() +'\n' + x(\"./xde.doc\") + a;", }, //31
0235: };
0236:
0237: for (int i = 0; i < lData.length; i++) {
0238: RuleSet lRuleSet = CreateRuleSet
0239: .withJSVariableRules(lJSVarRules);
0240: Rewriter lRewriter = RewriterPool.create(lRuleSet,
0241: LanguageConstants.JS_MIME);
0242: String lResult = lRewriter.rewrite(lData[i][0],
0243: getDefaultJSTranslator());
0244: assertEquals("URLTranslation failed at i=" + i,
0245: lData[i][1], lResult);
0246: }
0247: }//testSimpleURL()
0248:
0249: public void testRewriteURLInArray() throws Exception {
0250: final String[] lShouldMatch = { "doc.all*.src", //0
0251: "*.*.*", //1
0252: "d*.*.*", //2
0253: "*.a*.*", //3
0254: " doc.all*.src ", //4
0255: };
0256:
0257: final String[] lShouldFail = { "doc.all*.sdc ", //1
0258: };
0259:
0260: final String lInput = "doc.all[all].src = \"./xde.doc\";";
0261:
0262: final String RExpectation = "doc.all[all].src = \"http://rajanagendra.sun.com/Base/Raja/xde.doc\";";
0263:
0264: String lExpectation;
0265: String lRules;
0266:
0267: for (int i = (lShouldMatch.length - 1); i >= 0; i--) {
0268: lRules = "<Variable name=\"" + lShouldMatch[i]
0269: + "\" type=\"URL\"/>";
0270: lExpectation = RExpectation;
0271: RuleSet lRuleSet = CreateRuleSet
0272: .withJSVariableRules(lRules);
0273: Rewriter lRewriter = RewriterPool.create(lRuleSet,
0274: LanguageConstants.JS_MIME);
0275: String lResult = lRewriter.rewrite(lInput,
0276: getDefaultTranslator());
0277: assertEquals("Failed: Should Match with Pattern = "
0278: + lShouldMatch[i] + ":" + i + "\n", lExpectation,
0279: lResult);
0280: }//for loop
0281:
0282: for (int i = (lShouldFail.length - 1); i >= 0; i--) {
0283: lRules = "<Variable name=\"" + lShouldFail[i]
0284: + "\" type=\"URL\"/>";
0285: lExpectation = lInput;
0286: RuleSet lRuleSet = CreateRuleSet
0287: .withJSVariableRules(lRules);
0288: Rewriter lRewriter = RewriterPool.create(lRuleSet,
0289: LanguageConstants.JS_MIME);
0290: String lResult = lRewriter.rewrite(lInput,
0291: getDefaultTranslator());
0292: assertEquals("Failed: Should Not Match with Pattern = "
0293: + lShouldFail[i] + ":" + i + "\n", lExpectation,
0294: lResult);
0295: }//for loop
0296: }//testRewriteURLInArray()
0297:
0298: public void testSimpleJSVar() throws Exception {
0299: String[][] lData = {
0300: {
0301: "urlVar = './abc.html';",
0302: "urlVar = 'http://rajanagendra.sun.com/Base/Raja/abc.html';",
0303: "<Variable name=\"urlVar\" type=\"URL\"/>" //jsvar rule
0304: }, //0
0305:
0306: { "urlVar += './abc.html';", "urlVar += './abc.html';",
0307: "<Variable name=\"urlVar\" type=\"URL\"/>" //jsvar rule
0308: }, //0
0309:
0310: { "urlVar -= './abc.html';", "urlVar -= './abc.html';",
0311: "<Variable name=\"urlVar\" type=\"URL\"/>" //jsvar rule
0312: }, //0
0313:
0314: { "urlVar *= './abc.html';", "urlVar *= './abc.html';",
0315: "<Variable name=\"urlVar\" type=\"URL\"/>" //jsvar rule
0316: }, //0
0317:
0318: {
0319: "urlVar = './abc.html';",
0320: "urlVar = 'http://rajanagendra.sun.com/Base/Raja/abc.html';",
0321: "<Variable name=\"ur*r\" type=\"URL\"/>" //jsvar rule
0322: }, //1
0323:
0324: {
0325: "var urlVar = './abc.html';",
0326: "var urlVar = 'http://rajanagendra.sun.com/Base/Raja/abc.html';",
0327: "<Variable name=\"urlVar\" type=\"URL\"/>" //jsvar rule
0328: }, //2
0329:
0330: {
0331: "document.img[12].src = './abc.html';",
0332: "document.img[12].src = 'http://rajanagendra.sun.com/Base/Raja/abc.html';",
0333: "<Variable name=\"document.img*.src\" type=\"URL\"/>" }, //3
0334:
0335: {
0336: "document.img[12].src = './abc.html';",
0337: "document.img[12].src = 'http://rajanagendra.sun.com/Base/Raja/abc.html';",
0338: "<Variable name=\"doc*.img*.s*c\" type=\"URL\"/>" }, //4
0339:
0340: {
0341: //should not change
0342: "urlVar = './abc.html';",
0343: "urlVar = './abc.html';",
0344: "<Variable name=\"*\" type=\"URL\"/>" //jsvar rule
0345: }, //5
0346:
0347: };
0348:
0349: for (int i = 0; i < lData.length; i++) {
0350: RuleSet lRuleSet = CreateRuleSet
0351: .withJSVariableRules(lData[i][2]);
0352: Rewriter lRewriter = RewriterPool.create(lRuleSet,
0353: LanguageConstants.JS_MIME);
0354: String lResult = lRewriter.rewrite(lData[i][0],
0355: getDefaultTranslator());
0356: assertEquals("Failed: i = " + i, lData[i][1], lResult);
0357: }//for loop
0358: }//testSimpleJSVar()
0359:
0360: /**
0361: * Rewriter throws exception when parsing simple Javascript
0362: */
0363: public void testBug4623639() throws Exception {
0364: String lInput = "<HTML>\n"
0365: + " <HEAD>\n"
0366: + " <SCRIPT LANGUAGE=\"Javascript\">\n"
0367: + " top.document.location.href=\"/iw/cci/meta/no-injection/iw-mount/default/main/First/WORKAREA/One/test7.html\"\n"
0368: + " </SCRIPT>\n" + " </HEAD>\n" + "</HTML>\n";
0369:
0370: String lExpectation = "<HTML>\n"
0371: + " <HEAD>\n"
0372: + " <SCRIPT LANGUAGE=\"Javascript\">\n"
0373: + " top.document.location.href=\"http://rajanagendra.sun.com/iw/cci/meta/no-injection/iw-mount/default/main/First/WORKAREA/One/test7.html\"\n"
0374: + " </SCRIPT>\n" + " </HEAD>\n" + "</HTML>\n";
0375:
0376: String lJSVarRules = "<Variable name=\"top.document.location.href\" type=\"URL\"/>";
0377: RuleSet lRuleSet = CreateRuleSet
0378: .withJSVariableRules(lJSVarRules);
0379: Rewriter lRewriter = RewriterPool.create(lRuleSet,
0380: LanguageConstants.HTML_MIME);
0381: String lResult = lRewriter.rewrite(lInput,
0382: getDefaultTranslator());
0383: assertEquals(lExpectation, lResult);
0384: }//testBug4623639()
0385:
0386: public void testBugNo4634502() throws Exception {
0387: String lInput = "<HTML>\n"
0388: + "<HEAD>\n"
0389: + "<SCRIPT>\n"
0390: + "function MN(page){\n"
0391: + " var MO=page.location.pathname; // contains full URL w/o protocol\n"
0392: + " if(location.port != \"\") {\n"
0393: + " var KE=\"/:\" + location.port;\n"
0394: + " var KF=MO.lastIndexOf(KE);\n"
0395: + " if (KF == 0) {\n"
0396: + " MO=MO.substring(KE.length, MO.length);\n"
0397: + " }\n"
0398: + " }\n"
0399: + " var MO=MO.substring(0, MO.toLowerCase().indexOf(\".nsf\")) + \".nsf\";\n"
0400: + " return MO;\n"
0401: + "}\n"
0402: + "var url=MN(self) + '/' + \"0\" + '/' + \"$new\" + '/' + \"?EditDocument&Form=s_NamePickerNABList\";\n"
0403: + "html+='<form name=\"getabs\" target=\"sub_ab\" action=\"' + url + '\" method=\"post\">';\n"
0404: + "html+='</form>';\n" + "url+=',layout;' + 'foo';\n"
0405: + "url+=',planb;' + 'bar';\n"
0406: + "document.write(html);\n" + "document.write(url);\n"
0407: + "</SCRIPT>\n" + "</HEAD>\n" + "<BODY>\n"
0408: + "</BODY>\n" + "</HTML>\n";
0409:
0410: String lExpectation = lInput;
0411:
0412: String lJSVarRules = "<Variable name=\"url\" source=\"http://rajanagendra.sun.com*\" type=\"URL\"/>";
0413: RuleSet lRuleSet = CreateRuleSet
0414: .withJSVariableRules(lJSVarRules);
0415: Rewriter lRewriter = RewriterPool.create(lRuleSet,
0416: LanguageConstants.HTML_MIME);
0417: String lResult = lRewriter.rewrite(lInput,
0418: getDefaultTranslator());
0419: assertEquals(lExpectation, lResult);
0420: }//testBugNo4634502()
0421:
0422: public void testBug4634502VarientSimple() throws Exception {
0423: String lInput = "url += '<form name=\"getabs\" target=\"sub_ab\" action=\"' + url + '\" method=\"post\">';\n"
0424: + "var url= \"/index.html\";\n";
0425:
0426: String lExpectation = "url += '<form name=\"getabs\" target=\"sub_ab\" action=\"' + url + '\" method=\"post\">';\n"
0427: + "var url= \"http://rajanagendra.sun.com/index.html\";\n";
0428:
0429: String lJSVarRules = "<Variable name=\"myurl\" type=\"URL\" source=\"*/Base/Raja/raja.js\"/>"
0430: + "<Variable name=\"url\" type=\"URL\"/>";
0431: RuleSet lRuleSet = CreateRuleSet
0432: .withJSVariableRules(lJSVarRules);
0433: Rewriter lRewriter = RewriterPool.create(lRuleSet,
0434: LanguageConstants.JS_MIME);
0435: String lResult = lRewriter.rewrite(lInput,
0436: getDefaultJSTranslator());
0437: assertEquals(lExpectation, lResult);
0438: }//testBug4634502VarientSimple()
0439:
0440: public void testBug4634502VarientSimple1() throws Exception {
0441: String lInput = "url -= '<form name=\"getabs\" target=\"sub_ab\" action=\"' + url + '\" method=\"post\">';\n"
0442: + "var url= \"/index.html\";\n";
0443:
0444: String lExpectation = "url -= '<form name=\"getabs\" target=\"sub_ab\" action=\"' + url + '\" method=\"post\">';\n"
0445: + "var url= \"http://rajanagendra.sun.com/index.html\";\n";
0446:
0447: String lJSVarRules = "<Variable name=\"myurl\" type=\"URL\" source=\"http://rajanagendra.sun.com/Base/Raja/raja.js\"/>"
0448: + "<Variable name=\"url\" type=\"URL\"/>";
0449: RuleSet lRuleSet = CreateRuleSet
0450: .withJSVariableRules(lJSVarRules);
0451: Rewriter lRewriter = RewriterPool.create(lRuleSet,
0452: LanguageConstants.JS_MIME);
0453: String lResult = lRewriter.rewrite(lInput,
0454: getDefaultJSTranslator());
0455: assertEquals(lExpectation, lResult);
0456: }//testBug4634502VarientSimple1()
0457:
0458: public void testBug4634502VarientSimpleInvalidSource()
0459: throws Exception {
0460: String lInput = "url -= '<form name=\"getabs\" target=\"sub_ab\" action=\"' + url + '\" method=\"post\">';\n"
0461: + "var url= \"/index.html\";\n";
0462:
0463: String lJSVarRules = "<Variable name=\"myurl\" type=\"URL\" source=\"sun.com\"/>"
0464: + " <Variable name=\"url\" source=\"sun.com\" type=\"URL\"/>";
0465: RuleSet lRuleSet = CreateRuleSet
0466: .withJSVariableRules(lJSVarRules);
0467: Rewriter lRewriter = RewriterPool.create(lRuleSet,
0468: LanguageConstants.JS_MIME);
0469: String lResult = lRewriter.rewrite(lInput,
0470: getDefaultJSTranslator());
0471: assertEquals(lInput, lResult);
0472: }//testBug4634502VarientSimpleInvalidSource()
0473:
0474: public void testBugNo4647052() throws Exception {
0475: String lInput = "<HTML>\n"
0476: + "<HEAD><TITLE>Test Case for rewriting attr vals twice</TITLE></HEAD>\n"
0477: + "<SCRIPT LANGUAGE=\"JavaScript\">\n"
0478: + "lnk = \"abc.html\";\n"
0479: + "document.write('<A HREF=\"'+lnk+'/test_cases/foo.html\">\n');\n"
0480: + "document.write('<img border=\"0\" src=\"'+lnk+'/test_cases/cgi/images/test.jpg\" alt=\"ALT\"><BR>\n');\n"
0481: + "document.write('<img border=\"0\" src=\"/test_cases/cgi/images/test.jpg\" alt=\"ALT\">');\n"
0482: + "document.write('</A>');\n" + "</SCRIPT>\n"
0483: + "<BODY>\n" + "</BODY>\n" + "</HTML>\n";
0484:
0485: String lExpectation = "<HTML>\n"
0486: + "<HEAD><TITLE>Test Case for rewriting attr vals twice</TITLE></HEAD>\n"
0487: + "<SCRIPT LANGUAGE=\"JavaScript\">\n"
0488: + "lnk = \"http://rajanagendra.sun.com/Base/Raja/abc.html\";\n"
0489: + "document.write('<A HREF=\"'+lnk+'/test_cases/foo.html\">\n');\n"
0490: + "document.write('<img border=\"0\" src=\"'+lnk+'/test_cases/cgi/images/test.jpg\" alt=\"ALT\"><BR>\n');\n"
0491: + "document.write('<img border=\"0\" src=\"/test_cases/cgi/images/test.jpg\" alt=\"ALT\">');\n"
0492: + "document.write('</A>');\n" + "</SCRIPT>\n"
0493: + "<BODY>\n" + "</BODY>\n" + "</HTML>\n";
0494:
0495: String lJSVarRules = "<Variable name=\"lnk\" type=\"URL\"/>";
0496: RuleSet lRuleSet = CreateRuleSet
0497: .withJSVariableRules(lJSVarRules);
0498: Rewriter lRewriter = RewriterPool.create(lRuleSet,
0499: LanguageConstants.HTML_MIME);
0500: String lResult = lRewriter.rewrite(lInput,
0501: getDefaultTranslator());
0502: assertEquals(lExpectation, lResult);
0503: }//testBugNo4647052()
0504:
0505: public void testBugNo4647052CorrectedJS() throws Exception {
0506: String lInput = "<HTML>\n"
0507: + "<HEAD><TITLE>Test Case for rewriting attr vals twice</TITLE></HEAD>\n"
0508: + "<SCRIPT LANGUAGE=\"JavaScript\">\n"
0509: + "lnk = \"abc.html\";\n"
0510: + "document.write('<A HREF=\"'+lnk+'/test_cases/foo.html\">\\\n');\n"
0511: + "document.write('<img border=\"0\" src=\"'+lnk+'/test_cases/cgi/images/test.jpg\" alt=\"ALT\"><BR>');\n"
0512: + "document.write('<img border=\"0\" src=\"/test_cases/cgi/images/test.jpg\" alt=\"ALT\">');\n"
0513: + "document.write('</A>');\n" + "</SCRIPT>\n"
0514: + "<BODY>\n" + "</BODY>\n" + "</HTML>\n";
0515:
0516: String lExpectation = "<HTML>\n"
0517: + "<HEAD><TITLE>Test Case for rewriting attr vals twice</TITLE></HEAD>\n"
0518: + "<SCRIPT LANGUAGE=\"JavaScript\">\n"
0519: + "lnk = \"http://rajanagendra.sun.com/Base/Raja/abc.html\";\n"
0520: + "document.write('<A HREF=\"'+lnk+'/test_cases/foo.html\">\\\n');\n"
0521: + "document.write('<img border=\"0\" src=\"'+lnk+'/test_cases/cgi/images/test.jpg\" alt=\"ALT\"><BR>');\n"
0522: + "document.write('<img border=\"0\" src=\"/test_cases/cgi/images/test.jpg\" alt=\"ALT\">');\n"
0523: + "document.write('</A>');\n" + "</SCRIPT>\n"
0524: + "<BODY>\n" + "</BODY>\n" + "</HTML>\n";
0525:
0526: String lJSVarRules = "<Variable name=\"lnk\" type=\"URL\"/>";
0527: RuleSet lRuleSet = CreateRuleSet
0528: .withJSVariableRules(lJSVarRules);
0529: Rewriter lRewriter = RewriterPool.create(lRuleSet,
0530: LanguageConstants.HTML_MIME);
0531: String lResult = lRewriter.rewrite(lInput,
0532: getDefaultTranslator());
0533: assertEquals(lExpectation, lResult);
0534: }//testBugNo4647052CorrectedJS()
0535:
0536: public void testBugNo4647052CorrectedJSDHTMLRule() throws Exception {
0537: String lInput = "<HTML>\n"
0538: + "<HEAD><TITLE>Test Case for rewriting attr vals twice</TITLE></HEAD>\n"
0539: + "<SCRIPT LANGUAGE=\"JavaScript\">\n"
0540: + "lnk = \"abc.html\";\n"
0541: + "document.write('<A HREF=\"'+lnk+'/test_cases/foo.html\">\\\n');\n"
0542: + "document.write('<img border=\"0\" src=\"'+lnk+'/test_cases/cgi/images/test.jpg\" alt=\"ALT\"><BR>');\n"
0543: + "document.write('<img border=\"0\" src=\"/test_cases/cgi/images/test.jpg\" alt=\"ALT\">');\n"
0544: + "document.write('</A>');\n" + "</SCRIPT>\n"
0545: + "<BODY>\n" + "</BODY>\n" + "</HTML>\n";
0546:
0547: String lExpectation = "<HTML>\n"
0548: + "<HEAD><TITLE>Test Case for rewriting attr vals twice</TITLE></HEAD>\n"
0549: + "<SCRIPT LANGUAGE=\"JavaScript\">\n"
0550: + "lnk = \"http://rajanagendra.sun.com/Base/Raja/abc.html\";\n"
0551: + "document.write('<A HREF=\"'+lnk+'/test_cases/foo.html\">');\n"
0552: + "document.write('<img border=\"0\" src=\"'+lnk+'/test_cases/cgi/images/test.jpg\" alt=\"ALT\"><BR>');\n"
0553: + "document.write('<img border=\"0\" src=\"/test_cases/cgi/images/test.jpg\" alt=\"ALT\">');\n"
0554: + "document.write('</A>');\n" + "</SCRIPT>\n"
0555: + "<BODY>\n" + "</BODY>\n" + "</HTML>\n";
0556:
0557: String lJSVarRules = "<Variable name=\"lnk\" type=\"URL\"/>";
0558: String lJSFunRules = "<Function name=\"document.write\" type=\"DHTML\" paramPatterns='y'/>";
0559:
0560: RuleSet lRuleSet = CreateRuleSet.withHTMLAttJSVarJSFunRules("",
0561: lJSVarRules, lJSFunRules);
0562: Rewriter lRewriter = RewriterPool.create(lRuleSet,
0563: LanguageConstants.HTML_MIME);
0564: String lResult = lRewriter.rewrite(lInput,
0565: getDefaultTranslator());
0566: assertEquals(lExpectation, lResult);
0567: }//testBugNo4647052CorrectedJSDHTMLRule()
0568:
0569: public void testBugNo4647052CorrectedJSDHTML_EXPRESSIONRule()
0570: throws Exception {
0571: String lInput = "<HTML>\n"
0572: + "<HEAD><TITLE>Test Case for rewriting attr vals twice</TITLE></HEAD>\n"
0573: + "<SCRIPT LANGUAGE=\"JavaScript\">\n"
0574: + "lnk = \"abc.html\";\n"
0575: + "document.write('<A HREF=\"'+lnk+'/test_cases/foo.html\">\\\n');\n"
0576: + "document.write('<img border=\"0\" src=\"'+lnk+'/test_cases/cgi/images/test.jpg\" alt=\"ALT\"><BR>');\n"
0577: + "document.write('<img border=\"0\" src=\"/test_cases/cgi/images/test.jpg\" alt=\"ALT\">');\n"
0578: + "document.write('</A>');\n" + "</SCRIPT>\n"
0579: + "<BODY>\n" + "</BODY>\n" + "</HTML>\n";
0580:
0581: String lExpectation = "<HTML>\n"
0582: + "<HEAD><TITLE>Test Case for rewriting attr vals twice</TITLE></HEAD>\n"
0583: + JSWrapperHelper.CONVERT_EXPRESSION_FUNCTION_HTML
0584: + "<SCRIPT LANGUAGE=\"JavaScript\">\n"
0585: + "lnk = \"http://rajanagendra.sun.com/Base/Raja/abc.html\";\n"
0586: + "document.write('<A HREF=\"'+"
0587: + JSWrapperHelper.CONVERT_EXPRESSION_FUNCTION_WRAP_START
0588: + "lnk)+'/test_cases/foo.html\">');\n"
0589: + "document.write('<img border=\"0\" src=\"'+"
0590: + JSWrapperHelper.CONVERT_EXPRESSION_FUNCTION_WRAP_START
0591: + "lnk)+'/test_cases/cgi/images/test.jpg\" alt=\"ALT\"><BR>');\n"
0592: + "document.write('<img border=\"0\" src=\"/test_cases/cgi/images/test.jpg\" alt=\"ALT\">');\n"
0593: + "document.write('</A>');\n" + "</SCRIPT>\n"
0594: + "<BODY>\n" + "</BODY>\n" + "</HTML>\n";
0595:
0596: String lJSVarRules = "<Variable name=\"lnk\" type=\"EXPRESSION\"/>";
0597: String lJSFunRules = "<Function name=\"document.write\" type=\"DHTML\" paramPatterns='y'/>";
0598:
0599: RuleSet lRuleSet = CreateRuleSet.withHTMLAttJSVarJSFunRules("",
0600: lJSVarRules, lJSFunRules);
0601: Rewriter lRewriter = RewriterPool.create(lRuleSet,
0602: LanguageConstants.HTML_MIME);
0603: String lResult = lRewriter.rewrite(lInput,
0604: getDefaultTranslator());
0605: assertEquals(lExpectation, lResult);
0606: }//testBugNo4647052CorrectedJSDHTML_EXPRESSIONRule()
0607:
0608: public void testBug4634502VarientCauseISPlusEquals()
0609: throws Exception {
0610: String lInput = "html+='<form name=\"getabs\" target=\"sub_ab\" action=\"' + url + '\" method=\"post\">';\n"
0611: + "var url=\"/index.html\";\n"
0612: + "var myurl=\"astmyurl4\";\n"
0613: + "alert (url);\n"
0614: + "document.write(html);\n" + "document.write(url);\n";
0615:
0616: String lExpectation = "html+='<form name=\"getabs\" target=\"sub_ab\" action=\"' + url + '\" method=\"post\">';\n"
0617: + "var url=\"http://rajanagendra.sun.com/index.html\";\n"
0618: + "var myurl=\"http://rajanagendra.sun.com/Base/Raja/astmyurl4\";\n"
0619: + "alert (url);\n"
0620: + "document.write(html);\n"
0621: + "document.write(url);\n";
0622:
0623: String lJSVarRules = "<Variable name=\"myurl\" type=\"URL\"/>"
0624: + " <Variable name=\"url\" type=\"URL\"/>";
0625: RuleSet lRuleSet = CreateRuleSet
0626: .withJSVariableRules(lJSVarRules);
0627: Rewriter lRewriter = RewriterPool.create(lRuleSet,
0628: LanguageConstants.JS_MIME);
0629: String lResult = lRewriter.rewrite(lInput,
0630: getDefaultJSTranslator());
0631: assertEquals(lExpectation, lResult);
0632: }//testBug4634502VarientCauseISPlusEquals()
0633:
0634: public void testBug4634502VarientCauseISPlusEqualsNoSEMI()
0635: throws Exception {
0636: String lInput = "html+='<form name=\"getabs\" target=\"sub_ab\" action=\"' + url + '\" method=\"post\">'\n"
0637: + "var url=\"/index.html\";\n"
0638: + "var myurl=\"astmyurl4\";\n"
0639: + "alert (url);\n"
0640: + "document.write(html);\n" + "document.write(url);\n";
0641:
0642: String lExpectation = "html+='<form name=\"getabs\" target=\"sub_ab\" action=\"' + url + '\" method=\"post\">'\n"
0643: + "var url=\"http://rajanagendra.sun.com/index.html\";\n"
0644: + "var myurl=\"http://rajanagendra.sun.com/Base/Raja/astmyurl4\";\n"
0645: + "alert (url);\n"
0646: + "document.write(html);\n"
0647: + "document.write(url);\n";
0648:
0649: String lJSVarRules = "<Variable name=\"myurl\" type=\"URL\"/>"
0650: + " <Variable name=\"url\" type=\"URL\"/>";
0651: RuleSet lRuleSet = CreateRuleSet
0652: .withJSVariableRules(lJSVarRules);
0653: Rewriter lRewriter = RewriterPool.create(lRuleSet,
0654: LanguageConstants.JS_MIME);
0655: String lResult = lRewriter.rewrite(lInput,
0656: getDefaultJSTranslator());
0657: assertEquals(lExpectation, lResult);
0658: }//testBug4634502VarientCauseISPlusEquals()
0659:
0660: public void testBug4634502Varient1() throws Exception {
0661: String lInput = "var url=\"/index.html\";\n"
0662: + "var myurl=\"astmyurl4\";\n" + "alert (url);\n"
0663: + "document.write(html);\n" + "document.write(url);\n";
0664:
0665: String lExpectation = "var url=\"http://rajanagendra.sun.com/index.html\";\n"
0666: + "var myurl=\"http://rajanagendra.sun.com/Base/Raja/astmyurl4\";\n"
0667: + "alert (url);\n"
0668: + "document.write(html);\n"
0669: + "document.write(url);\n";
0670:
0671: String lJSVarRules = "<Variable name=\"myurl\" type=\"URL\"/>"
0672: + "<Variable name=\"url\" type=\"URL\"/>";
0673: RuleSet lRuleSet = CreateRuleSet
0674: .withJSVariableRules(lJSVarRules);
0675: Rewriter lRewriter = RewriterPool.create(lRuleSet,
0676: LanguageConstants.JS_MIME);
0677: String lResult = lRewriter.rewrite(lInput,
0678: getDefaultJSTranslator());
0679: assertEquals(lExpectation, lResult);
0680: }//testBug4634502Varient1()
0681:
0682: public void testBug4634502Varient2() throws Exception {
0683: String lInput = "var url=MN(self) + '/' + \"0\" + '/' + \"$new\" + '/' + \"?EditDocument&Form=s_NamePickerNABList\";\n"
0684: + "var url=MN(self) + '/' + \"0\" + '/' + \"$new\" + '/' + \"?EditDocument&Form=s_NamePickerNABList\";\n"
0685: + "var url=\"/index.html\";\n"
0686: + "var myurl=\"astmyurl4\";\n"
0687: + "alert (url);\n"
0688: + "document.write(html);\n" + "document.write(url);\n";
0689:
0690: String lExpectation = "var url=MN(self) + '/' + \"0\" + '/' + \"$new\" + '/' + \"?EditDocument&Form=s_NamePickerNABList\";\n"
0691: + "var url=MN(self) + '/' + \"0\" + '/' + \"$new\" + '/' + \"?EditDocument&Form=s_NamePickerNABList\";\n"
0692: + "var url=\"http://rajanagendra.sun.com/index.html\";\n"
0693: + "var myurl=\"http://rajanagendra.sun.com/Base/Raja/astmyurl4\";\n"
0694: + "alert (url);\n"
0695: + "document.write(html);\n"
0696: + "document.write(url);\n";
0697:
0698: String lJSVarRules = "<Variable name=\"myurl\" type=\"URL\"/>"
0699: + "<Variable name=\"url\" type=\"URL\"/>";
0700: RuleSet lRuleSet = CreateRuleSet
0701: .withJSVariableRules(lJSVarRules);
0702: Rewriter lRewriter = RewriterPool.create(lRuleSet,
0703: LanguageConstants.JS_MIME);
0704: String lResult = lRewriter.rewrite(lInput,
0705: getDefaultJSTranslator());
0706: assertEquals(lExpectation, lResult);
0707: }//testBug4634502Varient2()
0708:
0709: public void testBug4634502Varient3() throws Exception {
0710: String lInput = "html ='<form name=\"getabs\" target=\"sub_ab\" action=\"' + url + '\" method=\"post\">';\n"
0711: + "var url=\"/index.html\";\n"
0712: + "var myurl=\"astmyurl4\";\n"
0713: + "alert (url);\n"
0714: + "document.write(html);\n" + "document.write(url);\n";
0715:
0716: String lExpectation = "html ='<form name=\"getabs\" target=\"sub_ab\" action=\"' + url + '\" method=\"post\">';\n"
0717: + "var url=\"http://rajanagendra.sun.com/index.html\";\n"
0718: + "var myurl=\"http://rajanagendra.sun.com/Base/Raja/astmyurl4\";\n"
0719: + "alert (url);\n"
0720: + "document.write(html);\n"
0721: + "document.write(url);\n";
0722:
0723: String lJSVarRules = "<Variable name=\"myurl\" type=\"URL\"/>"
0724: + "<Variable name=\"url\" type=\"URL\"/>";
0725: RuleSet lRuleSet = CreateRuleSet
0726: .withJSVariableRules(lJSVarRules);
0727: Rewriter lRewriter = RewriterPool.create(lRuleSet,
0728: LanguageConstants.JS_MIME);
0729: String lResult = lRewriter.rewrite(lInput,
0730: getDefaultJSTranslator());
0731: assertEquals(lExpectation, lResult);
0732: }//testBug4634502Varient3()
0733:
0734: public void testBug4634502Varient4() throws Exception {
0735: String lInput = "html+='<form name=\"getabs\" target=\"sub_ab\" action=\"' + url + '\" method=\"post\">';\n"
0736: + "html+='</form>';\n"
0737: + "url+=',layout;' + 'foo';\n"
0738: + "url+=',planb;' + 'bar';\n"
0739: + "var url=\"/index.html\";\n"
0740: + "var myurl=\"astmyurl4\";\n"
0741: + "alert (url);\n"
0742: + "document.write(html);\n" + "document.write(url);\n";
0743:
0744: String lExpectation = "html+='<form name=\"getabs\" target=\"sub_ab\" action=\"' + url + '\" method=\"post\">';\n"
0745: + "html+='</form>';\n"
0746: + "url+=',layout;' + 'foo';\n"
0747: + "url+=',planb;' + 'bar';\n"
0748: + "var url=\"http://rajanagendra.sun.com/index.html\";\n"
0749: + "var myurl=\"http://rajanagendra.sun.com/Base/Raja/astmyurl4\";\n"
0750: + "alert (url);\n"
0751: + "document.write(html);\n"
0752: + "document.write(url);\n";
0753:
0754: String lJSVarRules = "<Variable name=\"myurl\" type=\"URL\"/>"
0755: + "<Variable name=\"url\" type=\"URL\"/>";
0756: RuleSet lRuleSet = CreateRuleSet
0757: .withJSVariableRules(lJSVarRules);
0758: Rewriter lRewriter = RewriterPool.create(lRuleSet,
0759: LanguageConstants.JS_MIME);
0760: String lResult = lRewriter.rewrite(lInput,
0761: getDefaultJSTranslator());
0762: assertEquals(lExpectation, lResult);
0763: }//testBug4634502Varient4()
0764:
0765: public void testBug4634502Varient6() throws Exception {
0766: String lInput = "var url=MN(self) + '/' + \"0\" + '/' + \"$new\" + '/' + \"?EditDocument&Form=s_NamePickerNABList\";\n"
0767: + "var url=MN(self) + '/' + \"0\" + '/' + \"$new\" + '/' + \"?EditDocument&Form=s_NamePickerNABList\";\n"
0768: + "html+='<form name=\"getabs\" target=\"sub_ab\" action=\"' + url + '\" method=\"post\">';\n"
0769: + "html+='</form>';\n"
0770: + "url+=',layout;' + 'foo';\n"
0771: + "url+=',planb;' + 'bar';\n"
0772: + "var url=\"/index.html\";\n"
0773: + "var myurl=\"astmyurl4\";\n"
0774: + "alert (url);\n"
0775: + "document.write(html);\n" + "document.write(url);\n";
0776:
0777: String lExpectation = "var url=MN(self) + '/' + \"0\" + '/' + \"$new\" + '/' + \"?EditDocument&Form=s_NamePickerNABList\";\n"
0778: + "var url=MN(self) + '/' + \"0\" + '/' + \"$new\" + '/' + \"?EditDocument&Form=s_NamePickerNABList\";\n"
0779: + "html+='<form name=\"getabs\" target=\"sub_ab\" action=\"' + url + '\" method=\"post\">';\n"
0780: + "html+='</form>';\n"
0781: + "url+=',layout;' + 'foo';\n"
0782: + "url+=',planb;' + 'bar';\n"
0783: + "var url=\"http://rajanagendra.sun.com/index.html\";\n"
0784: + "var myurl=\"http://rajanagendra.sun.com/Base/Raja/astmyurl4\";\n"
0785: + "alert (url);\n"
0786: + "document.write(html);\n"
0787: + "document.write(url);\n";
0788:
0789: String lJSVarRules = "<Variable name=\"myurl\" type=\"URL\"/>"
0790: + "<Variable name=\"url\" type=\"URL\"/>";
0791: RuleSet lRuleSet = CreateRuleSet
0792: .withJSVariableRules(lJSVarRules);
0793: Rewriter lRewriter = RewriterPool.create(lRuleSet,
0794: LanguageConstants.JS_MIME);
0795: String lResult = lRewriter.rewrite(lInput,
0796: getDefaultJSTranslator());
0797: assertEquals(lExpectation, lResult);
0798: }//testBug4634502Varient6()
0799:
0800: public void testBug4634502Varient6Negative() throws Exception {
0801: String lInput = "var myurl=\"../abc2.html\";\n"
0802: + "var url=MN(self) + '/' + \"0\" + '/' + \"$new\" + '/' + \"?EditDocument&Form=s_NamePickerNABList\";\n"
0803: + "var url=MN(self) + '/' + \"0\" + '/' + \"$new\" + '/' + \"?EditDocument&Form=s_NamePickerNABList\";\n"
0804: + "html+='<form name=\"getabs\" target=\"sub_ab\" action=\"' + url + '\" method=\"post\">';\n"
0805: + "html+='</form>'>;\n"
0806: + //observe greater than symbol
0807: "url+=',layout;' + 'foo';\n"
0808: + "url+=',planb;' + 'bar';\n"
0809: + "var url=\"/index.html\";\n"
0810: + "var myurl=\"astmyurl4\";\n" + "alert (url);\n"
0811: + "document.write(html);\n" + "document.write(url);\n";
0812:
0813: String lExpectation = "var myurl=\"http://rajanagendra.sun.com/Base/abc2.html\";\n"
0814: + "var url=MN(self) + '/' + \"0\" + '/' + \"$new\" + '/' + \"?EditDocument&Form=s_NamePickerNABList\";\n"
0815: + "var url=MN(self) + '/' + \"0\" + '/' + \"$new\" + '/' + \"?EditDocument&Form=s_NamePickerNABList\";\n"
0816: + "html+='<form name=\"getabs\" target=\"sub_ab\" action=\"' + url + '\" method=\"post\">';\n"
0817: + "html+='</form>'>;\n"
0818: + "url+=',layout;' + 'foo';\n"
0819: + "url+=',planb;' + 'bar';\n"
0820: + "var url=\"/index.html\";\n"
0821: + "var myurl=\"astmyurl4\";\n"
0822: + "alert (url);\n"
0823: + "document.write(html);\n" + "document.write(url);\n";
0824:
0825: String lJSVarRules = "<Variable name=\"myurl\" type=\"URL\"/>"
0826: + " <Variable name=\"url\" type=\"URL\"/>";
0827: RuleSet lRuleSet = CreateRuleSet
0828: .withJSVariableRules(lJSVarRules);
0829: Rewriter lRewriter = RewriterPool.create(lRuleSet,
0830: LanguageConstants.JS_MIME);
0831: String lResult = lRewriter.rewrite(lInput,
0832: getDefaultJSTranslator());
0833: assertEquals(lExpectation, lResult);
0834: }//testBug4634502Varient6Negative()
0835:
0836: public void testBug4634502Varient7() throws Exception {
0837: String lInput = "<HTML>\n"
0838: + "<HEAD>\n"
0839: + "\n"
0840: + "<SCRIPT>\n"
0841: + "var myurl=\"/myurl1\";\n"
0842: + "function MN(page){\n"
0843: + " var MO=page.location.pathname; \n"
0844: + " if(location.port != \"\") {\n"
0845: + " var KE=\"/:\" + location.port;\n"
0846: + " var KF=MO.lastIndexOf(KE);\n"
0847: + " if (KF == 0) {\n"
0848: + " MO=MO.substring(KE.length, MO.length);\n"
0849: + " }\n"
0850: + " }\n"
0851: + "\n"
0852: + " var MO=MO.substring(0, MO.toLowerCase().indexOf(\".nsf\")) + \".nsf\";\n"
0853: + "var myurl=\"../abc2.html\";\n"
0854: + " return MO;\n"
0855: + "}\n"
0856: + "var myurl=\"/abc3.html\";\n"
0857: + "var url=MN(self) + '/' + \"0\" + '/' + \"$new\" + '/' + \"?EditDocument&Form=s_NamePickerNABList\";\n"
0858: + "var url=MN(self) + '/' + \"0\" + '/' + \"$new\" + '/' + \"?EditDocument&Form=s_NamePickerNABList\";\n"
0859: + "html+='<form name=\"getabs\" target=\"sub_ab\" action=\"' + url + '\" method=\"post\">';\n"
0860: + "html+='</form>';\n"
0861: + "url+=',layout;' + 'foo';\n"
0862: + "url+=',planb;' + 'bar';\n"
0863: + "var url=\"/index.html\";\n"
0864: + "var myurl=\"astmyurl4\";\n"
0865: + "alert (url);\n"
0866: + "document.write(html);\n"
0867: + "document.write(url);\n"
0868: + "</SCRIPT>\n"
0869: + "</HEAD>\n"
0870: + "<BODY>\n"
0871: + "<BR>\n"
0872: + "Testing...repeated url rewriting..\n"
0873: + "Add \"url\" to \"Rewrite JavaScript Variables in URLs\"\n"
0874: + "</BODY>\n" + "</HTML>\n";
0875:
0876: String lExpectation = "<HTML>\n"
0877: + "<HEAD>\n"
0878: + "\n"
0879: + "<SCRIPT>\n"
0880: + "var myurl=\"http://rajanagendra.sun.com/myurl1\";\n"
0881: + "function MN(page){\n"
0882: + " var MO=page.location.pathname; \n"
0883: + " if(location.port != \"\") {\n"
0884: + " var KE=\"/:\" + location.port;\n"
0885: + " var KF=MO.lastIndexOf(KE);\n"
0886: + " if (KF == 0) {\n"
0887: + " MO=MO.substring(KE.length, MO.length);\n"
0888: + " }\n"
0889: + " }\n"
0890: + "\n"
0891: + " var MO=MO.substring(0, MO.toLowerCase().indexOf(\".nsf\")) + \".nsf\";\n"
0892: + "var myurl=\"http://rajanagendra.sun.com/Base/abc2.html\";\n"
0893: + " return MO;\n"
0894: + "}\n"
0895: + "var myurl=\"http://rajanagendra.sun.com/abc3.html\";\n"
0896: + "var url=MN(self) + '/' + \"0\" + '/' + \"$new\" + '/' + \"?EditDocument&Form=s_NamePickerNABList\";\n"
0897: + "var url=MN(self) + '/' + \"0\" + '/' + \"$new\" + '/' + \"?EditDocument&Form=s_NamePickerNABList\";\n"
0898: + "html+='<form name=\"getabs\" target=\"sub_ab\" action=\"' + url + '\" method=\"post\">';\n"
0899: + "html+='</form>';\n"
0900: + "url+=',layout;' + 'foo';\n"
0901: + "url+=',planb;' + 'bar';\n"
0902: + "var url=\"http://rajanagendra.sun.com/index.html\";\n"
0903: + "var myurl=\"http://rajanagendra.sun.com/Base/Raja/astmyurl4\";\n"
0904: + "alert (url);\n"
0905: + "document.write(html);\n"
0906: + "document.write(url);\n"
0907: + "</SCRIPT>\n"
0908: + "</HEAD>\n"
0909: + "<BODY>\n"
0910: + "<BR>\n"
0911: + "Testing...repeated url rewriting..\n"
0912: + "Add \"url\" to \"Rewrite JavaScript Variables in URLs\"\n"
0913: + "</BODY>\n" + "</HTML>\n";
0914:
0915: String lJSVarRules = "<Variable name=\"myurl\" type=\"URL\"/>"
0916: + "<Variable name=\"url\" type=\"URL\"/>";
0917: RuleSet lRuleSet = CreateRuleSet
0918: .withJSVariableRules(lJSVarRules);
0919: Rewriter lRewriter = RewriterPool.create(lRuleSet,
0920: LanguageConstants.HTML_MIME);
0921: String lResult = lRewriter.rewrite(lInput,
0922: getDefaultTranslator());
0923: assertEquals(lExpectation, lResult);
0924: }//testBug4634502Varient2()
0925:
0926: public void testURLVarFun() throws Exception {
0927: String lInput = "doc.all[all].src = 'abc' + b() + x(\"./xde.doc\") + a;";
0928: String lExpectation = "doc.all[all].src = 'http://rajanagendra.sun.com/Base/Raja/abc' + b() + x(\"http://rajanagendra.sun.com/Base/Raja/xde.doc\") + a;";
0929:
0930: String lJSVarRules = "<Variable name=\"doc*.src\" type=\"URL\"/>"
0931: + "<Variable name=\"url\" type=\"URL\"/>";
0932: String lJSFunRules = "<Function type=\"URL\" name=\"x\" paramPatterns=\"y\" />";
0933:
0934: RuleSet lRuleSet = CreateRuleSet
0935: .withHTMLJSTokenJSVarJSFunRules("", lJSVarRules,
0936: lJSFunRules);
0937: Rewriter lRewriter = RewriterPool.create(lRuleSet,
0938: LanguageConstants.JS_MIME);
0939: String lResult = lRewriter.rewrite(lInput,
0940: getDefaultJSTranslator());
0941: assertEquals(lExpectation, lResult);
0942: }//testURLVarFun()
0943:
0944: public void testURLVarExpressionFun() throws Exception {
0945: String lInput = "doc.all[all].src = 'abc' + b() + x(var1 + \"./xde.doc\") + a;";
0946: String lExpectation = "doc.all[all].src = 'http://rajanagendra.sun.com/Base/Raja/abc' + b() + x("
0947: + JSWrapperHelper.CONVERT_EXPRESSION_FUNCTION_WRAP_START
0948: + "var1 + \"./xde.doc\")) + a;"
0949: + JSWrapperHelper.CONVERT_EXPRESSION_FUNCTION_JS;
0950:
0951: String lJSVarRules = "<Variable name=\"doc.all*.src\" type=\"URL\"/>"
0952: + " <Variable name=\"url\" type=\"URL\"/>";
0953: String lJSFunRules = "<Function type=\"EXPRESSION\" name=\"x\" paramPatterns=\"y\" />";
0954:
0955: RuleSet lRuleSet = CreateRuleSet
0956: .withHTMLJSTokenJSVarJSFunRules("", lJSVarRules,
0957: lJSFunRules);
0958: Rewriter lRewriter = RewriterPool.create(lRuleSet,
0959: LanguageConstants.JS_MIME);
0960: String lResult = lRewriter.rewrite(lInput,
0961: getDefaultJSTranslator());
0962: assertEquals(lExpectation, lResult);
0963: }//testURLVarFun()
0964:
0965: public void testBugNo4777957Null() throws Exception {
0966: String lInput = "<HTML>\n" + "<HEAD>\n" + "<SCRIPT>\n"
0967: + "szURL = null;\n" + "szURL = \"abc.html\";\n"
0968: + "szURL = null;\n" + "</SCRIPT>\n" + "</HEAD>\n"
0969: + "<BODY BGCOLOR=\"#FFFFFF\">\n" + "</BODY>\n"
0970: + "</HTML>\n";
0971:
0972: String lExpectation = "<HTML>\n"
0973: + "<HEAD>\n"
0974: + "<SCRIPT>\n"
0975: + "szURL = null;\n"
0976: + "szURL = \"http://rajanagendra.sun.com/Base/Raja/abc.html\";\n"
0977: + "szURL = null;\n" + "</SCRIPT>\n" + "</HEAD>\n"
0978: + "<BODY BGCOLOR=\"#FFFFFF\">\n" + "</BODY>\n"
0979: + "</HTML>\n";
0980:
0981: String lJSVarRules = "<Variable name=\"szURL\" type=\"URL\"/>"
0982: + "<Variable name=\"url\" type=\"URL\"/>";
0983:
0984: RuleSet lRuleSet = CreateRuleSet
0985: .withHTMLJSTokenJSVarJSFunRules("", lJSVarRules, "");
0986: Rewriter lRewriter = RewriterPool.create(lRuleSet,
0987: LanguageConstants.HTML_MIME);
0988: String lResult = lRewriter.rewrite(lInput,
0989: getDefaultJSTranslator());
0990: assertEquals(lExpectation, lResult);
0991: }//testBugNo4777957Null()
0992:
0993: public void testBugNo4787433FunctionCallVar() throws Exception {
0994: String lInput = "function someFunction() \n"
0995: + "{\n"
0996: + " getTopFrame().main.location.href=\"/someURI?someParameter\";\n"
0997: + "}\n";
0998:
0999: String lExpectation = "function someFunction() \n"
1000: + "{\n"
1001: + " getTopFrame().main.location.href=\"http://rajanagendra.sun.com/someURI?someParameter\";\n"
1002: + "}\n";
1003:
1004: String lJSVarRules[] = {
1005: "<Variable name=\"*href\" type=\"URL\"/>",
1006: "<Variable name=\"getTopFrame*.main.location.href\" type=\"URL\"/>",
1007: "<Variable name=\"*.main.location.href\" type=\"URL\"/>",
1008: "<Variable name=\"*main.location.href\" type=\"URL\"/>",
1009: "<Variable name=\"*location.href\" type=\"URL\"/>", };
1010:
1011: for (int i = 0; i < lJSVarRules.length; i++) {
1012: RuleSet lRuleSet = CreateRuleSet
1013: .withJSVariableRules(lJSVarRules[i]);
1014: Rewriter lRewriter = RewriterPool.create(lRuleSet,
1015: LanguageConstants.JS_MIME);
1016: String lResult = lRewriter.rewrite(lInput,
1017: getDefaultJSTranslator());
1018: assertEquals(lExpectation, lResult);
1019: }
1020: }//testBugNo4787433FunctionCallVar()
1021:
1022: public void testBugNo4787433FunctionCallVar3() throws Exception {
1023: String lInput = "function someFunction() \n"
1024: + "{\n"
1025: + " getTopFrame('a','a').main.location.href=\"/someURI?someParameter\";\n"
1026: + "}\n";
1027:
1028: String lExpectation = "function someFunction() \n"
1029: + "{\n"
1030: + " getTopFrame('a','a').main.location.href=\"http://rajanagendra.sun.com/someURI?someParameter\";\n"
1031: + "}\n";
1032:
1033: String lJSVarRules[] = {
1034: "<Variable name=\"*href\" type=\"URL\"/>",
1035: "<Variable name=\"getTopFrame*.main.location.href\" type=\"URL\"/>",
1036: "<Variable name=\"*.main.location.href\" type=\"URL\"/>",
1037: "<Variable name=\"*main.location.href\" type=\"URL\"/>",
1038: "<Variable name=\"*location.href\" type=\"URL\"/>", };
1039:
1040: for (int i = 0; i < lJSVarRules.length; i++) {
1041: RuleSet lRuleSet = CreateRuleSet
1042: .withJSVariableRules(lJSVarRules[i]);
1043: Rewriter lRewriter = RewriterPool.create(lRuleSet,
1044: LanguageConstants.JS_MIME);
1045: String lResult = lRewriter.rewrite(lInput,
1046: getDefaultJSTranslator());
1047: assertEquals(lExpectation, lResult);
1048: }
1049: }//testBugNo4787433FunctionCallVar3()
1050:
1051: public void testBugNo4787433FunctionCallVarNeg() throws Exception {
1052: String lInput = "function someFunction() \n"
1053: + "{\n"
1054: + " getTopFrame().main.location.href=\"/someURI?someParameter\";\n"
1055: + "}\n";
1056:
1057: String lJSVarRules[] = { "<Variable name=\"getTopFrame().main.location.href\" type=\"URL\"/>", };
1058:
1059: for (int i = 0; i < lJSVarRules.length; i++) {
1060: RuleSet lRuleSet = CreateRuleSet
1061: .withJSVariableRules(lJSVarRules[i]);
1062: Rewriter lRewriter = RewriterPool.create(lRuleSet,
1063: LanguageConstants.JS_MIME);
1064: String lResult = lRewriter.rewrite(lInput,
1065: getDefaultJSTranslator());
1066: assertEquals(lInput, lResult);
1067: }
1068: }//testBugNo4787433FunctionCallVarNeg()
1069:
1070: public void testBugNo4787433FunctionCallVar2() throws Exception {
1071: String lInput = "getTopFrame().main.location.href=\"/someURI?someParameter\";\n";
1072:
1073: String lExpectation = "getTopFrame().main.location.href=\"http://rajanagendra.sun.com/someURI?someParameter\";\n";
1074:
1075: String lJSVarRules[] = {
1076: "<Variable name=\"*href\" type=\"URL\"/>",
1077: "<Variable name=\"getTopFrame*.main.location.href\" type=\"URL\"/>",
1078: "<Variable name=\"*.main.location.href\" type=\"URL\"/>",
1079: "<Variable name=\"*main.location.href\" type=\"URL\"/>",
1080: "<Variable name=\"*location.href\" type=\"URL\"/>", };
1081:
1082: for (int i = 0; i < lJSVarRules.length; i++) {
1083: RuleSet lRuleSet = CreateRuleSet
1084: .withJSVariableRules(lJSVarRules[i]);
1085: Rewriter lRewriter = RewriterPool.create(lRuleSet,
1086: LanguageConstants.JS_MIME);
1087: String lResult = lRewriter.rewrite(lInput,
1088: getDefaultJSTranslator());
1089: assertEquals("Faild at rule i=" + i, lExpectation, lResult);
1090: }
1091: }//testBugNo4787433FunctionCallVar2()
1092:
1093: public void testBugNo4787433FunctionCallVar1() throws Exception {
1094: String lInput = "function someFunction() \n"
1095: + "{\n"
1096: + " getTopFrame.main.location.href=\"/someURI?someParameter\";\n"
1097: + "}\n";
1098:
1099: String lExpectation = "function someFunction() \n"
1100: + "{\n"
1101: + " getTopFrame.main.location.href=\"http://rajanagendra.sun.com/someURI?someParameter\";\n"
1102: + "}\n";
1103:
1104: String lJSVarRules[] = {
1105: "<Variable name=\"getTopFrame.main.location.href\" type=\"URL\"/>",
1106: "<Variable name=\"*.main.location.href\" type=\"URL\"/>",
1107: "<Variable name=\"*main.location.href\" type=\"URL\"/>",
1108: "<Variable name=\"*.location.href\" type=\"URL\"/>",
1109: "<Variable name=\"*location.href\" type=\"URL\"/>",
1110: "<Variable name=\"*.href\" type=\"URL\"/>",
1111: "<Variable name=\"*href\" type=\"URL\"/>", };
1112:
1113: for (int i = 0; i < lJSVarRules.length; i++) {
1114: RuleSet lRuleSet = CreateRuleSet
1115: .withJSVariableRules(lJSVarRules[i]);
1116: Rewriter lRewriter = RewriterPool.create(lRuleSet,
1117: LanguageConstants.JS_MIME);
1118: String lResult = lRewriter.rewrite(lInput,
1119: getDefaultJSTranslator());
1120: assertEquals("Faild at rule i=" + i, lExpectation, lResult);
1121: }
1122: }//testBugNo4787433FunctionCallVar1()
1123:
1124: public void testEntityReferenceVarURL() throws Exception {
1125: String lInput = "var a = '/portal/document1.pdf';"
1126: + "getTopFrame().main.location.href = '/portal/document1.pdf';"
1127: + "var a = ''portal/document1.pdf'';"
1128: + "getTopFrame().main.location.href = \"'/portal/document1.pdf'\";";
1129:
1130: String lExpectation = "var a = 'http://rajanagendra.sun.com/portal/document1.pdf';"
1131: + "getTopFrame().main.location.href = 'http://rajanagendra.sun.com/portal/document1.pdf';"
1132: + "var a = ''http://rajanagendra.sun.com/Base/Raja/portal/document1.pdf'';"
1133: + "getTopFrame().main.location.href = \"'http://rajanagendra.sun.com/portal/document1.pdf'\";";
1134:
1135: String lJSVarRules = "<Variable name=\"*main.location.href\" type=\"URL\"/>"
1136: + "<Variable name=\"a\" type=\"URL\"/>";
1137:
1138: RuleSet lRuleSet = CreateRuleSet
1139: .withJSVariableRules(lJSVarRules);
1140: Rewriter lRewriter = RewriterPool.create(lRuleSet,
1141: LanguageConstants.JS_MIME);
1142: String lResult = lRewriter.rewrite(lInput,
1143: getDefaultTranslator());
1144: assertEquals(lExpectation, lResult);
1145: }//testEntityReferenceVarURL()
1146:
1147: public void testEntityReferenceVarURL1() throws Exception {
1148: String lInput = "var a = '/portal/document1.pdf';"
1149: + "var a = '/portal/document1.pdf';"
1150: + "var a = '/portal/document1.pdf';"
1151: + "var a = "/portal/document1.pdf";"
1152: + "var a = "/portal/document1.pdf";"
1153: + "var a = "/portal/document1.pdf";"
1154: + "getTopFrame1().main.location.href = '/portal/document1.pdf';"
1155: + "var a = ''portal/document1.pdf'';"
1156: + "getTopFrame().main.location.href = \"'/portal/document1.pdf'\";";
1157:
1158: String lExpectation = "var a = 'http://rajanagendra.sun.com/portal/document1.pdf';"
1159: + "var a = 'http://rajanagendra.sun.com/portal/document1.pdf';"
1160: + "var a = 'http://rajanagendra.sun.com/portal/document1.pdf';"
1161: + "var a = "http://rajanagendra.sun.com/portal/document1.pdf";"
1162: + "var a = "http://rajanagendra.sun.com/portal/document1.pdf";"
1163: + "var a = "http://rajanagendra.sun.com/portal/document1.pdf";"
1164: + "getTopFrame1().main.location.href = 'http://rajanagendra.sun.com/portal/document1.pdf';"
1165: + "var a = ''http://rajanagendra.sun.com/Base/Raja/portal/document1.pdf'';"
1166: + "getTopFrame().main.location.href = \"'http://rajanagendra.sun.com/portal/document1.pdf'\";";
1167:
1168: String lJSVarRules = "<Variable name=\"*main.location.href\" type=\"URL\"/>"
1169: + "<Variable name=\"a\" type=\"URL\"/>";
1170:
1171: RuleSet lRuleSet = CreateRuleSet
1172: .withJSVariableRules(lJSVarRules);
1173: Rewriter lRewriter = RewriterPool.create(lRuleSet,
1174: LanguageConstants.JS_MIME);
1175: String lResult = lRewriter.rewrite(lInput,
1176: getDefaultTranslator());
1177: assertEquals(lExpectation, lResult);
1178: }//testEntityReferenceVarURL1()
1179:
1180: public void testBugNo4721347() {
1181:
1182: }//testBugNo4721347()
1183:
1184: public void testRegExVarValue() throws Exception {
1185: String lInput = "var re = /\\/[^a]*$/;\n" + "var a= 'abc'\n"
1186: + "var re = \"/suresh/suresh.html\";\n";
1187:
1188: String lExpectation = "var re = /\\/[^a]*$/;\n"
1189: + "var a= 'http://rajanagendra.sun.com/Base/Raja/abc'\n"
1190: + "var re = \"http://rajanagendra.sun.com/suresh/suresh.html\";\n";
1191:
1192: String lJSVarRules = "<Variable name=\"re\" type=\"URL\"/>"
1193: + "<Variable name=\"a\"/>";
1194:
1195: RuleSet lRuleSet = CreateRuleSet
1196: .withJSVariableRules(lJSVarRules);
1197: Rewriter lRewriter = RewriterPool.create(lRuleSet,
1198: LanguageConstants.JS_MIME);
1199: String lResult = lRewriter.rewrite(lInput,
1200: getDefaultTranslator());
1201: assertEquals(lExpectation, lResult);
1202: }//testRegExVarValue()
1203:
1204: public void testFixNeededRegExVarValueExpressionRule()
1205: throws Exception {
1206: String lInput = "var re = /\\/[^a]*$/;\n" + "var a= 'abc'\n"
1207: + "var re = \"/suresh/suresh.html\";\n";
1208:
1209: String lExpectation = "var re ="
1210: + JSWrapperHelper.CONVERT_EXPRESSION_FUNCTION_WRAP_START
1211: + " /\\/[^a]*$/);\n"
1212: + "var a= 'http://rajanagendra.sun.com/Base/Raja/abc'\n"
1213: + "var re = \"http://rajanagendra.sun.com/suresh/suresh.html\";\n"
1214: + JSWrapperHelper.CONVERT_EXPRESSION_FUNCTION_JS;
1215:
1216: String lJSVarRules = "<Variable name=\"re\" type=\"EXPRESSION\"/>"
1217: + "<Variable name=\"a\"/>";
1218:
1219: RuleSet lRuleSet = CreateRuleSet
1220: .withJSVariableRules(lJSVarRules);
1221: Rewriter lRewriter = RewriterPool.create(lRuleSet,
1222: LanguageConstants.JS_MIME);
1223: String lResult = lRewriter.rewrite(lInput,
1224: getDefaultTranslator());
1225: assertEquals(lExpectation, lResult);
1226: }//testFixNeededRegExVarValueExpressionRule()
1227:
1228: public void testIERegExVarValue() throws Exception {
1229: String lInput = "var re = /\\/[^/]*$/;\n"
1230: + //I.E Specific / without esc char
1231: "var re = /\\/[^\\/]*$/;\n"
1232: + "var re = /\\/[^\\/]*$/g;\n"
1233: + "var re = /\\/[^\\/]*$/m;\n"
1234: + "var re = /\\/[]*$/m;\n"
1235: + "var re = /\\/[^\\/]*$/i;\n"
1236: + "var re = /\\/[^\\/\\n\\r]*$/i;\n"
1237: + "var re = /\\/[^\\/[\\n[\\r]]avc1]*$/i;\n"
1238: + "var re = /\\/[^\\/[\\n[\\r]]avc2]*$/i\n"
1239: + "var re = /\\/[^\\/[\\n[\\r]]avc3]*$/i "
1240: + "var re = /\\/[^\\/[\\n[\\r]]avc4]*$/i\t"
1241: + "var re = /\\/[^\\/[\\n[\\r]]avc5]*$/i\r"
1242: + "var re = /\\/[^\\/[\\n[\\r]]avc6]*$/i "
1243: + "var a= 'abc'\n"
1244: + "var re = '/suresh/suresh.html';\n"
1245: + "//abc comment\n" + "/*abc blcok comment\n"
1246: + "wnd line */\n" + "var a= 'abc'\n";
1247:
1248: String lExpectation = "var re = /\\/[^/]*$/;\n"
1249: + "var re = /\\/[^\\/]*$/;\n"
1250: + "var re = /\\/[^\\/]*$/g;\n"
1251: + "var re = /\\/[^\\/]*$/m;\n"
1252: + "var re = /\\/[]*$/m;\n"
1253: + "var re = /\\/[^\\/]*$/i;\n"
1254: + "var re = /\\/[^\\/\\n\\r]*$/i;\n"
1255: + "var re = /\\/[^\\/[\\n[\\r]]avc1]*$/i;\n"
1256: + "var re = /\\/[^\\/[\\n[\\r]]avc2]*$/i\n"
1257: + "var re = /\\/[^\\/[\\n[\\r]]avc3]*$/i "
1258: + "var re = /\\/[^\\/[\\n[\\r]]avc4]*$/i\t"
1259: + "var re = /\\/[^\\/[\\n[\\r]]avc5]*$/i\n"
1260: + "var re = /\\/[^\\/[\\n[\\r]]avc6]*$/i "
1261: + "var a= 'http://rajanagendra.sun.com/Base/Raja/abc'\n"
1262: + "var re = 'http://rajanagendra.sun.com/suresh/suresh.html';\n"
1263: + "//abc comment\n"
1264: + "/*abc blcok comment\n"
1265: + "wnd line */\n"
1266: + "var a= 'http://rajanagendra.sun.com/Base/Raja/abc'\n";
1267:
1268: String lJSVarRules = "<Variable name=\"re\" type=\"URL\"/>"
1269: + "<Variable name=\"a\"/>";
1270:
1271: RuleSet lRuleSet = CreateRuleSet
1272: .withJSVariableRules(lJSVarRules);
1273: Rewriter lRewriter = RewriterPool.create(lRuleSet,
1274: LanguageConstants.JS_MIME);
1275: String lResult = lRewriter.rewrite(lInput,
1276: getDefaultTranslator());
1277: assertEquals(lExpectation, lResult);
1278: }//testIERegExVarValue()
1279:
1280: public void testIEFixNeededRegExVarValue() throws Exception {
1281: String lInput = "var re = /\\/[[abc]^/]*$/;\n"
1282: + "var re = '/suresh/suresh.html';\n";
1283:
1284: String lExpectation = "var re = /\\/[[abc]^/]*$/;\n"
1285: + "var re = 'http://rajanagendra.sun.com/suresh/suresh.html';\n";
1286:
1287: String lJSVarRules = "<Variable name=\"re\" type=\"URL\"/>";
1288:
1289: RuleSet lRuleSet = CreateRuleSet
1290: .withJSVariableRules(lJSVarRules);
1291: Rewriter lRewriter = RewriterPool.create(lRuleSet,
1292: LanguageConstants.JS_MIME);
1293: String lResult = lRewriter.rewrite(lInput,
1294: getDefaultTranslator());
1295: assertEquals(lInput, lResult);
1296: }//testIEFixNeededRegExVarValue()
1297:
1298: public void testIENegativeRegExVarValue() throws Exception {
1299: String lInput = "var re = /\\/[[abc]^/]*$;\n"
1300: + "var re = '/suresh/suresh.html';\n";
1301:
1302: String lJSVarRules = "<Variable name=\"re\" type=\"URL\"/>";
1303:
1304: RuleSet lRuleSet = CreateRuleSet
1305: .withJSVariableRules(lJSVarRules);
1306: Rewriter lRewriter = RewriterPool.create(lRuleSet,
1307: LanguageConstants.JS_MIME);
1308: String lResult = lRewriter.rewrite(lInput,
1309: getDefaultTranslator());
1310: assertEquals(lInput, lResult);
1311: }//testIENegativeRegExVarValue()
1312:
1313: public void testIENegative1RegExVarValue() throws Exception {
1314: String lInput = "var re = /\\/[[abc^/*$/;\n"
1315: + "var re = '/suresh/suresh.html';\n";
1316:
1317: String lJSVarRules = "<Variable name=\"re\" type=\"URL\"/>";
1318:
1319: RuleSet lRuleSet = CreateRuleSet
1320: .withJSVariableRules(lJSVarRules);
1321: Rewriter lRewriter = RewriterPool.create(lRuleSet,
1322: LanguageConstants.JS_MIME);
1323: String lResult = lRewriter.rewrite(lInput,
1324: getDefaultTranslator());
1325: assertEquals(lInput, lResult);
1326: }//testIENegative1RegExVarValue()
1327:
1328: public void testNumeralsInVarNames() throws Exception {
1329: String lInput = "var fIs12Hour = 'abc.html';"
1330: + "var fIs12Hour = -1;" + "var fIs12Hour = 'abc.html';";
1331:
1332: String lExpectation = "var fIs12Hour = 'http://rajanagendra.sun.com/Base/Raja/abc.html';"
1333: + "var fIs12Hour = -1;"
1334: + "var fIs12Hour = 'http://rajanagendra.sun.com/Base/Raja/abc.html';";
1335:
1336: String lJSVarRules = "<Variable name=\"fIs12Hour\" type=\"URL\"/>";
1337:
1338: RuleSet lRuleSet = CreateRuleSet
1339: .withJSVariableRules(lJSVarRules);
1340: Rewriter lRewriter = RewriterPool.create(lRuleSet,
1341: LanguageConstants.JS_MIME);
1342: String lResult = lRewriter.rewrite(lInput,
1343: getDefaultJSTranslator());
1344: assertEquals(lExpectation, lResult);
1345: }//testNumeralsInVarNames()
1346:
1347: public void testEscapedBraketInRegExpOWA() throws Exception {
1348: String lInput = "var fIs12Hour = 'abc.html';"
1349: + "var fIs12Hour = ( -1 == L_TimeFormat.search(/\\[H/) );"
1350: + "var fIs12Hour = ( -1 == L_TimeFormat.search(/\\[\\[H/) );"
1351: + "var fIs12Hour = 'abc.html';";
1352:
1353: String lExpectation = "var fIs12Hour = 'http://rajanagendra.sun.com/Base/Raja/abc.html';"
1354: + "var fIs12Hour = ( -1 == L_TimeFormat.search(/\\[H/) );"
1355: + "var fIs12Hour = ( -1 == L_TimeFormat.search(/\\[\\[H/) );"
1356: + "var fIs12Hour = 'http://rajanagendra.sun.com/Base/Raja/abc.html';";
1357:
1358: String lJSVarRules = "<Variable name=\"fIs12Hour\" type=\"URL\"/>";
1359:
1360: RuleSet lRuleSet = CreateRuleSet
1361: .withJSVariableRules(lJSVarRules);
1362: Rewriter lRewriter = RewriterPool.create(lRuleSet,
1363: LanguageConstants.JS_MIME);
1364: String lResult = lRewriter.rewrite(lInput,
1365: getDefaultJSTranslator());
1366: assertEquals(lExpectation, lResult);
1367: }//testEscapedBraketInRegExpOWA()
1368:
1369: public void testVarAsFunctionParam() throws Exception {
1370: String lInput = "var a3='abc.html';\n"
1371: + "functionXYZ(500,var6='/index.html');\n"
1372: + "functionXYZ('500',var6='/index.html');\n"
1373: + "functionXYZ1(var6='/../Raja/index.html',500);\n"
1374: + "functionXYZ1(var6='/./index.html','500');\n"
1375: + "var b= functionXYZ1(var6='./../index.html','500');\n"
1376: + "var a4 = functionXYZ2(varb3='./../bc.html', a3, './abc.html');\n"
1377: + "var a3='../abc.html';\n" + "var a3='/abc.html';\n";
1378:
1379: String lExpectation = "var a3='http://rajanagendra.sun.com/Base/Raja/abc.html';\n"
1380: + "functionXYZ(500,var6='http://rajanagendra.sun.com/index.html');\n"
1381: + "functionXYZ('500',var6='http://rajanagendra.sun.com/index.html');\n"
1382: + "functionXYZ1(var6='http://rajanagendra.sun.com/Raja/index.html',500);\n"
1383: + "functionXYZ1(var6='http://rajanagendra.sun.com/index.html','500');\n"
1384: + "var b= functionXYZ1(var6='http://rajanagendra.sun.com/Base/index.html','500');\n"
1385: + "var a4 = functionXYZ2(varb3='http://rajanagendra.sun.com/Base/bc.html', a3, 'http://rajanagendra.sun.com/Base/Raja/abc.html');\n"
1386: + "var a3='http://rajanagendra.sun.com/Base/abc.html';\n"
1387: + "var a3='http://rajanagendra.sun.com/abc.html';\n";
1388:
1389: String lJSVarRules = "<Variable name=\"a3\"/>"
1390: + "<Variable name=\"var*6\"/>"
1391: + "<Variable name=\"var*3\"/>"
1392: + "<Variable name=\"b3\"/>";
1393: String lJSFunRules = "<Function name=\"functionXYZ2\" paramPatterns=\",,y\" />";
1394: RuleSet lRuleSet = CreateRuleSet.withHTMLAttJSVarJSFunRules("",
1395: lJSVarRules, lJSFunRules);
1396: Rewriter lRewriter = RewriterPool.create(lRuleSet,
1397: LanguageConstants.JS_MIME);
1398: String lResult = lRewriter.rewrite(lInput,
1399: getDefaultJSTranslator());
1400: assertEquals(lExpectation, lResult);
1401: }//testVarAsFunctionParam()
1402:
1403: public void testVarAsFunctionParamVarient2() throws Exception {
1404: String lInput = "functionXYZ1(var6='/../Raja/index.html',500);\n";
1405:
1406: String lExpectation = "functionXYZ1("
1407: + JSWrapperHelper.CONVERT_EXPRESSION_FUNCTION_WRAP_START
1408: + "var6='http://rajanagendra.sun.com/Raja/index.html'),500);\n"
1409: + JSWrapperHelper.CONVERT_EXPRESSION_FUNCTION_JS;
1410:
1411: String lJSVarRules = "<Variable name=\"var*6\"/>";
1412: String lJSFunRules = "<Function name=\"functionXYZ1\" paramPatterns=\"y\" />";
1413: RuleSet lRuleSet = CreateRuleSet.withHTMLAttJSVarJSFunRules("",
1414: lJSVarRules, lJSFunRules);
1415: Rewriter lRewriter = RewriterPool.create(lRuleSet,
1416: LanguageConstants.JS_MIME);
1417: String lResult = lRewriter.rewrite(lInput,
1418: getDefaultJSTranslator());
1419: assertEquals(lExpectation, lResult);
1420: }//testVarAsFunctionParamVarient2()
1421:
1422: public void testVarAsFunctionParamVarient3() throws Exception {
1423: String lInput = "functionXYZ1(var6='/../Raja/index.html',500);\n";
1424:
1425: String lExpectation = "functionXYZ1(var6='http://rajanagendra.sun.com/Raja/index.html',500);\n";
1426:
1427: String lJSVarRules = "<Variable name=\"var*6\"/>";
1428: String lJSFunRules = "<Function type=\"URL\" name=\"functionXYZ1\" paramPatterns=\"y\" />";
1429: RuleSet lRuleSet = CreateRuleSet.withHTMLAttJSVarJSFunRules("",
1430: lJSVarRules, lJSFunRules);
1431: Rewriter lRewriter = RewriterPool.create(lRuleSet,
1432: LanguageConstants.JS_MIME);
1433: String lResult = lRewriter.rewrite(lInput,
1434: getDefaultJSTranslator());
1435: assertEquals(lExpectation, lResult);
1436: }//testVarAsFunctionParamVarient3()
1437:
1438: public void testVarAsFunctionParamVarient31() throws Exception {
1439: //Negatice - wrong javascript syntax
1440: String lInput = "functionXYZ1(var var6='/../Raja/index.html',500);\n";
1441:
1442: String lExpectation = "functionXYZ1(var var6='http://rajanagendra.sun.com/Raja/index.html',500);\n";
1443:
1444: String lJSVarRules = "<Variable name=\"var*6\"/>";
1445: String lJSFunRules = "<Function type=\"URL\" name=\"functionXYZ1\" paramPatterns=\"y\" />";
1446: RuleSet lRuleSet = CreateRuleSet.withHTMLAttJSVarJSFunRules("",
1447: lJSVarRules, lJSFunRules);
1448: Rewriter lRewriter = RewriterPool.create(lRuleSet,
1449: LanguageConstants.JS_MIME);
1450: String lResult = lRewriter.rewrite(lInput,
1451: getDefaultJSTranslator());
1452: assertEquals(lInput, lResult);
1453: }//testVarAsFunctionParamVarient31()
1454:
1455: public void testVarAsFunctionParamVarient4() throws Exception {
1456: String lInput = "functionXYZ1(var6=\"<a href='/../Raja/index.html'/>\",500);\n";
1457:
1458: String lExpectation = "functionXYZ1(var6=\"<a href='http://rajanagendra.sun.com/Raja/index.html'/>\",500);\n";
1459:
1460: String lAttRules = "<Attribute name=\"href\" />";
1461: String lJSVarRules = "<Variable name=\"var*6\" type='DHTML'/>";
1462: String lJSFunRules = "<Function type=\"URL\" name=\"functionXYZ1\" paramPatterns=\"y\" />";
1463: RuleSet lRuleSet = CreateRuleSet.withHTMLAttJSVarJSFunRules(
1464: lAttRules, lJSVarRules, lJSFunRules);
1465: Rewriter lRewriter = RewriterPool.create(lRuleSet,
1466: LanguageConstants.JS_MIME);
1467: String lResult = lRewriter.rewrite(lInput,
1468: getDefaultJSTranslator());
1469: assertEquals(lExpectation, lResult);
1470: }//testVarAsFunctionParamVarient4()
1471:
1472: public void testVarAsFunctionParamVarient5() throws Exception {
1473: String lInput = "<html>\n"
1474: + "<head>\n"
1475: + "<script LANGUAGE=\"JavaScript\">\n"
1476: + "<!--\n"
1477: + "function func1(var1,var2,var3)\n"
1478: + "{\n"
1479: + "document.write(var1+\"AND\"+var3);\n"
1480: + "document.write(\"<BR>\");\n"
1481: + "}\n"
1482: + "function func2(var4)\n"
1483: + "{\n"
1484: + "return var4;\n"
1485: + "}\n"
1486: + "//-->\n"
1487: + "</SCRIPT>\n"
1488: + "</head>\n"
1489: + "<body>\n"
1490: + "<script LANGUAGE=\"JavaScript\">\n"
1491: + "<!--\n"
1492: + "var var3=\"http://sunone092.india.sun.com:8000/index.html\";\n"
1493: + "func1(func2('/index.html'),500,var3);\n"
1494: + "func1(func2('/index.html'),500,\"var var3='/index.html'\");\n"
1495: + "func1(func2('/index.html'),500,var6='/index.html');\n"
1496: + "\n"
1497: + "//doubt about var3.can we write var var3;var3='..'; as the 3rd parameter;\n"
1498: + "//-->\n" + "</SCRIPT>\n" + "</body>\n" + "</html>\n";
1499:
1500: String lExpectation = "<html>\n" + "<head>\n"
1501: + JSWrapperHelper.CONVERT_EXPRESSION_FUNCTION_HTML
1502: + "<script LANGUAGE=\"JavaScript\">\n"
1503: + "<!--\n"
1504: + "function func1(var1,var2,var3)\n"
1505: + "{\n"
1506: + "document.write(var1+\"AND\"+"
1507: + JSWrapperHelper.CONVERT_EXPRESSION_FUNCTION_WRAP_START
1508: + "var3));\n"
1509: + "document.write(\"<BR>\");\n"
1510: + "}\n"
1511: + "function func2(var4)\n"
1512: + "{\n"
1513: + "return var4;\n"
1514: + "}\n"
1515: + "//-->\n"
1516: + "</SCRIPT>\n"
1517: + "</head>\n"
1518: + "<body>\n"
1519: + "<script LANGUAGE=\"JavaScript\">\n"
1520: + "<!--\n"
1521: + "var var3=\"http://sunone092.india.sun.com:8000/index.html\";\n"
1522: + "func1(func2('http://rajanagendra.sun.com/index.html'),500,var3);\n"
1523: + "func1(func2('http://rajanagendra.sun.com/index.html'),500,\"var var3='/index.html'\");\n"
1524: + "func1(func2('http://rajanagendra.sun.com/index.html'),500,var6='http://rajanagendra.sun.com/index.html');\n"
1525: + "\n"
1526: + "//doubt about var3.can we write var var3;var3='..'; as the 3rd parameter;\n"
1527: + "//-->\n" + "</SCRIPT>\n" + "</body>\n" + "</html>\n";
1528:
1529: String lJSVarRules = "<Variable name=\"var6\"/>"
1530: + "<Variable name=\"var3\"/>";
1531: String lJSFunRules = "<Function name=\"func2\" paramPatterns=\"y\" />"
1532: + "<Function name=\"document.write\" paramPatterns=\"y\" type=\"DHTML\" />";
1533: RuleSet lRuleSet = CreateRuleSet.withHTMLAttJSVarJSFunRules("",
1534: lJSVarRules, lJSFunRules);
1535: Rewriter lRewriter = RewriterPool.create(lRuleSet,
1536: LanguageConstants.HTML_MIME);
1537: String lResult = lRewriter.rewrite(lInput,
1538: getDefaultJSTranslator());
1539: assertEquals(lExpectation, lResult);
1540: }//testVarAsFunctionParamVarient5()
1541:
1542: public void testVarAsFunctionParamVarient51() throws Exception {
1543: String lInput = "<html>\n"
1544: + "<head>\n"
1545: + "<script LANGUAGE=\"JavaScript\">\n"
1546: + "<!--\n"
1547: + "function func1(var1,var2,var3)\n"
1548: + "{\n"
1549: + "document.write(var1+\"AND\"+var3);\n"
1550: + "document.write(\"<BR>\");\n"
1551: + "}\n"
1552: + "function func2(var4)\n"
1553: + "{\n"
1554: + "return var4;\n"
1555: + "}\n"
1556: + "//-->\n"
1557: + "</SCRIPT>\n"
1558: + "</head>\n"
1559: + "<body>\n"
1560: + "<script LANGUAGE=\"JavaScript\">\n"
1561: + "<!--\n"
1562: + "var var3=\"http://sunone092.india.sun.com:8000/index.html\";\n"
1563: + "func1(func2('/index.html'),500,var3);\n"
1564: + "func1(func2('/index.html'),500,\"var var3='/index.html'\");\n"
1565: + "func1(func2('/index.html'),500,var6='/index.html');\n"
1566: + "\n"
1567: + "//doubt about var3.can we write var var3;var3='..'; as the 3rd parameter;\n"
1568: + "//-->\n" + "</SCRIPT>\n" + "</body>\n" + "</html>\n";
1569:
1570: String lExpectation = "<html>\n"
1571: + "<head>\n"
1572: + "<script LANGUAGE=\"JavaScript\">\n"
1573: + "<!--\n"
1574: + "function func1(var1,var2,var3)\n"
1575: + "{\n"
1576: + "document.write(var1+\"AND\"+var3);\n"
1577: + "document.write(\"<BR>\");\n"
1578: + "}\n"
1579: + "function func2(var4)\n"
1580: + "{\n"
1581: + "return var4;\n"
1582: + "}\n"
1583: + "//-->\n"
1584: + "</SCRIPT>\n"
1585: + "</head>\n"
1586: + "<body>\n"
1587: + "<script LANGUAGE=\"JavaScript\">\n"
1588: + "<!--\n"
1589: + "var var3=\"http://sunone092.india.sun.com:8000/index.html\";\n"
1590: + "func1(func2('http://rajanagendra.sun.com/index.html'),500,var3);\n"
1591: + "func1(func2('http://rajanagendra.sun.com/index.html'),500,\"var var3='/index.html'\");\n"
1592: + "func1(func2('http://rajanagendra.sun.com/index.html'),500,var6='http://rajanagendra.sun.com/index.html');\n"
1593: + "\n"
1594: + "//doubt about var3.can we write var var3;var3='..'; as the 3rd parameter;\n"
1595: + "//-->\n" + "</SCRIPT>\n" + "</body>\n" + "</html>\n";
1596:
1597: String lJSVarRules = "<Variable name=\"var6\"/>"
1598: + "<Variable name=\"var3\" type='URL'/>";
1599: String lJSFunRules = "<Function name=\"func2\" paramPatterns=\"y\" />"
1600: + "<Function name=\"document.write\" paramPatterns=\"y\" type=\"DHTML\" />";
1601: RuleSet lRuleSet = CreateRuleSet.withHTMLAttJSVarJSFunRules("",
1602: lJSVarRules, lJSFunRules);
1603: Rewriter lRewriter = RewriterPool.create(lRuleSet,
1604: LanguageConstants.HTML_MIME);
1605: String lResult = lRewriter.rewrite(lInput,
1606: getDefaultTranslator());
1607: assertEquals(lExpectation, lResult);
1608: }//testVarAsFunctionParamVarient51()
1609:
1610: public void testVariableCaseSensitivity() throws Exception {
1611: String lInput = "var raja = 'hello';"
1612: + "var Location = 'hello';" + "var location ='hello';"
1613: + "funcCall(raja='abc.html', rAja= 'xyz.html');\n"
1614: + "var rAja = 'hello';";
1615:
1616: String lExpectation = "var raja = 'hello';"
1617: + "var Location = 'hello';"
1618: + "var location ='http://rajanagendra.sun.com/Base/Raja/hello';"
1619: + "funcCall(raja='abc.html', rAja= 'http://rajanagendra.sun.com/Base/Raja/xyz.html');\n"
1620: + "var rAja = 'http://rajanagendra.sun.com/Base/Raja/hello';";
1621:
1622: String[] lJSVarRules = {
1623: "<Variable>rAja</Variable>"
1624: + "<Variable name='location'/>",
1625:
1626: "<Variable>rAja</Variable>"
1627: + "<Variable>location</Variable>",
1628:
1629: "<Variable type='EXPRESSION'>rAja</Variable>"
1630: + "<Variable type='EXPRESSION' name='location'/>",
1631:
1632: "<Variable type = 'URL'>rAja</Variable>"
1633: + "<Variable name='location' type='URL'/>", };
1634:
1635: for (int i = 0; i < lJSVarRules.length; i++) {
1636: RuleSet lRuleSet = CreateRuleSet
1637: .withJSVariableRules(lJSVarRules[i]);
1638: Rewriter lRewriter = RewriterPool.create(lRuleSet,
1639: LanguageConstants.JS_MIME);
1640: String lResult = lRewriter.rewrite(lInput,
1641: getDefaultJSTranslator());
1642: assertEquals("for i=" + i, lExpectation, lResult);
1643: }
1644: }//testVariableCaseSensitivity()
1645:
1646: public void testVariableCaseSensitivityVarient() throws Exception {
1647: String lInput = "var raja = '';" + "var raja = 'hello';"
1648: + "var Location = 'hello';" + "var location ='hello';"
1649: + "funcCall(raja='abc.html', rAja= 'xyz.html');\n"
1650: + "var rAja = \n'hello';";
1651:
1652: String lExpectation = "var raja = '';"
1653: + "var raja = 'http://rajanagendra.sun.com/Base/Raja/hello';"
1654: + "var Location = 'http://rajanagendra.sun.com/Base/Raja/hello';"
1655: + "var location ='http://rajanagendra.sun.com/Base/Raja/hello';"
1656: + "funcCall(raja='http://rajanagendra.sun.com/Base/Raja/abc.html', rAja= 'http://rajanagendra.sun.com/Base/Raja/xyz.html');\n"
1657: + "var rAja = \n'http://rajanagendra.sun.com/Base/Raja/hello';";
1658:
1659: String[] lJSVarRules = {
1660: "<Variable >raja</Variable>"
1661: + "<Variable type = 'EXPRESSION'>Location</Variable>"
1662: + "<Variable>rAja</Variable>"
1663: + "<Variable type = 'EXPRESSION' name='location'/>",
1664:
1665: "<Variable>raja</Variable>"
1666: + "<Variable>Location</Variable>"
1667: + "<Variable>rAja</Variable>"
1668: + "<Variable>location</Variable>",
1669:
1670: "<Variable >raja</Variable>"
1671: + "<Variable type = 'EXPRESSION'>Location</Variable>"
1672: + "<Variable type='EXPRESSION'>rAja</Variable>"
1673: + "<Variable type='EXPRESSION' name='location'/>",
1674:
1675: "<Variable type = 'URL'>raja</Variable>"
1676: + "<Variable type = 'URL'>Location</Variable>" +
1677:
1678: "<Variable type = 'URL'>rAja</Variable>"
1679: + "<Variable name='location' type='URL'/>", };
1680:
1681: for (int i = 0; i < lJSVarRules.length; i++) {
1682: RuleSet lRuleSet = CreateRuleSet
1683: .withJSVariableRules(lJSVarRules[i]);
1684: Rewriter lRewriter = RewriterPool.create(lRuleSet,
1685: LanguageConstants.JS_MIME);
1686: String lResult = lRewriter.rewrite(lInput,
1687: getDefaultJSTranslator());
1688: assertEquals("for i=" + i, lExpectation, lResult);
1689: }
1690: }//testVariableCaseSensitivityVarient()
1691:
1692: public void testImageArrayVars() throws Exception {
1693: String lInput = "<html>\n"
1694: + "<script language=\"Javascript\">\n"
1695: + "var imgx = new Array()\n"
1696: + "imgx[1] = \"/images/a.gif\"\n"
1697: + "imgx[2] = \"/images/n.gif\"\n"
1698: + "var lnk = new Array()\n"
1699: + "lnk[1] = \"/http://www.cnn.com\"\n"
1700: + "lnk[2] = \"../http://www.yahoo.com\"\n"
1701: + "var r = Math.floor(Math.random()*imgx.length)\n"
1702: + "if (r == 0)\n"
1703: + "r=1\n"
1704: + "</script>\n"
1705: + "Test page\n"
1706: + "<table width=\"100%\">\n"
1707: + "<tr><td align=\"left\" colspan=\"2\">\n"
1708: + "<script language=\"Javascript\">\n"
1709: + "document.write('<a href='+'\"'+lnk[r]+'\"'+'target=\"_blank\"><img\n"
1710: + "src=\"'+imgx[r]+'\" border=1></a>')\n"
1711: + "</script>\n" + "</tr></td>\n" + "</table>\n"
1712: + "After\n" + "</html>\n";
1713:
1714: String lExpectation = "<html>\n"
1715: + "<script language=\"Javascript\">\n"
1716: + "var imgx = new Array()\n"
1717: + "imgx[1] = \"http://rajanagendra.sun.com/images/a.gif\"\n"
1718: + "imgx[2] = \"http://rajanagendra.sun.com/images/n.gif\"\n"
1719: + "var lnk = new Array()\n"
1720: + "lnk[1] = \"http://rajanagendra.sun.com/http://www.cnn.com\"\n"
1721: + "lnk[2] = \"http://rajanagendra.sun.com/Base/http://www.yahoo.com\"\n"
1722: + "var r = Math.floor(Math.random()*imgx.length)\n"
1723: + "if (r == 0)\n"
1724: + "r=1\n"
1725: + "</script>\n"
1726: + "Test page\n"
1727: + "<table width=\"100%\">\n"
1728: + "<tr><td align=\"left\" colspan=\"2\">\n"
1729: + "<script language=\"Javascript\">\n"
1730: + "document.write('<a href='+'\"'+lnk[r]+'\"'+'target=\"_blank\"><img\n"
1731: + "src=\"'+imgx[r]+'\" border=1></a>')\n"
1732: + "</script>\n" + "</tr></td>\n" + "</table>\n"
1733: + "After\n" + "</html>\n";
1734:
1735: String[] lJSVarRules = { " <Variable type=\"URL\">imgx*</Variable>\n"
1736: + " <Variable type=\"URL\">lnk*</Variable>\n", };
1737:
1738: for (int i = 0; i < lJSVarRules.length; i++) {
1739: RuleSet lRuleSet = CreateRuleSet
1740: .withJSVariableRules(lJSVarRules[i]);
1741: Rewriter lRewriter = RewriterPool.create(lRuleSet,
1742: LanguageConstants.HTML_MIME);
1743: String lResult = lRewriter.rewrite(lInput,
1744: getDefaultJSTranslator());
1745: assertEquals("for i=" + i, lExpectation, lResult);
1746: }
1747: }//testImageArrayVars()
1748:
1749: public void testJSCodeBase() throws Exception {
1750: String lInput = "var blurbedit = new Editize();\n"
1751: + "blurbedit.name = 'blurb';\n"
1752: + "blurbedit.codebase = '/editize/'\n"
1753: + "blurbedit.width = '100%';\n"
1754: + "blurbedit.height = '200';\n"
1755: + "blurbedit.paragraphstyles = false;\n"
1756: + "blurbedit.paragraphalignments = false;\n"
1757: + "blurbedit.bulletlists = false;\n"
1758: + "blurbedit.numberedlists = false;\n"
1759: + "blurbedit.hyperlinks = false;\n"
1760: + "blurbedit.basefontface = 'Verdana';\n"
1761: + "blurbedit.basefontsize = '12';\n"
1762: + "blurbedit.images = false;\n"
1763: + "blurbedit.display('<p>rn This is the main page for the FDICweb site.rn</p>rn');\n";
1764:
1765: String lExpectation = "var blurbedit = new Editize();\n"
1766: + "blurbedit.name = 'blurb';\n"
1767: + "blurbedit.codebase = 'http://rajanagendra.sun.com/editize/'\n"
1768: + "blurbedit.width = '100%';\n"
1769: + "blurbedit.height = '200';\n"
1770: + "blurbedit.paragraphstyles = false;\n"
1771: + "blurbedit.paragraphalignments = false;\n"
1772: + "blurbedit.bulletlists = false;\n"
1773: + "blurbedit.numberedlists = false;\n"
1774: + "blurbedit.hyperlinks = false;\n"
1775: + "blurbedit.basefontface = 'Verdana';\n"
1776: + "blurbedit.basefontsize = '12';\n"
1777: + "blurbedit.images = false;\n"
1778: + "blurbedit.display('<p>rn This is the main page for the FDICweb site.rn</p>rn');\n";
1779:
1780: String[] lJSVarRules = {
1781: " <Variable type=\"URL\">blurbedit.codebase</Variable>\n"
1782: + " <Variable name = 'blurbedit.codebase' type=\"URL\"/>\n",
1783:
1784: " <Variable type=\"URL\">*.codebase</Variable>\n"
1785: + " <Variable name = '*.codebase' type=\"URL\"/>\n",
1786:
1787: " <Variable type=\"URL\">*codebase</Variable>\n"
1788: + " <Variable name = '*codebase' type=\"URL\"/>\n", };
1789:
1790: for (int i = 0; i < lJSVarRules.length; i++) {
1791: RuleSet lRuleSet = CreateRuleSet
1792: .withJSVariableRules(lJSVarRules[i]);
1793: Rewriter lRewriter = RewriterPool.create(lRuleSet,
1794: LanguageConstants.JS_MIME);
1795: String lResult = lRewriter.rewrite(lInput,
1796: getDefaultJSTranslator());
1797: assertEquals("for i=" + i, lExpectation, lResult);
1798: }
1799: }//testJSCodeBase()
1800:
1801: public void testEscalation546970() throws Exception {
1802: String lInput = "<html>\n"
1803: + " <head>\n"
1804: + " <script>\n"
1805: + " var mbox='INBOX'\n"
1806: + " var uid=2\n"
1807: + " var recv=1056720172\n"
1808: + " var sent=1056720022\n"
1809: + " var size=18015\n"
1810: + " var flags=0\n"
1811: + " part[7]=new partObj(7,'<xml>\\r\\n <o:OfficeDocumentSettings>\\r\\n </xml>')\n"
1812: + " var ab = 'abc.html'" + " </script>\n"
1813: + "<a href='abc.html'/>" + " </head>\n" + "</html>\n";
1814:
1815: String lExpectation = "<html>\n"
1816: + " <head>\n"
1817: + " <script>\n"
1818: + " var mbox='INBOX'\n"
1819: + " var uid=2\n"
1820: + " var recv=1056720172\n"
1821: + " var sent=1056720022\n"
1822: + " var size=18015\n"
1823: + " var flags=0\n"
1824: + " part[7]=new partObj(7,'<xml>\\r\\n <o:OfficeDocumentSettings>\\r\\n </xml>')\n"
1825: + " var ab = 'http://rajanagendra.sun.com/Base/Raja/abc.html'"
1826: + " </script>\n"
1827: + "<a href='http://rajanagendra.sun.com/Base/Raja/abc.html'/>"
1828: + " </head>\n" + "</html>\n";
1829:
1830: String lHTMLAttRules = "<Attribute name=\"HREF\" />";
1831: String lJSVarRules = " <Variable name = 'ab' type=\"URL\"/>\n";
1832: RuleSet lRuleSet = CreateRuleSet.withHTMLAttJSVarRules(
1833: lHTMLAttRules, lJSVarRules);
1834: Rewriter lRewriter = RewriterPool.create(lRuleSet,
1835: LanguageConstants.HTML_MIME);
1836: String lResult = lRewriter.rewrite(lInput,
1837: getDefaultJSTranslator());
1838: assertEquals(lExpectation, lResult);
1839: }//testEscalation546970()
1840:
1841: public void testBugNo4905670URLObjectProperties() throws Exception {
1842: String lInput = "ur_system = {doc : window.document , mimepath :\"/irj/portalapps/com.sap.portal.themes.lafservice/themes/portal/sap_standard/common/\", stylepath : \"/irj/portalapps/com.sap.portal.themes.lafservice/themes/portal/sap_standard/ur/\", is508 : false};\n";
1843:
1844: String lExpectation = "ur_system = {doc : window.document , mimepath :\"http://rajanagendra.sun.com/irj/portalapps/com.sap.portal.themes.lafservice/themes/portal/sap_standard/common/\", stylepath : \"http://rajanagendra.sun.com/irj/portalapps/com.sap.portal.themes.lafservice/themes/portal/sap_standard/ur/\", is508 : false};\n";
1845:
1846: String lJSVarRules = " <Variable name = 'mimepath;stylepath' type=\"URL\"/>\n";
1847: RuleSet lRuleSet = CreateRuleSet
1848: .withJSVariableRules(lJSVarRules);
1849: Rewriter lRewriter = RewriterPool.create(lRuleSet,
1850: LanguageConstants.JS_MIME);
1851: String lResult = lRewriter.rewrite(lInput,
1852: getDefaultJSTranslator());
1853: assertEquals(lExpectation, lResult);
1854: }//testBugNo4905670URLObjectProperties()
1855:
1856: public void testArrayVar() throws Exception {
1857: String lInput = "<a href=\"/default.htm\" OnMouseOver=\"window.status='HumanResources'; document.images[0].src ='/images/logon/advonl_hr_on.gif'; return true;\" OnMouseOut=\"window.status=' '; document.images[0].src ='/images/logon/advonl_hr.gif'; return true;\"><img src = \"/logon/advonl_hr.gif\" border=\"0\" >\n";
1858: String lExpectation = "<a href=\"http://rajanagendra.sun.com/default.htm\" OnMouseOver=\"window.status='HumanResources'; document.images[0].src ='http://rajanagendra.sun.com/images/logon/advonl_hr_on.gif'; return true;\" OnMouseOut=\"window.status=' '; document.images[0].src ='/images/logon/advonl_hr.gif'; return true;\"><img src = \"http://rajanagendra.sun.com/logon/advonl_hr.gif\" border=\"0\" >\n";
1859:
1860: String lHTMLAttRules = "<Attribute name=\"HREF;src\" />"
1861: + "<Attribute name=\"OnMouseOver\" type='DJS' />";
1862:
1863: String lJSVarRules = " <Variable name = 'document.images*.src' type=\"URL\"/>\n";
1864:
1865: RuleSet lRuleSet = CreateRuleSet.withHTMLAttJSVarRules(
1866: lHTMLAttRules, lJSVarRules);
1867: Rewriter lRewriter = RewriterPool.create(lRuleSet,
1868: LanguageConstants.HTML_MIME);
1869: String lResult = lRewriter.rewrite(lInput,
1870: getDefaultJSTranslator());
1871: assertEquals(lExpectation, lResult);
1872: }//testArrayVar()
1873:
1874: public static void main(String[] args) {
1875: RewriterModule.initFile();
1876: //BasicTestCase.run( TestJSURLVariables.class );
1877: TestSuite testSuite = new TestSuite();
1878: testSuite.addTest(new TestJSURLVariables("testArrayVar"));
1879: BasicTestCase.run(testSuite);
1880: }//main()
1881:
1882: }//class TestJSURLVariables
|