Source Code Cross Referenced for TestJSURLVariables.java in  » Portal » Open-Portal » com » sun » portal » rewriter » engines » js » test » Java Source Code / Java DocumentationJava Source Code and Java Documentation

Java Source Code / Java Documentation
1. 6.0 JDK Core
2. 6.0 JDK Modules
3. 6.0 JDK Modules com.sun
4. 6.0 JDK Modules com.sun.java
5. 6.0 JDK Modules sun
6. 6.0 JDK Platform
7. Ajax
8. Apache Harmony Java SE
9. Aspect oriented
10. Authentication Authorization
11. Blogger System
12. Build
13. Byte Code
14. Cache
15. Chart
16. Chat
17. Code Analyzer
18. Collaboration
19. Content Management System
20. Database Client
21. Database DBMS
22. Database JDBC Connection Pool
23. Database ORM
24. Development
25. EJB Server geronimo
26. EJB Server GlassFish
27. EJB Server JBoss 4.2.1
28. EJB Server resin 3.1.5
29. ERP CRM Financial
30. ESB
31. Forum
32. GIS
33. Graphic Library
34. Groupware
35. HTML Parser
36. IDE
37. IDE Eclipse
38. IDE Netbeans
39. Installer
40. Internationalization Localization
41. Inversion of Control
42. Issue Tracking
43. J2EE
44. JBoss
45. JMS
46. JMX
47. Library
48. Mail Clients
49. Net
50. Parser
51. PDF
52. Portal
53. Profiler
54. Project Management
55. Report
56. RSS RDF
57. Rule Engine
58. Science
59. Scripting
60. Search Engine
61. Security
62. Sevlet Container
63. Source Control
64. Swing Library
65. Template Engine
66. Test Coverage
67. Testing
68. UML
69. Web Crawler
70. Web Framework
71. Web Mail
72. Web Server
73. Web Services
74. Web Services apache cxf 2.0.1
75. Web Services AXIS2
76. Wiki Engine
77. Workflow Engines
78. XML
79. XML UI
Java
Java Tutorial
Java Open Source
Jar File Download
Java Articles
Java Products
Java by API
Photoshop Tutorials
Maya Tutorials
Flash Tutorials
3ds-Max Tutorials
Illustrator Tutorials
GIMP Tutorials
C# / C Sharp
C# / CSharp Tutorial
C# / CSharp Open Source
ASP.Net
ASP.NET Tutorial
JavaScript DHTML
JavaScript Tutorial
JavaScript Reference
HTML / CSS
HTML CSS Reference
C / ANSI-C
C Tutorial
C++
C++ Tutorial
Ruby
PHP
Python
Python Tutorial
Python Open Source
SQL Server / T-SQL
SQL Server / T-SQL Tutorial
Oracle PL / SQL
Oracle PL/SQL Tutorial
PostgreSQL
SQL / MySQL
MySQL Tutorial
VB.Net
VB.Net Tutorial
Flash / Flex / ActionScript
VBA / Excel / Access / Word
XML
XML Tutorial
Microsoft Office PowerPoint 2007 Tutorial
Microsoft Office Excel 2007 Tutorial
Microsoft Office Word 2007 Tutorial
Java Source Code / Java Documentation » Portal » Open Portal » com.sun.portal.rewriter.engines.js.test 
Source Cross Referenced  Class Diagram Java Document (Java Doc) 


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 = &#39;/portal/document1.pdf&#39;;"
1126:                        + "getTopFrame().main.location.href = &#39;/portal/document1.pdf&#39;;"
1127:                        + "var a = '&#39;portal/document1.pdf&#39;';"
1128:                        + "getTopFrame().main.location.href = \"&#39;/portal/document1.pdf&#39;\";";
1129:
1130:                String lExpectation = "var a = &#39;http://rajanagendra.sun.com/portal/document1.pdf&#39;;"
1131:                        + "getTopFrame().main.location.href = &#39;http://rajanagendra.sun.com/portal/document1.pdf&#39;;"
1132:                        + "var a = '&#39;http://rajanagendra.sun.com/Base/Raja/portal/document1.pdf&#39;';"
1133:                        + "getTopFrame().main.location.href = \"&#39;http://rajanagendra.sun.com/portal/document1.pdf&#39;\";";
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 = &#39;/portal/document1.pdf&#39;;"
1149:                        + "var a = &#x27;/portal/document1.pdf&#39;;"
1150:                        + "var a = &#x27;/portal/document1.pdf&#x27;;"
1151:                        + "var a = &#34;/portal/document1.pdf&#34;;"
1152:                        + "var a = &#x22;/portal/document1.pdf&#34;;"
1153:                        + "var a = &#x22;/portal/document1.pdf&#x22;;"
1154:                        + "getTopFrame1().main.location.href = &#39;/portal/document1.pdf&#39;;"
1155:                        + "var a = '&#39;portal/document1.pdf&#39;';"
1156:                        + "getTopFrame().main.location.href = \"&#39;/portal/document1.pdf&#39;\";";
1157:
1158:                String lExpectation = "var a = &#39;http://rajanagendra.sun.com/portal/document1.pdf&#39;;"
1159:                        + "var a = &#x27;http://rajanagendra.sun.com/portal/document1.pdf&#39;;"
1160:                        + "var a = &#x27;http://rajanagendra.sun.com/portal/document1.pdf&#x27;;"
1161:                        + "var a = &#34;http://rajanagendra.sun.com/portal/document1.pdf&#34;;"
1162:                        + "var a = &#x22;http://rajanagendra.sun.com/portal/document1.pdf&#34;;"
1163:                        + "var a = &#x22;http://rajanagendra.sun.com/portal/document1.pdf&#x22;;"
1164:                        + "getTopFrame1().main.location.href = &#39;http://rajanagendra.sun.com/portal/document1.pdf&#39;;"
1165:                        + "var a = '&#39;http://rajanagendra.sun.com/Base/Raja/portal/document1.pdf&#39;';"
1166:                        + "getTopFrame().main.location.href = \"&#39;http://rajanagendra.sun.com/portal/document1.pdf&#39;\";";
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
w_w__w_._j___a___va___2__s.__c__o_m_ | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.