1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.myfaces.renderkit.html.ext;
20
21 import javax.faces.component.html.HtmlForm;
22
23 import junit.framework.Test;
24 import junit.framework.TestSuite;
25
26 import org.apache.myfaces.component.html.ext.HtmlCommandButton;
27 import org.apache.myfaces.shared_tomahawk.config.MyfacesConfig;
28 import org.apache.myfaces.test.AbstractTomahawkViewControllerTestCase;
29 import org.apache.myfaces.test.mock.MockExternalContext;
30 import org.apache.myfaces.test.mock.MockHttpServletRequest;
31 import org.apache.myfaces.test.mock.MockHttpServletResponse;
32 import org.apache.myfaces.test.mock.MockResponseWriter;
33 import org.apache.myfaces.test.mock.MockServletContext;
34 import org.apache.myfaces.test.utils.HtmlCheckAttributesUtil;
35 import org.apache.myfaces.test.utils.HtmlRenderedAttr;
36
37 public class HtmlButtonRendererTest extends AbstractTomahawkViewControllerTestCase {
38
39 private MockResponseWriter writer;
40 private HtmlCommandButton commandButton;
41 private HtmlForm form;
42
43 public HtmlButtonRendererTest(String name) {
44 super(name);
45 }
46
47 public static Test suite() {
48 return new TestSuite(HtmlButtonRendererTest.class);
49 }
50
51 public void setUp() throws Exception {
52 super.setUp();
53 writer = (MockResponseWriter)facesContext.getResponseWriter();
54 commandButton = new HtmlCommandButton();
55 form = new HtmlForm();
56 commandButton.setParent(form);
57 }
58
59 public void tearDown() throws Exception {
60 super.tearDown();
61 writer = null;
62 form = null;
63 commandButton = null;
64 }
65
66 public void testJSAllowedHtmlPropertyPassTru() throws Exception
67 {
68 HtmlRenderedAttr[] attrs = {
69
70 new HtmlRenderedAttr("accesskey"),
71
72 new HtmlRenderedAttr("dir"),
73 new HtmlRenderedAttr("lang"),
74 new HtmlRenderedAttr("title"),
75
76 new HtmlRenderedAttr("onfocus"),
77 new HtmlRenderedAttr("onblur"),
78
79 new HtmlRenderedAttr("onchange"),
80 new HtmlRenderedAttr("onselect"),
81
82 new HtmlRenderedAttr("onclick", "onclick",
83 "onclick=\""),
84 new HtmlRenderedAttr("ondblclick"),
85 new HtmlRenderedAttr("onkeydown"),
86 new HtmlRenderedAttr("onkeypress"),
87 new HtmlRenderedAttr("onkeyup"),
88 new HtmlRenderedAttr("onmousedown"),
89 new HtmlRenderedAttr("onmousemove"),
90 new HtmlRenderedAttr("onmouseout"),
91 new HtmlRenderedAttr("onmouseover"),
92 new HtmlRenderedAttr("onmouseup"),
93
94 new HtmlRenderedAttr("style"),
95 new HtmlRenderedAttr("styleClass", "styleClass", "class=\"styleClass\""),
96
97 new HtmlRenderedAttr("tabindex")
98 };
99
100 MockServletContext servletContext = new MockServletContext();
101 servletContext.addInitParameter("org.apache.myfaces.ALLOW_JAVASCRIPT", "true");
102 MockExternalContext mockExtCtx = new MockExternalContext(servletContext,
103 new MockHttpServletRequest(), new MockHttpServletResponse());
104 MyfacesConfig config = MyfacesConfig.getCurrentInstance(mockExtCtx);
105 facesContext.setExternalContext(mockExtCtx);
106
107 HtmlCheckAttributesUtil.checkRenderedAttributes(
108 commandButton, facesContext, writer, attrs);
109 if(HtmlCheckAttributesUtil.hasFailedAttrRender(attrs))
110 {
111 fail(HtmlCheckAttributesUtil.constructErrorMessage(attrs, writer.getWriter().toString()));
112 }
113 }
114
115 public void testJSNotAllowedHtmlPropertyPassTru() throws Exception
116 {
117 HtmlRenderedAttr[] attrs = {
118
119 new HtmlRenderedAttr("accesskey"),
120
121 new HtmlRenderedAttr("dir"),
122 new HtmlRenderedAttr("lang"),
123 new HtmlRenderedAttr("title"),
124
125 new HtmlRenderedAttr("onfocus"),
126 new HtmlRenderedAttr("onblur"),
127
128 new HtmlRenderedAttr("onchange"),
129 new HtmlRenderedAttr("onselect"),
130
131 new HtmlRenderedAttr("onclick","onclick","var cf = function(){onclick};var oamSF = function(){};return (cf.apply(this, [])==false)? false : oamSF.apply(this, []); "),
132 new HtmlRenderedAttr("ondblclick"),
133 new HtmlRenderedAttr("onkeydown"),
134 new HtmlRenderedAttr("onkeypress"),
135 new HtmlRenderedAttr("onkeyup"),
136 new HtmlRenderedAttr("onmousedown"),
137 new HtmlRenderedAttr("onmousemove"),
138 new HtmlRenderedAttr("onmouseout"),
139 new HtmlRenderedAttr("onmouseover"),
140 new HtmlRenderedAttr("onmouseup"),
141
142 new HtmlRenderedAttr("style"),
143 new HtmlRenderedAttr("styleClass", "styleClass", "class=\"styleClass\""),
144
145 new HtmlRenderedAttr("tabindex")
146 };
147
148 HtmlCheckAttributesUtil.checkRenderedAttributes(
149 commandButton, facesContext, writer, attrs);
150 if(HtmlCheckAttributesUtil.hasFailedAttrRender(attrs))
151 {
152 fail(HtmlCheckAttributesUtil.constructErrorMessage(attrs, writer.getWriter().toString()));
153 }
154
155 }
156 }