001: package com.sun.portal.rewriter.engines.js.test;
002:
003: import com.sun.portal.rewriter.AbsoluteTranslator;
004: import com.sun.portal.rewriter.Rewriter;
005: import com.sun.portal.rewriter.RewriterModule;
006: import com.sun.portal.rewriter.RewriterPool;
007: import com.sun.portal.rewriter.Translator;
008: import com.sun.portal.rewriter.engines.LanguageConstants;
009: import com.sun.portal.rewriter.rom.RuleSet;
010: import com.sun.portal.rewriter.test.util.BasicTestCase;
011: import com.sun.portal.rewriter.test.util.CreateRuleSet;
012: import com.sun.portal.rewriter.test.util.JSWrapperHelper;
013: import com.sun.portal.rewriter.util.uri.PageSpec;
014: import junit.framework.TestSuite;
015:
016: public class TestJSDHTMLFunctions extends BasicTestCase {
017: public TestJSDHTMLFunctions(String aName) {
018: super (aName);
019: }//constuctor
020:
021: /**
022: * Logic followed for this if this is fractured HTML append < symbol so that
023: * parser would treat this as HTML Tag/attribute
024: */
025: public void testFracturedHTML() throws Exception {
026: final String[][] lShouldRewrite = {
027: {
028: "document.write( \n\t '\t<a href=\"/mgyhp/\" />' + \n \t '<a href=\"/mgyhp/\"' + '/>')",
029: "document.write( \n\t '\t<a href=\"http://rajanagendra.sun.com/mgyhp/\" />' + \n \t '<a href=\"http://rajanagendra.sun.com/mgyhp/\"' + '/>')", }, //0
030:
031: {
032: "document.write('\t<a href=\"/mgyhp/\" />' + \n'<a href=\"/mgyhp/\"' + '/>')",
033: "document.write('\t<a href=\"http://rajanagendra.sun.com/mgyhp/\" />' + \n'<a href=\"http://rajanagendra.sun.com/mgyhp/\"' + '/>')", }, //1
034:
035: {
036: "document.write(\n'<a href=\"/mgyhp/\" />' + \n'<a href=\"/mgyhp/\"' + '/>')",
037: "document.write(\n'<a href=\"http://rajanagendra.sun.com/mgyhp/\" />' + \n'<a href=\"http://rajanagendra.sun.com/mgyhp/\"' + '/>')", }, //2
038:
039: {
040: "document.write('<a href=\"/mgyhp/\" />' + \n'<a href=\"/mgyhp/\"' + '/>')",
041: "document.write('<a href=\"http://rajanagendra.sun.com/mgyhp/\" />' + \n'<a href=\"http://rajanagendra.sun.com/mgyhp/\"' + '/>')", }, //3
042:
043: {
044: "document.write('<a href=/mgyhp/ />' + \n'<a href=/mgyhp/' + '/>')",
045: "document.write('<a href=http://rajanagendra.sun.com/mgyhp/ />' + \n'<a href=http://rajanagendra.sun.com/mgyhp/' + '/>')", }, //4
046:
047: {
048: "document.write(\n\t ' \t a href=\"/mgyhp/\" />' + \n'<a href=\"/mgyhp/\"' + '/>')",
049: "document.write(\n\t ' \t a href=\"http://rajanagendra.sun.com/mgyhp/\" />' + \n'<a href=\"http://rajanagendra.sun.com/mgyhp/\"' + '/>')", }, //5
050:
051: {
052: "document.writeln ('< < ACTION=\"/cgi-bin/ice.cgi/prof=ICE-C/cmd=signon/tzoffset=+ab+10\"><INPUT NAME=\"GXHC_GX_jst\" TYPE=\"HIDDEN\" VALUE=\"9db69d9e17406164\" ></INPUT>' )",
053: "document.writeln ('< < ACTION=\"http://rajanagendra.sun.com/cgi-bin/ice.cgi/prof=ICE-C/cmd=signon/tzoffset=+ab+10\"><INPUT NAME=\"GXHC_GX_jst\" TYPE=\"HIDDEN\" VALUE=\"9db69d9e17406164\" ></INPUT>' )" }, //6
054:
055: {
056: "document.writeln (' ACTION=\"/cgi-bin/ice.cgi/prof=ICE-C/cmd=signon/tzoffset=+ab+10\" <<' )",
057: "document.writeln (' ACTION=\"http://rajanagendra.sun.com/cgi-bin/ice.cgi/prof=ICE-C/cmd=signon/tzoffset=+ab+10\" <<' )" }, //7
058:
059: {
060: "document.writeln ('ACTION=\"/cgi-bin/ice.cgi/prof=ICE-C/cmd=signon/tzoffset=+ab+10\"<INPUT NAME=\"GXHC_GX_jst\" TYPE=\"HIDDEN\" VALUE=\"9db69d9e17406164\"' )",
061: "document.writeln ('ACTION=\"http://rajanagendra.sun.com/cgi-bin/ice.cgi/prof=ICE-C/cmd=signon/tzoffset=+ab+10\"<INPUT NAME=\"GXHC_GX_jst\" TYPE=\"HIDDEN\" VALUE=\"9db69d9e17406164\"' )" }, //8
062:
063: {
064: "document.writeln ('ACTION=\"/cgi-bin/ice.cgi/prof=ICE-C/cmd=signon/tzoffset=+ab+10\"><INPUT NAME=\"GXHC_GX_jst\" TYPE=\"HIDDEN\" VALUE=\"9db69d9e17406164\" ></INPUT' )",
065: "document.writeln ('ACTION=\"http://rajanagendra.sun.com/cgi-bin/ice.cgi/prof=ICE-C/cmd=signon/tzoffset=+ab+10\"><INPUT NAME=\"GXHC_GX_jst\" TYPE=\"HIDDEN\" VALUE=\"9db69d9e17406164\" ></INPUT' )" }, //9
066:
067: {
068: "document.writeln ('ACTION=\"/cgi-bin/ice.cgi/prof=ICE-C/cmd=signon/tzoffset=+ab+10\"<INPUT NAME=\"GXHC_GX_jst\" TYPE=\"HIDDEN\" VALUE=\"9db69d9e17406164\" ></INPUT' )",
069: "document.writeln ('ACTION=\"http://rajanagendra.sun.com/cgi-bin/ice.cgi/prof=ICE-C/cmd=signon/tzoffset=+ab+10\"<INPUT NAME=\"GXHC_GX_jst\" TYPE=\"HIDDEN\" VALUE=\"9db69d9e17406164\" ></INPUT' )" }, //4
070:
071: {
072: "document.writeln ('<Form method=\"post\" ACTION=\"/cgi-bin/ice.cgi/prof=ICE-C/cmd=signon/tzoffset=+ab+10\"><INPUT NAME=\"GXHC_GX_jst\" TYPE=\"HIDDEN\" VALUE=\"9db69d9e17406164\" ></INPUT>' </FORM> )",
073: "document.writeln ('<Form method=\"post\" ACTION=\"http://rajanagendra.sun.com/cgi-bin/ice.cgi/prof=ICE-C/cmd=signon/tzoffset=+ab+10\"><INPUT NAME=\"GXHC_GX_jst\" TYPE=\"HIDDEN\" VALUE=\"9db69d9e17406164\" ></INPUT>' </FORM> )" }, //5
074:
075: {
076: "document.writeln ('<ACTION=\"/cgi-bin/ice.cgi/prof=ICE-C/cmd=signon/tzoffset=+ab+10\"><INPUT NAME=\"GXHC_GX_jst\" TYPE=\"HIDDEN\" VALUE=\"9db69d9e17406164\" ></INPUT>' )",
077: "document.writeln ('<ACTION=\"http://rajanagendra.sun.com/cgi-bin/ice.cgi/prof=ICE-C/cmd=signon/tzoffset=+ab+10\"><INPUT NAME=\"GXHC_GX_jst\" TYPE=\"HIDDEN\" VALUE=\"9db69d9e17406164\" ></INPUT>' )" }, //6
078:
079: {
080: "document.writeln ('< ACTION=\"/cgi-bin/ice.cgi/prof=ICE-C/cmd=signon/tzoffset=+ab+10\"><INPUT NAME=\"GXHC_GX_jst\" TYPE=\"HIDDEN\" VALUE=\"9db69d9e17406164\" ></INPUT>' )",
081: "document.writeln ('< ACTION=\"http://rajanagendra.sun.com/cgi-bin/ice.cgi/prof=ICE-C/cmd=signon/tzoffset=+ab+10\"><INPUT NAME=\"GXHC_GX_jst\" TYPE=\"HIDDEN\" VALUE=\"9db69d9e17406164\" ></INPUT>' )" }, //7
082:
083: {
084: "document.writeln ('ACTION=\"/cgi-bin/ice.cgi/prof=ICE-C/cmd=signon/tzoffset=+ab+10\"><INPUT NAME=\"GXHC_GX_jst\" TYPE=\"HIDDEN\" VALUE=\"9db69d9e17406164\"' )",
085: "document.writeln ('ACTION=\"http://rajanagendra.sun.com/cgi-bin/ice.cgi/prof=ICE-C/cmd=signon/tzoffset=+ab+10\"><INPUT NAME=\"GXHC_GX_jst\" TYPE=\"HIDDEN\" VALUE=\"9db69d9e17406164\"' )" }, //8
086:
087: {
088: "document.writeln ('ACTION=\"/cgi-bin/ice.cgi/prof=ICE-C/cmd=signon/tzoffset=+ab+10\"' )",
089: "document.writeln ('ACTION=\"http://rajanagendra.sun.com/cgi-bin/ice.cgi/prof=ICE-C/cmd=signon/tzoffset=+ab+10\"' )" },
090:
091: {
092: "document.writeln ('raja/abc.html <Form method=\"post\" ACTION=\"/cgi-bin/ice.cgi/prof=ICE-C/cmd=signon/tzoffset=+ab+10\"><INPUT NAME=\"GXHC_GX_jst\" TYPE=\"HIDDEN\" VALUE=\"9db69d9e17406164\" ></INPUT>' </FORM>' )",
093: "document.writeln ('raja/abc.html <Form method=\"post\" ACTION=\"http://rajanagendra.sun.com/cgi-bin/ice.cgi/prof=ICE-C/cmd=signon/tzoffset=+ab+10\"><INPUT NAME=\"GXHC_GX_jst\" TYPE=\"HIDDEN\" VALUE=\"9db69d9e17406164\" ></INPUT>' </FORM>' )" },
094:
095: { "document.writeln ('raja/abc.html' )",
096: "document.writeln ('raja/abc.html' )", }, //2
097:
098: { "document.writeln (\"raja/abc.html\" )",
099: "document.writeln (\"raja/abc.html\" )", }, //2
100:
101: { "document.writeln (\"\traja/abc.html\" )",
102: "document.writeln (\"\traja/abc.html\" )", }, //2
103:
104: { "document.writeln ('\t\traja/abc.html\t' )",
105: "document.writeln ('\t\traja/abc.html\t' )", }, //2
106: };
107:
108: final String[][] lWillNotRewrite = {
109: {
110: "document.writeln ('<e <ACTION=\"/cgi-bin/ice.cgi/prof=ICE-C/cmd=signon/tzoffset=+ab+10\"><INPUT NAME=\"GXHC_GX_jst\" TYPE=\"HIDDEN\" VALUE=\"9db69d9e17406164\" ></INPUT>' )",
111: "document.writeln ('<e <ACTION=\"/cgi-bin/ice.cgi/prof=ICE-C/cmd=signon/tzoffset=+ab+10\"><INPUT NAME=\"GXHC_GX_jst\" TYPE=\"HIDDEN\" VALUE=\"9db69d9e17406164\"></INPUT>' )" }, //0
112:
113: {
114: "document.writeln ('< <ACTION=\"/cgi-bin/ice.cgi/prof=ICE-C/cmd=signon/tzoffset=+ab+10\"><INPUT NAME=\"GXHC_GX_jst\" TYPE=\"HIDDEN\" VALUE=\"9db69d9e17406164\" ></INPUT>' )",
115: "" }, //1
116: };
117:
118: final String lHTMLAttributeRules = "<Attribute name=\"*r*f\" /> <Attribute name=\"action\" />";
119: final String lJSFunctionRules = "<Function type=\"DHTML\" source=\"*rajanagendra.sun.com*\" name=\"document.write*\" paramPatterns=\"y\"/>";
120:
121: final RuleSet lRuleSet = CreateRuleSet.withHTMLAttJSFunRules(
122: lHTMLAttributeRules, lJSFunctionRules);
123: final Rewriter lRewriter = RewriterPool.create(lRuleSet,
124: LanguageConstants.JS_MIME);
125:
126: for (int i = 0; i < lShouldRewrite.length; i++) {
127: String lResult = lRewriter.rewrite(lShouldRewrite[i][0],
128: getDefaultTranslator());
129: assertEquals("Failed at i= " + i, lShouldRewrite[i][1],
130: lResult);
131: }//for loop
132: }//testFracturedHTML()
133:
134: public void testSimpleDHTMLFunctions() throws Exception {
135: String[][] lData = {
136: {
137: "document.write('<p><a href=\"/mgyhp.html\" onClick=\"style.behavior=\"url(#default#homepage)\";setHomePage(\"/abc.html\");\">Google ko apna Homepage banayiye !</a>');",
138: "document.write('<p><a href=\"http://rajanagendra.sun.com/mgyhp.html\" onClick=\"style.behavior=\"url(#default#homepage)\";setHomePage(\"/abc.html\");\">Google ko apna Homepage banayiye !</a>');",
139: "<Attribute name=\"href\" tag=\"a\"/>",
140: "<Function type=\"DHTML\" source=\"*rajanagendra.sun.com*\" name=\"document.write\" paramPatterns=\"y\"/>" }, //0
141:
142: /*{ //Bug to be fixed - pending
143: "document.write('<p><a href=\"/mgyhp.html\" onClick=\"style.behavior=\"url(#default#homepage)\";setHomePage(\"/abc.html\");\">Google ko apna Homepage banayiye !</a>');",
144: "document.write('<p><a href=\"http://rajanagendra.sun.com/mgyhp.html\" onClick=\"style.behavior=\"url(#default#homepage)\";setHomePage(\"http://rajanagendra.sun.com/abc.html\");\">Google ko apna Homepage banayiye !</a>');",
145: "<Attribute name=\"href\" tag=\"a\"/>",
146: "<Function type=\"DHTML\" name=\"document.write\" paramPatterns=\"y\"/> <Function type=\"URL\" name=\"setHomePage\" paramPatterns=\"y\"/>"
147: }, //1*/
148:
149: {
150: "document.write('<IMG SRC=\"raja.html\" WIDTH=\"10\" VSPACE=0 HSPACE=0 BORDER=0>');",
151: "document.write('<IMG SRC=\"http://rajanagendra.sun.com/Base/Raja/raja.html\" WIDTH=\"10\" VSPACE=0 HSPACE=0 BORDER=0>');",
152: "<Attribute name=\"src\" tag=\"img\"/>",
153: "<Function type=\"DHTML\" name=\"document*\" paramPatterns=\"y\"/>" } //2
154: };
155:
156: for (int i = 0; i < lData.length; i++) {
157: RuleSet lRuleSet = CreateRuleSet.withHTMLAttJSFunRules(
158: lData[i][2], lData[i][3]);
159: Rewriter lRewriter = RewriterPool.create(lRuleSet,
160: LanguageConstants.JS_MIME);
161: String lResult = lRewriter.rewrite(lData[i][0],
162: getDefaultTranslator());
163: assertEquals("At i=" + i, lData[i][1], lResult);
164: }
165: }//testSimpleDHTMLFunctions()
166:
167: public void atestDHTMLWithURLParamFunctions() throws Exception {
168: String lInput = "document.write('<a href=/mgyhp/ />' + '\n<a href=/mgyhp/' + abc(nourl,\"./raj.exe\") + ' name=10 /a>');";
169: String lExpectation = "";
170: String lHTMLAttribRules = "<Attribute name=\"href\"/>";
171: String lJSFunctionRules = "<Function type=\"URL\" name=\"abc\" paramPatterns=\",y\"/><Function type=\"DHTML\" name=\"document*\" paramPatterns=\"y\"/>";
172:
173: RuleSet lRuleSet = CreateRuleSet.withHTMLAttJSFunRules(
174: lHTMLAttribRules, lJSFunctionRules);
175: Rewriter lRewriter = RewriterPool.create(lRuleSet,
176: LanguageConstants.JS_MIME);
177: String lResult = lRewriter.rewrite(lInput,
178: getDefaultTranslator());
179: assertEquals(lExpectation, lResult);
180: }//testDHTMLWithURLParamFunctions()
181:
182: public void atestDHTMLWithURLParamFunctionsVarient()
183: throws Exception {
184: String lInput = "document.write('<a href=\"/mgyhp/\"/>' + '\n<a href=\"/mgyhp/\"' + abc(\"nourl\",\"./raj.exe/\") + ' name=10 /a>');";
185: String lExpectation = "";
186: String lHTMLAttribRules = "<Attribute name=\"href\"/>";
187: String lJSFunctionRules = "<Function type=\"URL\" name=\"abc\" paramPatterns=\",y\"/><Function type=\"DHTML\" name=\"document*\" paramPatterns=\"y\"/>";
188:
189: RuleSet lRuleSet = CreateRuleSet.withHTMLAttJSFunRules(
190: lHTMLAttribRules, lJSFunctionRules);
191: Rewriter lRewriter = RewriterPool.create(lRuleSet,
192: LanguageConstants.JS_MIME);
193: String lResult = lRewriter.rewrite(lInput,
194: getDefaultTranslator());
195: assertEquals(lExpectation, lResult);
196: }//testDHTMLWithURLParamFunctionsVarient()
197:
198: public void testDHTMLPramExpressionRule() throws Exception {
199: //Bug to be fixed - true expectation does not match
200: String[][] lData = { {
201: "document.write(\"<p><a href=\"/mgyhp.html\" onClick=\"style.behavior='url(#default#homepage)';setHomePage('http://google.com/');\">Google ko apna Homepage banayiye !</a>\");",
202: "document.write(\"http://rajanagendra.sun.com/Base/Raja/<p><a href=\"/mgyhp.html\" onClick=\"style.behavior='url(#default#homepage)';setHomePage('http://google.com/');\">Google ko apna Homepage banayiye !</a>\");",
203: //"document.write(\"<p><a href=\"/mgyhp.html\" onClick=\"style.behavior='url(#default#homepage)';setHomePage('http://google.com/');\">Google ko apna Homepage banayiye !</a>\");",
204: //"document.write(" + LanguageConstants.CONVERT_EXPRESSION_FUNCTION_WRAP_START + "\"<p><a href=\"/mgyhp.html)\" onClick=\"style.behavior='url(#default#homepage)';setHomePage('http://google.com/');\">Google ko apna Homepage banayiye !</a>\");" + TestHTMLJSTokens.CONVERT_EXPRESSION_FUNCTION_JS,
205: "<Attribute name=\"href\" tag=\"a\"/>",
206: "<Function type=\"EXPRESSION\" name=\"document.write\" paramPatterns=\"y\"/>" }, //0
207: };
208:
209: for (int i = 0; i < lData.length; i++) {
210: RuleSet lRuleSet = CreateRuleSet.withHTMLAttJSFunRules(
211: lData[i][2], lData[i][3]);
212: Rewriter lRewriter = RewriterPool.create(lRuleSet,
213: LanguageConstants.JS_MIME);
214: String lResult = lRewriter.rewrite(lData[i][0],
215: getDefaultJSTranslator());
216: assertEquals(lData[i][1], lResult);
217: }
218: }//testDHTMLPramExpressionRule()
219:
220: public void testDHTMLWithDifferentBase() throws Exception {
221: String[][] lData = { {
222: "document.write('<p><a href=\"/mgyhp.html\" onClick=\"style.behavior=\"url(#default#homepage)\";setHomePage(\"http://google.com/\");\">Google ko apna Homepage banayiye !</a>');",
223: "<Attribute name=\"href\" tag=\"a\"/>",
224: "<Function type=\"DHTML\" name=\"document.write\" paramPatterns=\"y\"/>" }, //0
225: };
226:
227: String[][] baseURL = {
228: {
229: "http://rajanagendra.sun.com",
230: "document.write('<p><a href=\"http://rajanagendra.sun.com/mgyhp.html\" onClick=\"style.behavior=\"url(#default#homepage)\";setHomePage(\"http://google.com/\");\">Google ko apna Homepage banayiye !</a>');" }, //-1
231: {
232: "http://rajanagendra.sun.com/Base/Raja/raja.html?name=raja",
233: "document.write('<p><a href=\"http://rajanagendra.sun.com/mgyhp.html\" onClick=\"style.behavior=\"url(#default#homepage)\";setHomePage(\"http://google.com/\");\">Google ko apna Homepage banayiye !</a>');" }, //0
234:
235: {
236: "http://rajanagendra.sun.com/",
237: "document.write('<p><a href=\"http://rajanagendra.sun.com/mgyhp.html\" onClick=\"style.behavior=\"url(#default#homepage)\";setHomePage(\"http://google.com/\");\">Google ko apna Homepage banayiye !</a>');" }, //1
238:
239: };
240:
241: for (int i = 0; i < lData.length; i++) {
242: RuleSet lRuleSet = CreateRuleSet.withHTMLAttJSFunRules(
243: lData[i][1], lData[i][2]);
244: Rewriter lRewriter = RewriterPool.create(lRuleSet,
245: LanguageConstants.JS_MIME);
246:
247: for (int j = 0; j < baseURL.length; j++) {
248: PageSpec samplePageSpec = new PageSpec(baseURL[j][0],
249: "");
250: Translator lTranslator = new AbsoluteTranslator(
251: samplePageSpec);
252: String lResult = lRewriter.rewrite(lData[i][0],
253: lTranslator);
254: assertEquals("i=" + i + " j=" + j, baseURL[j][1],
255: lResult);
256: }//for j loop
257: }//for i loop
258: }//testDHTMLWithIncompleURI()
259:
260: public void testBug4622383() throws Exception {
261: String lInput = "<html>\n"
262: + "<head><title>Test Case for rewriting src tags twice: Bug4622383</title></head>\n"
263: + "<script LANGUAGE=\"JavaScript\">\n"
264: + "lnk = \"http://nsx.red.iplanet.com\";\n"
265: + "document.write('<A HREF=\"/test_cases/foo.html\">');\n"
266: + "document.write('<A HREF=\"'+lnk+'/test_cases/foo.html\">');\n"
267: + "document.write('<img border=\"0\" src=\"'+lnk+'/test_cases/cgi/images/test.jpg\" alt=\"ALT\"><BR>');\n"
268: + "document.write('<img border=\"0\" src=\"/test_cases/cgi/images/test.jpg\" alt=\"ALT\">');\n"
269: + "document.write('</A>');\n" + "</script>\n"
270: + "<body>\n" + "</body>\n" + "</html>\n";
271:
272: String lExpectation = "<html>\n"
273: + "<head><title>Test Case for rewriting src tags twice: Bug4622383</title></head>\n"
274: + "<script LANGUAGE=\"JavaScript\">\n"
275: + "lnk = \"http://nsx.red.iplanet.com\";\n"
276: + "document.write('<A HREF=\"http://rajanagendra.sun.com/test_cases/foo.html\">');\n"
277: + "document.write('<A HREF=\"'+lnk+'/test_cases/foo.html\">');\n"
278: + "document.write('<img border=\"0\" src=\"'+lnk+'/test_cases/cgi/images/test.jpg\" alt=\"ALT\"><BR>');\n"
279: + "document.write('<img border=\"0\" src=\"http://rajanagendra.sun.com/test_cases/cgi/images/test.jpg\" alt=\"ALT\">');\n"
280: + "document.write('</A>');\n" + "</script>\n"
281: + "<body>\n" + "</body>\n" + "</html>\n";
282:
283: String lHTMLAttRules = "<Attribute name=\"HREF\" tag=\"a\"/> <Attribute name=\"sRc\" />";
284: String lJSFunRules = "<Function type=\"DHTML\" name=\"document.write\" paramPatterns=\"y\"/>";
285:
286: RuleSet lRuleSet = CreateRuleSet.withHTMLAttJSVarJSFunRules(
287: lHTMLAttRules, "", lJSFunRules);
288: Rewriter lRewriter = RewriterPool.create(lRuleSet,
289: LanguageConstants.MARKUP_MIME);
290: String lResult = lRewriter.rewrite(lInput,
291: getDefaultTranslator());
292: assertEquals(lExpectation, lResult);
293: }//testBug4622383()
294:
295: public void testBug4622383Variation() throws Exception {
296: String lInput = "lnk = \"http://nsx.red.iplanet.com\";\n"
297: + "document.write('<a href=\"/mgyhp.html\">')\n"
298: + "document.write('<p><a href=\"/mgyhp.html\">Google ko apna Homepage banayiye !</a>');\n"
299: + "document.write('<a href=\"/test_cases/foo.html\">');\n"
300: + "document.write('<A HREF=\"'+lnk+'/test_cases/foo.html\">');\n"
301: + "document.write('<img border=\"0\" src=\"'+lnk+'/test_cases/cgi/images/test.jpg\" alt=\"ALT\"><BR>');\n"
302: + "document.write('<img border=\"0\" src=\"/test_cases/cgi/images/test.jpg\" alt=\"ALT\">');\n"
303: + "document.write('</A>');\n";
304:
305: String lExpectation = "lnk = \"http://nsx.red.iplanet.com\";\n"
306: + "document.write('<a href=\"http://rajanagendra.sun.com/mgyhp.html\">')\n"
307: + "document.write('<p><a href=\"http://rajanagendra.sun.com/mgyhp.html\">Google ko apna Homepage banayiye !</a>');\n"
308: + "document.write('<a href=\"http://rajanagendra.sun.com/test_cases/foo.html\">');\n"
309: + "document.write('<A HREF=\"'+lnk+'/test_cases/foo.html\">');\n"
310: + "document.write('<img border=\"0\" src=\"'+lnk+'/test_cases/cgi/images/test.jpg\" alt=\"ALT\"><BR>');\n"
311: + "document.write('<img border=\"0\" src=\"http://rajanagendra.sun.com/test_cases/cgi/images/test.jpg\" alt=\"ALT\">');\n"
312: + "document.write('</A>');\n";
313:
314: String lHTMLAttRules = "<Attribute name=\"HreF\" tag=\"a\"/> <Attribute name=\"sRc\" />";
315: String lJSFunRules = "<Function source=\"*rajanagendra.sun.com*\" type=\"DHTML\" name=\"document.write\" paramPatterns=\"y\"/>";
316:
317: RuleSet lRuleSet = CreateRuleSet.withHTMLAttJSVarJSFunRules(
318: lHTMLAttRules, "", lJSFunRules);
319: Rewriter lRewriter = RewriterPool.create(lRuleSet,
320: LanguageConstants.JS_MIME);
321: String lResult = lRewriter.rewrite(lInput,
322: getDefaultTranslator());
323: assertEquals(lExpectation, lResult);
324: }//testBug4622383Variation()
325:
326: /**
327: * First Frame SRS (second one) is not getting rewriten but first one gets..
328: */
329: public void testBug4530009() throws Exception {
330: String lInput = "<HTML>\n"
331: + " <HEAD>\n"
332: + " </HEAD>\n"
333: + " <BODY>\n"
334: + " <SCRIPT LANGUAGE=\"JavaScript\">\n"
335: + " var headerFrame = \"header\"\n"
336: + " document.writeln ('<FRAMESET>');\n"
337: + " document.writeln ('<FRAME NAME=\"buttons\" SRC=\"/admin/top.html\">');\n"
338: + " document.writeln ('<FRAME NAME=\"' + headerFrame + '\" SRC=\"/admin/top.html\">');\n"
339: + " document.writeln ('<FRAME NAME=\"buttons\" SRC=\"/admin/top.html\">');\n"
340: + " document.writeln ('</FRAMESET>');\n"
341: + " </SCRIPT>\n" + " </BODY>\n" + "</HTML>\n";
342:
343: String lExpectation = "<HTML>\n"
344: + " <HEAD>\n"
345: + " </HEAD>\n"
346: + " <BODY>\n"
347: + " <SCRIPT LANGUAGE=\"JavaScript\">\n"
348: + " var headerFrame = \"header\"\n"
349: + " document.writeln ('<FRAMESET>');\n"
350: + " document.writeln ('<FRAME NAME=\"buttons\" SRC=\"http://rajanagendra.sun.com/admin/top.html\">');\n"
351: + " document.writeln ('<FRAME NAME=\"' + headerFrame + '\" SRC=\"http://rajanagendra.sun.com/admin/top.html\">');\n"
352: + " document.writeln ('<FRAME NAME=\"buttons\" SRC=\"http://rajanagendra.sun.com/admin/top.html\">');\n"
353: + " document.writeln ('</FRAMESET>');\n"
354: + " </SCRIPT>\n" + " </BODY>\n" + "</HTML>\n";
355:
356: String lHTMLAttRules = " <Attribute name=\"sRc\" />";
357: String lJSFunRules = "<Function type=\"DHTML\" name=\"document.writeln\" paramPatterns=\"y\"/>";
358:
359: RuleSet lRuleSet = CreateRuleSet.withHTMLAttJSVarJSFunRules(
360: lHTMLAttRules, "", lJSFunRules);
361: Rewriter lRewriter = RewriterPool.create(lRuleSet,
362: LanguageConstants.HTML_MIME);
363: String lResult = lRewriter.rewrite(lInput,
364: getDefaultTranslator());
365: assertEquals(lExpectation, lResult);
366: }//testBug4530009()
367:
368: public void testBug4530009Varient0() throws Exception {
369: String lInput = "<HTML>\n"
370: + " <HEAD>\n"
371: + " </HEAD>\n"
372: + " <BODY>\n"
373: + " <SCRIPT LANGUAGE=\"JavaScript\">\n"
374: + " var headerFrame = \"header\"\n"
375: + " document.writeln ('<FRAMESET>');\n"
376: + " document.writeln ('<FRAME NAME=\"buttons\" SRC=\"/admin/top.html\">');\n"
377: + " document.writeln ('<FRAME NAME=\"' + headerFrame + '\"' + 'SRC=\"/admin/top.html\" >');\n"
378: + " document.writeln ('<FRAME NAME=\"buttons\" SRC=\"/admin/top.html\">');\n"
379: + " document.writeln ('</FRAMESET>');\n"
380: + " </SCRIPT>\n" + " </BODY>\n" + "</HTML>\n";
381:
382: String lExpectation = "<HTML>\n"
383: + " <HEAD>\n"
384: + " </HEAD>\n"
385: + " <BODY>\n"
386: + " <SCRIPT LANGUAGE=\"JavaScript\">\n"
387: + " var headerFrame = \"header\"\n"
388: + " document.writeln ('<FRAMESET>');\n"
389: + " document.writeln ('<FRAME NAME=\"buttons\" SRC=\"http://rajanagendra.sun.com/admin/top.html\">');\n"
390: + " document.writeln ('<FRAME NAME=\"' + headerFrame + '\"' + 'SRC=\"http://rajanagendra.sun.com/admin/top.html\" >');\n"
391: + " document.writeln ('<FRAME NAME=\"buttons\" SRC=\"http://rajanagendra.sun.com/admin/top.html\">');\n"
392: + " document.writeln ('</FRAMESET>');\n"
393: + " </SCRIPT>\n" + " </BODY>\n" + "</HTML>\n";
394:
395: String lHTMLAttRules = " <Attribute name=\"sRc\" />";
396: String lJSFunRules = "<Function type=\"DHTML\" name=\"document.writeln\" paramPatterns=\"y\"/>";
397:
398: RuleSet lRuleSet = CreateRuleSet.withHTMLAttJSVarJSFunRules(
399: lHTMLAttRules, "", lJSFunRules);
400: Rewriter lRewriter = RewriterPool.create(lRuleSet,
401: LanguageConstants.HTML_MIME);
402: String lResult = lRewriter.rewrite(lInput,
403: getDefaultTranslator());
404: assertEquals(lExpectation, lResult);
405: }//testBug4530009Varient0()
406:
407: /**
408: * First Frame SRS (second one) is not getting rewriten but first one gets..
409: * Reverse the attributes src first and name second
410: */
411: public void testBug4530009Varient2() throws Exception {
412: String lInput = "<HTML>\n"
413: + " <HEAD>\n"
414: + " </HEAD>\n"
415: + " <BODY>\n"
416: + " <SCRIPT LANGUAGE=\"JavaScript\">\n"
417: + " var headerFrame = \"header\"\n"
418: + " document.writeln ('<FRAMESET>');\n"
419: + " document.writeln ('<FRAME NAME=\"buttons\" SRC=\"/admin/top.html\">');\n"
420: + " document.writeln ('<FRAME SRC=\"/admin/top.html\" NAME=\"' + headerFrame + '\">');\n"
421: + " document.writeln ('<FRAME NAME=\"buttons\" SRC=\"/admin/top.html\">');\n"
422: + " document.writeln ('</FRAMESET>');\n"
423: + " </SCRIPT>\n" + " </BODY>\n" + "</HTML>\n";
424:
425: String lExpectation = "<HTML>\n"
426: + " <HEAD>\n"
427: + " </HEAD>\n"
428: + " <BODY>\n"
429: + " <SCRIPT LANGUAGE=\"JavaScript\">\n"
430: + " var headerFrame = \"header\"\n"
431: + " document.writeln ('<FRAMESET>');\n"
432: + " document.writeln ('<FRAME NAME=\"buttons\" SRC=\"http://rajanagendra.sun.com/admin/top.html\">');\n"
433: + " document.writeln ('<FRAME SRC=\"http://rajanagendra.sun.com/admin/top.html\" NAME=\"' + headerFrame + '\">');\n"
434: + " document.writeln ('<FRAME NAME=\"buttons\" SRC=\"http://rajanagendra.sun.com/admin/top.html\">');\n"
435: + " document.writeln ('</FRAMESET>');\n"
436: + " </SCRIPT>\n" + " </BODY>\n" + "</HTML>\n";
437:
438: String lHTMLAttRules = " <Attribute name=\"sRc\" />";
439: String lJSFunRules = "<Function type=\"DHTML\" name=\"document.writeln\" paramPatterns=\"y\"/>";
440:
441: RuleSet lRuleSet = CreateRuleSet.withHTMLAttJSVarJSFunRules(
442: lHTMLAttRules, "", lJSFunRules);
443: Rewriter lRewriter = RewriterPool.create(lRuleSet,
444: LanguageConstants.HTML_MIME);
445: String lResult = lRewriter.rewrite(lInput,
446: getDefaultTranslator());
447: assertEquals(lExpectation, lResult);
448: }//testBug4530009Varient2()
449:
450: public void testBug4530009Varient3RemoveQuotesInAttributeValueUseHTMLRewriter()
451: throws Exception {
452: String lInput = "document.writeln ('<FRAME NAME=\"' + headerFrame + '\" SRC=/admin/top.html>');";
453:
454: String lExpectation = "document.writeln ('<FRAME NAME=\"' + headerFrame + '\" SRC=http://rajanagendra.sun.com/admin/top.html>');";
455:
456: String lHTMLAttRules = " <Attribute name=\"sRc\" />";
457: String lJSFunRules = "<Function type=\"DHTML\" name=\"document.writeln\" paramPatterns=\"y\"/>";
458:
459: RuleSet lRuleSet = CreateRuleSet.withHTMLAttJSVarJSFunRules(
460: lHTMLAttRules, "", lJSFunRules);
461: Rewriter lRewriter = RewriterPool.create(lRuleSet,
462: LanguageConstants.HTML_MIME);
463: String lResult = lRewriter.rewrite(lInput,
464: getDefaultTranslator());
465: assertEquals(lExpectation, lResult);
466: }//testBug4530009Varient3RemoveQuotesInAttributeValueUseHTMLRewriter()
467:
468: public void testBug4530009Varient3RemoveQuotesInAttributeValue()
469: throws Exception {
470: String lInput = "document.writeln ('<FRAME NAME=\"' + headerFrame + '\" SRC=/admin/top.html>');";
471:
472: String lExpectation = "document.writeln ('<FRAME NAME=\"' + headerFrame + '\" SRC=http://rajanagendra.sun.com/admin/top.html>');";
473:
474: String lHTMLAttRules = " <Attribute name=\"sRc\" />";
475: String lJSFunRules = "<Function type=\"DHTML\" name=\"document.writeln\" paramPatterns=\"y\"/>";
476:
477: RuleSet lRuleSet = CreateRuleSet.withHTMLAttJSVarJSFunRules(
478: lHTMLAttRules, "", lJSFunRules);
479: Rewriter lRewriter = RewriterPool.create(lRuleSet,
480: LanguageConstants.JS_MIME);
481: String lResult = lRewriter.rewrite(lInput,
482: getDefaultTranslator());
483: assertEquals(lExpectation, lResult);
484: }//testBug4530009Varient3RemoveQuotesInAttributeValue()
485:
486: public void testBug4530009Varient4RemoveQuotesInAttributeValue()
487: throws Exception {
488: String lInput = "document.writeln ('<FRAME NAME=\"' + headerFrame + '\"' + 'SRC=/admin/top.html>');";
489:
490: String lExpectation = "document.writeln ('<FRAME NAME=\"' + headerFrame + '\"' + 'SRC=http://rajanagendra.sun.com/admin/top.html>');";
491:
492: String lHTMLAttRules = " <Attribute name=\"sRc\" />";
493: String lJSFunRules = "<Function type=\"DHTML\" name=\"document.writeln\" paramPatterns=\"y\"/>";
494:
495: RuleSet lRuleSet = CreateRuleSet.withHTMLAttJSVarJSFunRules(
496: lHTMLAttRules, "", lJSFunRules);
497: Rewriter lRewriter = RewriterPool.create(lRuleSet,
498: LanguageConstants.JS_MIME);
499: String lResult = lRewriter.rewrite(lInput,
500: getDefaultTranslator());
501: assertEquals(lExpectation, lResult);
502: }//testBug4530009Varient4RemoveQuotesInAttributeValue()
503:
504: public void testBug4530009Varient5RemoveQuotesInAttributeValue()
505: throws Exception {
506: String lInput = "document.writeln ('<FRAME NAME=\"' + headerFrame + '\\ SRC=/admin/top.html>');";
507:
508: String lExpectation = "document.writeln ('<FRAME NAME=\"' + headerFrame + '\\ SRC=http://rajanagendra.sun.com/admin/top.html>');";
509:
510: String lHTMLAttRules = " <Attribute name=\"sRc\" />";
511: String lJSFunRules = "<Function type=\"DHTML\" name=\"document.writeln\" paramPatterns=\"y\"/>";
512:
513: RuleSet lRuleSet = CreateRuleSet.withHTMLAttJSVarJSFunRules(
514: lHTMLAttRules, "", lJSFunRules);
515: Rewriter lRewriter = RewriterPool.create(lRuleSet,
516: LanguageConstants.JS_MIME);
517: String lResult = lRewriter.rewrite(lInput,
518: getDefaultTranslator());
519: assertEquals(lExpectation, lResult);
520: }//testBug4530009Varient5RemoveQuotesInAttributeValue()
521:
522: public void testBug4530009Debug() throws Exception {
523: String lInput = "document.writeln ('<FRAME NAME=\"' + headerFrame + '\" SRC=\"/admin/top.html\">');";
524:
525: String lExpectation = "document.writeln ('<FRAME NAME=\"' + headerFrame + '\" SRC=\"http://rajanagendra.sun.com/admin/top.html\">');";
526:
527: String lHTMLAttRules = " <Attribute name=\"sRc\" />";
528: String lJSFunRules = "<Function type=\"DHTML\" name=\"document.writeln\" paramPatterns=\"y\"/>";
529:
530: RuleSet lRuleSet = CreateRuleSet.withHTMLAttJSVarJSFunRules(
531: lHTMLAttRules, "", lJSFunRules);
532: Rewriter lRewriter = RewriterPool.create(lRuleSet,
533: LanguageConstants.JS_MIME);
534: String lResult = lRewriter.rewrite(lInput,
535: getDefaultTranslator());
536: assertEquals(lExpectation, lResult);
537: }//testBug4530009Debug()
538:
539: public void testSamsungDHTML() throws Exception {
540: String lInput = "document.write('<layer left=\"425\" top=\"102\" z-index=\"100\" visibility=\"show\" ID=\"banner\" >"
541: + "<a href=\"\" onClick=\"clickLink(); return false;\" >"
542: + " <img src=\"/img/wx_today_11B10101.gif\" border=0 name=\"banner\">"
543: + "</a>" + "</layer>')\n";
544: String lExpectation = "document.write('<layer left=\"425\" top=\"102\" z-index=\"100\" visibility=\"show\" ID=\"banner\" >"
545: + "<a href=\"\" onClick=\"clickLink(); return false;\" >"
546: + " <img src=\"http://rajanagendra.sun.com/img/wx_today_11B10101.gif\" border=0 name=\"banner\">"
547: + "</a>" + "</layer>')\n";
548:
549: String lHTMLAttRules = " <Attribute name=\"sRc\" />";
550: String lJSFunRules = "<Function type=\"DHTML\" name=\"*.write\" paramPatterns=\"y\"/>\n";
551:
552: RuleSet lRuleSet = CreateRuleSet.withHTMLAttJSVarJSFunRules(
553: lHTMLAttRules, "", lJSFunRules);
554: Rewriter lRewriter = RewriterPool.create(lRuleSet,
555: LanguageConstants.JS_MIME);
556: String lResult = lRewriter.rewrite(lInput,
557: getDefaultTranslator());
558: assertEquals(lExpectation, lResult);
559: }//testSamsungDHTML()
560:
561: public void testSamsungDHTMLVarient() throws Exception {
562: String lInput = "<script>document.write('<layer left=\"425\" top=\"102\" z-index=\"100\" visibility=\"show\" ID=\"banner\" >"
563: + "<a href=\"\" onClick=\"clickLink(); return false;\" > "
564: + "<img src=\"/img/wx_today_11B10101.gif\" border=0 name=\"banner\">"
565: + "</a>" + "</layer>')" + "</script>\n";
566: String lExpectation = "<script>document.write('<layer left=\"425\" top=\"102\" z-index=\"100\" visibility=\"show\" ID=\"banner\" >"
567: + "<a href=\"\" onClick=\"clickLink(); return false;\" > "
568: + "<img src=\"http://rajanagendra.sun.com/img/wx_today_11B10101.gif\" border=0 name=\"banner\">"
569: + "</a>" + "</layer>')" + "</script>\n";
570:
571: String lHTMLAttRules = " <Attribute name=\"s*c\" />";
572: String lJSFunRules = "<Function type=\"DHTML\" name=\"*.write\" paramPatterns=\"y\"/>\n";
573:
574: RuleSet lRuleSet = CreateRuleSet.withHTMLAttJSVarJSFunRules(
575: lHTMLAttRules, "", lJSFunRules);
576: Rewriter lRewriter = RewriterPool.create(lRuleSet,
577: LanguageConstants.HTML_MIME);
578: String lResult = lRewriter.rewrite(lInput,
579: getDefaultTranslator());
580: assertEquals(lExpectation, lResult);
581: }//testSamsungDHTMLVarient()
582:
583: public void testBugNo4819702AppletCodeBase() throws Exception {
584: String lInput = "document.writeln(\"<APPLET CODE=\\\"com.citrix.JICA.class\\\" ARCHIVE=\\\"JICAEngJ.jar\\\" width=800 height=600>\");";
585: String lExpectation = "document.writeln(\"<APPLET codebase=http://rajanagendra.sun.com/Base/Raja/ CODE=\\\"com.citrix.JICA.class\\\" ARCHIVE=\\\"JICAEngJ.jar\\\" width=800 height=600>\");";
586:
587: String lJSFunRules = "<Function type=\"DHTML\" name=\"*.writeln\" paramPatterns=\"y\"/>\n";
588:
589: RuleSet lRuleSet = CreateRuleSet
590: .withJSFunctionRules(lJSFunRules);
591: Rewriter lRewriter = RewriterPool.create(lRuleSet,
592: LanguageConstants.JS_MIME);
593: String lResult = lRewriter.rewrite(lInput,
594: getDefaultTranslator());
595: assertEquals(lExpectation, lResult);
596: }//testBugNo4819702()
597:
598: public void testBugNo4853583DHTMLVar() throws Exception {
599: String lInput = "var xyz = location.href;"
600: + "var aURI=ABC\n"
601: + "var aURI='ABC'\n"
602: + "document.write(\"<a href=abc.html/>\");"
603: + "document.write(\"<a href=\" + aURI + \"/>\");"
604: + "document.write(\"<a href=\" + aURI[i] + \"/>\");"
605: + "document.write(\"<a href=\" + aURI[i].abc.\n"
606: + "xyz.\n"
607: + "abc + \"/>\");"
608: + "document.write(\"<a href=\" + aURI.abc.xyz + \"/>\");"
609: + "document.write(\"<a href=\" + location.href + \"/>\");"
610: + "document.write(\"<A href=abc.html/>\");";
611:
612: String lExpectation = "var xyz = "
613: + JSWrapperHelper.CONVERT_SYSTEM_FUNCTION_WRAP_START
614: + "location, 'location.href', location.href);"
615: + "var aURI=ABC\n"
616: + "var aURI='http://rajanagendra.sun.com/Base/Raja/ABC'\n"
617: + "document.write(\"<a href=http://rajanagendra.sun.com/Base/Raja/abc.html/>\");"
618: + "document.write(\"<a href=\" + "
619: + JSWrapperHelper.CONVERT_EXPRESSION_FUNCTION_WRAP_START
620: + "aURI) + \"/>\");"
621: + "document.write(\"<a href=\" + "
622: + JSWrapperHelper.CONVERT_EXPRESSION_FUNCTION_WRAP_START
623: + "aURI[i]) + \"/>\");"
624: + "document.write(\"<a href=\" + "
625: + JSWrapperHelper.CONVERT_EXPRESSION_FUNCTION_WRAP_START
626: + "aURI[i].abc.\n"
627: + "xyz.\n"
628: + "abc) + \"/>\");"
629: + "document.write(\"<a href=\" + "
630: + JSWrapperHelper.CONVERT_EXPRESSION_FUNCTION_WRAP_START
631: + "aURI.abc.xyz) + \"/>\");"
632: + "document.write(\"<a href=\" + "
633: + JSWrapperHelper.CONVERT_SYSTEM_FUNCTION_WRAP_START
634: + "location, 'location.href', location.href) + \"/>\");"
635: + "document.write(\"<A href=http://rajanagendra.sun.com/Base/Raja/abc.html/>\");"
636: + JSWrapperHelper.CONVERT_ALL_FUNCTIONS_JS;
637:
638: String lHTMLAttRules = "<Attribute name=\"href\" tag=\"a\"/>";
639:
640: String lJSVarRules = "<Variable name=\"aURI*\" type=\"URL\"/>"
641: + "<Variable name=\"aURI*\"/>"
642: + "<Variable name=\"location.href\" type=\"SYSTEM\"/>";
643:
644: String lJSFunRules = "<Function type=\"DHTML\" name=\"*.write\" paramPatterns=\"y\"/>\n";
645:
646: RuleSet lRuleSet = CreateRuleSet.withHTMLAttJSVarJSFunRules(
647: lHTMLAttRules, lJSVarRules, lJSFunRules);
648: Rewriter lRewriter = RewriterPool.create(lRuleSet,
649: LanguageConstants.JS_MIME);
650: String lResult = lRewriter.rewrite(lInput,
651: getDefaultTranslator());
652: assertEquals(lExpectation, lResult);
653: }//testBugNo4853583DHTMLVar()
654:
655: public void testBugNo4865959MessengerCode() throws Exception {
656: String lInput = "\n"
657: + "document.write(!main.topht ? '' :\n"
658: + " '<frameset border=\"0\" frameborder=\"no\" rows=\"' + (main.topht + main.toolht) + ',*\" onLoad=\"adjustAddressFrame()\">' +\n"
659: + " '<frame name=\"toolFrame\" marginheight=\"0\" marginwidth=\"0\" scrolling=\"no\" src=\"../frame.html?rtfPossible='+main.rtfPossibleString+'\">' +\n"
660: + " '<frame name=\"listFrame\" marginheight=\"1\" marginwidth=\"0\" frameborder=\"1\" src=\"../frame.html?rtfPossible='+main.rtfPossibleString+'\">' +\n"
661: + " '</frameset>');\n";
662: String lExpectation = "\n"
663: + "document.write(!main.topht ? '' :\n"
664: + " '<frameset border=\"0\" frameborder=\"no\" rows=\"' + (main.topht + main.toolht) + ',*\" onLoad=\"adjustAddressFrame()\">' +\n"
665: + " '<frame name=\"toolFrame\" marginheight=\"0\" marginwidth=\"0\" scrolling=\"no\" src=\"http://rajanagendra.sun.com/Base/frame.html?rtfPossible='+main.rtfPossibleString+'\">' +\n"
666: + " '<frame name=\"listFrame\" marginheight=\"1\" marginwidth=\"0\" frameborder=\"1\" src=\"http://rajanagendra.sun.com/Base/frame.html?rtfPossible='+main.rtfPossibleString+'\">' +\n"
667: + " '</frameset>');\n";
668:
669: String lHTMLAttRules = "<Attribute name=\"src\"/>";
670: String lJSFunRules = "<Function type=\"DHTML\" name=\"*.write\" paramPatterns=\"y\"/>\n";
671:
672: RuleSet lRuleSet = CreateRuleSet.withHTMLAttJSVarJSFunRules(
673: lHTMLAttRules, "", lJSFunRules);
674: Rewriter lRewriter = RewriterPool.create(lRuleSet,
675: LanguageConstants.JS_MIME);
676: String lResult = lRewriter.rewrite(lInput,
677: getDefaultTranslator());
678: assertEquals(lExpectation, lResult);
679: }//testBugNo4865959MessengerCode()
680:
681: //if you observe the test case, after base tag non of them are getting
682: //rewritten as PageSpec would have become "".
683: public void testBugNo4740650() throws Exception {
684: String lInput = "<Script Language=\"javascript\">\n"
685: + "var strBinUrl=\"../_vti_bin/\";\n"
686: + "winLoc = new String(window.location);\n"
687: + "baseHref = winLoc.substring(0,winLoc.indexOf('/_vti_script'));\n"
688: + "var abc = 'abc.html';\n"
689: + "document.write('<BASE HREF=\"' + baseHref + '/_layouts/\">');\n"
690: + "var abc = 'abc.html';\n"
691: + "var strBinUrl= '../_vti_bin/';\n" + "</Script>\n";
692:
693: String lExpectation = "<Script Language=\"javascript\">\n"
694: + "var strBinUrl=\"http://rajanagendra.sun.com/Base/_vti_bin/\";\n"
695: + "winLoc = new String(window.location);\n"
696: + "baseHref = winLoc.substring(0,winLoc.indexOf('/_vti_script'));\n"
697: + "var abc = 'http://rajanagendra.sun.com/Base/Raja/abc.html';\n"
698: + "document.write('<BASE HREF=\"' + baseHref + '/_layouts/\">');\n"
699: + "var abc = 'abc.html';\n" + //by now page spec would have been empty
700: "var strBinUrl= '../_vti_bin/';\n" + "</Script>\n";
701:
702: String lJSVarRules = "<Variable name=\"abc\" type=\"URL\" source=\"*/Base/Raja/*\"/>"
703: + "<Variable name=\"strBinUrl\" type=\"URL\" source=\"*/Base/Raja/*\"/>";
704:
705: String lJSFunRules = "<Function type=\"DHTML\" name=\"*.write\" paramPatterns=\"y\"/>\n";
706:
707: RuleSet lRuleSet = CreateRuleSet.withHTMLAttJSVarJSFunRules("",
708: lJSVarRules, lJSFunRules);
709: Rewriter lRewriter = RewriterPool.create(lRuleSet,
710: LanguageConstants.HTML_MIME);
711: String lResult = lRewriter.rewrite(lInput,
712: getDefaultTranslator());
713: assertEquals(lExpectation, lResult);
714: }//testBugNo4740650()
715:
716: public void testBugNo4740650Varient() throws Exception {
717: String lInput = "<Script Language=\"javascript\">\n"
718: + "var strBinUrl=\"../_vti_bin/\";\n"
719: + "winLoc = new String(window.location);\n"
720: + "baseHref = winLoc.substring(0,winLoc.indexOf('/_vti_script'));\n"
721: + "var abc = 'abc.html';\n"
722: + "document.write('<BASE HREF=\"' + baseHref + '/_layouts/\">');\n"
723: + "var abc = 'abc.html';\n"
724: + "var strBinUrl= '../_vti_bin/';\n" + "</Script>\n";
725:
726: String lExpectation =
727: //TestHTMLJSTokens.CONVERT_EXPRESSION_FUNCTION_HTML +
728: "<Script Language=\"javascript\">\n"
729: + "var strBinUrl=\"http://rajanagendra.sun.com/Base/_vti_bin/\";\n"
730: + "winLoc = new String(window.location);\n"
731: + "baseHref ="
732: + JSWrapperHelper.CONVERT_EXPRESSION_FUNCTION_WRAP_START
733: + " winLoc.substring(0,winLoc.indexOf('/_vti_script')));\n"
734: + "var abc = 'http://rajanagendra.sun.com/Base/Raja/abc.html';\n"
735: + "document.write('<BASE HREF=\"' + "
736: + JSWrapperHelper.CONVERT_EXPRESSION_FUNCTION_WRAP_START
737: + "baseHref) + '/_layouts/\">');\n"
738: + "var abc = 'abc.html';\n" + //these remain same as base was made empty..
739: "var strBinUrl= '../_vti_bin/';\n" + "</Script>\n";
740:
741: String lJSVarRules = "<Variable name=\"baseHref\" source=\"*/Base/Raja/*\"/>"
742: + "<Variable name=\"abc\" type=\"URL\" source=\"*/Base/Raja/*\"/>"
743: + "<Variable name=\"strBinUrl\" type=\"URL\" source=\"*/Base/Raja/*\"/>";
744:
745: String lJSFunRules = "<Function type=\"DHTML\" name=\"*.write\" paramPatterns=\"y\"/>\n";
746:
747: RuleSet lRuleSet = CreateRuleSet.withHTMLAttJSVarJSFunRules("",
748: lJSVarRules, lJSFunRules);
749: Rewriter lRewriter = RewriterPool.create(lRuleSet,
750: LanguageConstants.HTML_MIME);
751: String lResult = lRewriter.rewrite(lInput,
752: getDefaultTranslator());
753: assertTrue(lResult.endsWith(lExpectation));
754: }//testBugNo4740650Varient()
755:
756: public void testBugNo4790402PortalInterestHREF() throws Exception {
757: String lInput = "function doButton(com, stat, txt, cbt, id)\n"
758: + "{\n"
759: + " document.writeln(\"<table class=\\\"none\\\" border=\\\"0\\\" cellspacing=\\\"0\\\" cellpadding=\\\"0\\\">\");\n"
760: + " document.writeln(\" <tr>\");\n"
761: + " document.writeln(\" <td><img src=\\\"/pho/ui/common/images/bottomnav/btn_left.gif\\\" width=\\\"11\\\" height=\\\"21\\\"/></td>\");\n"
762: + " document.writeln(\" <td class=\\\"middle2\\\" background=\\\"/pho/ui/common/images/bottomnav/btn_center.gif\\\">\");\n"
763: + " document.writeln(\" <a class=\\\"whiteb\\\" href=\\\"#\\\"\");\n"
764: + " if(id)\n"
765: + " document.writeln(\" id=\\\"\" + id + \"\\\"\");\n"
766: + " if(cbt)\n"
767: + " document.writeln(\" name=\\\"commandButton\\\" value=\\\"\" + com + \"self.status='';\\\"\");\n"
768: + " document.writeln(\" onClick=\\\"\" + com + \"self.status='';\\\"\");\n"
769: + " document.writeln(\" onMouseOver=\\\"self.status='\" + stat + \"';return true;\\\"\");\n"
770: + " document.writeln(\" onMouseOut=\\\"self.status='';return true;\\\">\" + txt);\n"
771: + " document.writeln(\" </a>\");\n"
772: + " document.writeln(\" </td>\");\n"
773: + " document.writeln(\" <td><img src=\\\"/pho/ui/common/images/bottomnav/btn_right.gif\\\" width=\\\"11\\\" height=\\\"21\\\"/></td>\");\n"
774: + " document.writeln(\" <td><img src=\\\"/pho/ui/common/images/spacer.gif\\\" width=\\\"5\\\" height=\\\"21\\\"/></td>\");\n"
775: + " document.writeln(\" </tr>\");\n"
776: + " document.writeln(\"</table>\");\n" + "}\n";
777: String lExpectation = "function doButton(com, stat, txt, cbt, id)\n"
778: + "{\n"
779: + " document.writeln(\"<table class=\\\"none\\\" border=\\\"0\\\" cellspacing=\\\"0\\\" cellpadding=\\\"0\\\">\");\n"
780: + " document.writeln(\" <tr>\");\n"
781: + " document.writeln(\" <td><img src=\\\"http://rajanagendra.sun.com/pho/ui/common/images/bottomnav/btn_left.gif\\\" width=\\\"11\\\" height=\\\"21\\\"/></td>\");\n"
782: + " document.writeln(\" <td class=\\\"middle2\\\" background=\\\"http://rajanagendra.sun.com/pho/ui/common/images/bottomnav/btn_center.gif\\\">\");\n"
783: + " document.writeln(\" <a class=\\\"whiteb\\\" href=\\\"#\\\"\");\n"
784: + " if(id)\n"
785: + " document.writeln(\" id=\\\"\" + id + \"\\\"\");\n"
786: + " if(cbt)\n"
787: + " document.writeln(\" name=\\\"commandButton\\\" value=\\\"\" + com + \"self.status='';\\\"\");\n"
788: + " document.writeln(\" onClick=\\\"\" + com + \"self.status='';\\\"\");\n"
789: + " document.writeln(\" onMouseOver=\\\"self.status='\" + stat + \"';return true;\\\"\");\n"
790: + " document.writeln(\" onMouseOut=\\\"self.status='';return true;\\\">\" + txt);\n"
791: + " document.writeln(\" </a>\");\n"
792: + " document.writeln(\" </td>\");\n"
793: + " document.writeln(\" <td><img src=\\\"http://rajanagendra.sun.com/pho/ui/common/images/bottomnav/btn_right.gif\\\" width=\\\"11\\\" height=\\\"21\\\"/></td>\");\n"
794: + " document.writeln(\" <td><img src=\\\"http://rajanagendra.sun.com/pho/ui/common/images/spacer.gif\\\" width=\\\"5\\\" height=\\\"21\\\"/></td>\");\n"
795: + " document.writeln(\" </tr>\");\n"
796: + " document.writeln(\"</table>\");\n" + "}\n";
797:
798: String lHTMLAttRules = "<Attribute name=\"background\" />"
799: + "<Attribute name=\"src\" />"
800: + "<Attribute name=\"href\" />";
801:
802: String lJSFunRules = "<Function type=\"DHTML\" name=\"*.write*\" paramPatterns=\"y\"/>\n";
803:
804: RuleSet lRuleSet = CreateRuleSet.withHTMLAttJSVarJSFunRules(
805: lHTMLAttRules, "", lJSFunRules);
806: Rewriter lRewriter = RewriterPool.create(lRuleSet,
807: LanguageConstants.JS_MIME);
808: String lResult = lRewriter.rewrite(lInput,
809: getDefaultTranslator());
810: assertEquals(lExpectation, lResult);
811: }//testBugNo4790402PortalInterestHREF()
812:
813: public void testBugNo4790402PortalInterestHREF_HTMLParser()
814: throws Exception {
815: String lInput = "function doButton(com, stat, txt, cbt, id)\n"
816: + "{\n"
817: + " document.writeln(\"<table class=\\\"none\\\" border=\\\"0\\\" cellspacing=\\\"0\\\" cellpadding=\\\"0\\\">\");\n"
818: + " document.writeln(\" <tr>\");\n"
819: + " document.writeln(\" <td><img src=\\\"/pho/ui/common/images/bottomnav/btn_left.gif\\\" width=\\\"11\\\" height=\\\"21\\\"/></td>\");\n"
820: + " document.writeln(\" <td class=\\\"middle2\\\" background=\\\"/pho/ui/common/images/bottomnav/btn_center.gif\\\">\");\n"
821: + " document.writeln(\" <a class=\\\"whiteb\\\" href=\\\"#\\\"\");\n"
822: + " if(id)\n"
823: + " document.writeln(\" id=\\\"\" + id + \"\\\"\");\n"
824: + " if(cbt)\n"
825: + " document.writeln(\" name=\\\"commandButton\\\" value=\\\"\" + com + \"self.status='';\\\"\");\n"
826: + " document.writeln(\" onClick=\\\"\" + com + \"self.status='';\\\"\");\n"
827: + " document.writeln(\" onMouseOver=\\\"self.status='\" + stat + \"';return true;\\\"\");\n"
828: + " document.writeln(\" onMouseOut=\\\"self.status='';return true;\\\">\" + txt);\n"
829: + " document.writeln(\" </a>\");\n"
830: + " document.writeln(\" </td>\");\n"
831: + " document.writeln(\" <td><img src=\\\"/pho/ui/common/images/bottomnav/btn_right.gif\\\" width=\\\"11\\\" height=\\\"21\\\"/></td>\");\n"
832: + " document.writeln(\" <td><img src=\\\"/pho/ui/common/images/spacer.gif\\\" width=\\\"5\\\" height=\\\"21\\\"/></td>\");\n"
833: + " document.writeln(\" </tr>\");\n"
834: + " document.writeln(\"</table>\");\n" + "}\n";
835: String lExpectation = "function doButton(com, stat, txt, cbt, id)\n"
836: + "{\n"
837: + " document.writeln(\"<table class=\\\"none\\\" border=\\\"0\\\" cellspacing=\\\"0\\\" cellpadding=\\\"0\\\">\");\n"
838: + " document.writeln(\" <tr>\");\n"
839: + " document.writeln(\" <td><img src=\\\"http://rajanagendra.sun.com/pho/ui/common/images/bottomnav/btn_left.gif\\\" width=\\\"11\\\" height=\\\"21\\\"/></td>\");\n"
840: + " document.writeln(\" <td class=\\\"middle2\\\" background=\\\"http://rajanagendra.sun.com/pho/ui/common/images/bottomnav/btn_center.gif\\\">\");\n"
841: + " document.writeln(\" <a class=\\\"whiteb\\\" href=\\\"#\\\"\");\n"
842: + " if(id)\n"
843: + " document.writeln(\" id=\\\"\" + id + \"\\\"\");\n"
844: + " if(cbt)\n"
845: + " document.writeln(\" name=\\\"commandButton\\\" value=\\\"\" + com + \"self.status='';\\\"\");\n"
846: + " document.writeln(\" onClick=\\\"\" + com + \"self.status='';\\\"\");\n"
847: + " document.writeln(\" onMouseOver=\\\"self.status='\" + stat + \"';return true;\\\"\");\n"
848: + " document.writeln(\" onMouseOut=\\\"self.status='';return true;\\\">\" + txt);\n"
849: + " document.writeln(\" </a>\");\n"
850: + " document.writeln(\" </td>\");\n"
851: + " document.writeln(\" <td><img src=\\\"http://rajanagendra.sun.com/pho/ui/common/images/bottomnav/btn_right.gif\\\" width=\\\"11\\\" height=\\\"21\\\"/></td>\");\n"
852: + " document.writeln(\" <td><img src=\\\"http://rajanagendra.sun.com/pho/ui/common/images/spacer.gif\\\" width=\\\"5\\\" height=\\\"21\\\"/></td>\");\n"
853: + " document.writeln(\" </tr>\");\n"
854: + " document.writeln(\"</table>\");\n" + "}\n";
855:
856: String lHTMLAttRules = "<Attribute name=\"background\" />"
857: + "<Attribute name=\"src\" />"
858: + "<Attribute name=\"href\" />";
859:
860: RuleSet lRuleSet = CreateRuleSet
861: .withHTMLAttributeRules(lHTMLAttRules);
862: Rewriter lRewriter = RewriterPool.create(lRuleSet,
863: LanguageConstants.HTML_MIME);
864: String lResult = lRewriter.rewrite(lInput,
865: getDefaultTranslator());
866: assertEquals(lExpectation, lResult);
867: }//testBugNo4790402PortalInterestHREF_HTMLParser()
868:
869: public void testSpaceRetentionInDHTML() throws Exception {
870: String lInput = "document.write('<input name= ' + h_RichTextItem + ' type=hidden>');"
871: + "document.write('<img src=abc.html>');"
872: + "ab= 'abc.html'";
873: String lExpectation = "document.write('<input name= ' + h_RichTextItem + ' type=hidden>');"
874: + "document.write('<img src=http://rajanagendra.sun.com/Base/Raja/abc.html>');"
875: + "ab= 'http://rajanagendra.sun.com/Base/Raja/abc.html'";
876:
877: String lHTMLAttRules = "<Attribute name=\"sRC\" />";
878: String lJSVarRules = "<Variable name=\"ab\" source=\"*sun.*\"/>";
879: String lJSFunRules = "<Function type=\"DHTML\" name=\"document.write\" paramPatterns=\"y\"/>";
880:
881: RuleSet lRuleSet = CreateRuleSet.withHTMLAttJSVarJSFunRules(
882: lHTMLAttRules, lJSVarRules, lJSFunRules);
883: Rewriter lRewriter = RewriterPool.create(lRuleSet,
884: LanguageConstants.JS_MIME);
885: String lResult = lRewriter.rewrite(lInput,
886: getDefaultTranslator());
887: assertEquals(lExpectation, lResult);
888: }//testSpaceRetentionInDHTML()
889:
890: public static void main(String[] args) {
891: RewriterModule.initFile();
892: BasicTestCase.run(TestJSDHTMLFunctions.class);
893:
894: TestSuite testSuite = new TestSuite();
895: testSuite.addTest(new TestJSDHTMLFunctions("testBugNo4740650"));
896: //BasicTestCase.run( testSuite );
897: }//main()
898: }//class TestJSDHTMLFunctions
|