|
@@ -21,6 +21,7 @@ package org.apache.hadoop.yarn.webapp.view;
|
|
|
import java.io.PrintWriter;
|
|
|
import java.io.StringWriter;
|
|
|
|
|
|
+import static org.junit.Assert.assertFalse;
|
|
|
import static org.junit.Assert.assertTrue;
|
|
|
|
|
|
import org.apache.hadoop.yarn.webapp.ResponseInfo;
|
|
@@ -34,6 +35,33 @@ public class TestInfoBlock {
|
|
|
|
|
|
public static PrintWriter pw;
|
|
|
|
|
|
+ static final String JAVASCRIPT = "<script>alert('text')</script>";
|
|
|
+ static final String JAVASCRIPT_ESCAPED =
|
|
|
+ "<script>alert('text')</script>";
|
|
|
+
|
|
|
+ public static class JavaScriptInfoBlock extends InfoBlock{
|
|
|
+
|
|
|
+ static ResponseInfo resInfo;
|
|
|
+
|
|
|
+ static {
|
|
|
+ resInfo = new ResponseInfo();
|
|
|
+ resInfo._("User_Name", JAVASCRIPT);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public PrintWriter writer() {
|
|
|
+ return TestInfoBlock.pw;
|
|
|
+ }
|
|
|
+
|
|
|
+ JavaScriptInfoBlock(ResponseInfo info) {
|
|
|
+ super(resInfo);
|
|
|
+ }
|
|
|
+
|
|
|
+ public JavaScriptInfoBlock() {
|
|
|
+ super(resInfo);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
public static class MultilineInfoBlock extends InfoBlock{
|
|
|
|
|
|
static ResponseInfo resInfo;
|
|
@@ -78,4 +106,13 @@ public class TestInfoBlock {
|
|
|
+ " This is second line.\n </div>\n";
|
|
|
assertTrue(output.contains(expectedSinglelineData) && output.contains(expectedMultilineData));
|
|
|
}
|
|
|
+
|
|
|
+ @Test(timeout=60000L)
|
|
|
+ public void testJavaScriptInfoBlock() throws Exception{
|
|
|
+ WebAppTests.testBlock(JavaScriptInfoBlock.class);
|
|
|
+ TestInfoBlock.pw.flush();
|
|
|
+ String output = TestInfoBlock.sw.toString();
|
|
|
+ assertFalse(output.contains("<script>"));
|
|
|
+ assertTrue(output.contains(JAVASCRIPT_ESCAPED));
|
|
|
+ }
|
|
|
}
|