2
* Copyright 2002,2004 The Apache Software Foundation.
4
* Licensed under the Apache License, Version 2.0 (the "License");
5
* you may not use this file except in compliance with the License.
6
* You may obtain a copy of the License at
8
* http://www.apache.org/licenses/LICENSE-2.0
10
* Unless required by applicable law or agreed to in writing, software
11
* distributed under the License is distributed on an "AS IS" BASIS,
12
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
* See the License for the specific language governing permissions and
14
* limitations under the License.
17
package org.apache.struts.faces.sysclient;
19
import com.gargoylesoftware.htmlunit.ElementNotFoundException;
20
import com.gargoylesoftware.htmlunit.WebClient;
21
import com.gargoylesoftware.htmlunit.html.HtmlAnchor;
22
import com.gargoylesoftware.htmlunit.html.HtmlBase;
23
import com.gargoylesoftware.htmlunit.html.HtmlBody;
24
import com.gargoylesoftware.htmlunit.html.HtmlElement;
25
import com.gargoylesoftware.htmlunit.html.HtmlForm;
26
import com.gargoylesoftware.htmlunit.html.HtmlHead;
27
import com.gargoylesoftware.htmlunit.html.HtmlHiddenInput;
28
import com.gargoylesoftware.htmlunit.html.HtmlLink;
29
import com.gargoylesoftware.htmlunit.html.HtmlPage;
30
import com.gargoylesoftware.htmlunit.html.HtmlPasswordInput;
31
import com.gargoylesoftware.htmlunit.html.HtmlResetInput;
32
import com.gargoylesoftware.htmlunit.html.HtmlSpan;
33
import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
34
import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
37
import java.util.ArrayList;
38
import java.util.Iterator;
39
import java.util.List;
41
import junit.framework.Test;
42
import junit.framework.TestCase;
43
import junit.framework.TestSuite;
47
* <p>Test case for a logon form that accepts a username and password.</p>
49
* <p><strong>FIXME</strong> - The JavaScript execution support in
50
* HtmlUnit 1.2.3 is not sufficient to test clicking the hyperlink
51
* generated by a Command Link component, so it is not tested automatically.</p>
53
* @version $Revision: 1.2 $ $Date: 2004/08/21 18:21:33 $
56
public class LogonTestCase extends AbstractTestCase {
59
// ------------------------------------------------------------ Constructors
63
* <p>Construct a new instance of this test case.</p>
65
* @param name Name of the new test case
67
public LogonTestCase(String name) {
74
// ------------------------------------------------------ Instance Variables
77
// ------------------------------------------------------ Test Setup Methods
81
* <p>Set up the instance variables required for this test case.</p>
83
public void setUp() throws Exception {
92
* <p>Return the set of tests included in this test suite.</p>
94
public static Test suite() {
96
return (new TestSuite(LogonTestCase.class));
102
* <p>Tear down instance variables required by this test case.</p>
104
public void tearDown() {
112
// ------------------------------------------------- Individual Test Methods
116
* <p>Submit incorrect input fields and verify the correct response.</p>
118
public void testIncorrect() throws Exception {
120
HtmlSpan span = null;
121
HtmlTextInput username = (HtmlTextInput) element("form:username");
122
HtmlPasswordInput password = (HtmlPasswordInput)
123
element("form:password");
124
HtmlSubmitInput submit = (HtmlSubmitInput) element("form:submit");
126
username.setValueAttribute("bb");
127
password.setValueAttribute("");
130
assertEquals("logon", title());
132
span = (HtmlSpan) element("globalErrors");
134
assertEquals("", span.asText());
136
username = (HtmlTextInput) element("form:username");
137
assertNotNull(username);
138
assertEquals("bb", username.getValueAttribute());
140
span = (HtmlSpan) element("form:usernameErrors");
142
// FIXME: response string should really include "Username:"
143
assertEquals("[EH][EP] can not be less than 3 characters.[ES][EF]",
146
password = (HtmlPasswordInput) element("form:password");
147
assertNotNull(password);
148
assertEquals("", password.getValueAttribute());
150
span = (HtmlSpan) element("form:passwordErrors");
152
// FIXME: response string should really include "Password:"
153
assertEquals("[EH][EP] is required.[ES][EF]", span.asText());
159
* <p>Verify the content of a pristine page returned when executing this
160
* view for the first time.</p>
162
public void testPristine() throws Exception {
164
HtmlSpan span = null;
166
HtmlElement html = (HtmlElement) page;
167
assertEquals("html", html.getTagName());
168
assertEquals("http://www.w3.org/1999/xhtml", html.getAttributeValue("xmlns"));
170
assertEquals("logon", title());
172
HtmlForm form = (HtmlForm) element("form");
174
assertEquals("", form.getAcceptAttribute());
175
assertEquals("", form.getAcceptCharsetAttribute());
176
String url = this.url.toString();
177
url = url.substring(0, url.length() - 1);
178
url = url.substring(url.lastIndexOf('/'));
179
String action = form.getActionAttribute();
180
int semicolon = action.indexOf(';');
181
if (semicolon >= 0) {
182
action = action.substring(0, semicolon);
184
assertEquals(url + "/logon.faces", action);
185
assertEquals("", form.getEnctypeAttribute());
186
assertEquals("post", form.getMethodAttribute());
187
assertEquals("", form.getNameAttribute());
188
assertEquals("", form.getOnResetAttribute());
189
assertEquals("", form.getOnSubmitAttribute());
190
assertEquals("", form.getTargetAttribute());
192
span = (HtmlSpan) element("form:usernamePrompt");
194
assertEquals("Username:", span.asText());
196
HtmlTextInput username = (HtmlTextInput) element("form:username");
197
assertNotNull(username);
198
assertEquals("", username.getLangAttribute());
199
assertEquals("form:username", username.getNameAttribute());
200
assertEquals("", username.getOnClickAttribute());
201
assertEquals("", username.getOnDblClickAttribute());
202
assertEquals("", username.getOnKeyDownAttribute());
203
assertEquals("", username.getOnKeyPressAttribute());
204
assertEquals("", username.getOnKeyUpAttribute());
205
assertEquals("", username.getOnMouseDownAttribute());
206
assertEquals("", username.getOnMouseMoveAttribute());
207
assertEquals("", username.getOnMouseOutAttribute());
208
assertEquals("", username.getOnMouseOverAttribute());
209
assertEquals("", username.getOnMouseUpAttribute());
210
assertEquals("text", username.getTypeAttribute());
211
assertEquals("", username.getValueAttribute());
213
span = (HtmlSpan) element("form:passwordPrompt");
215
assertEquals("Password:", span.asText());
217
HtmlPasswordInput password = (HtmlPasswordInput)
218
element("form:password");
219
assertNotNull(password);
220
assertEquals("", password.getLangAttribute());
221
assertEquals("form:password", password.getNameAttribute());
222
assertEquals("", password.getOnClickAttribute());
223
assertEquals("", password.getOnDblClickAttribute());
224
assertEquals("", password.getOnKeyDownAttribute());
225
assertEquals("", password.getOnKeyPressAttribute());
226
assertEquals("", password.getOnKeyUpAttribute());
227
assertEquals("", password.getOnMouseDownAttribute());
228
assertEquals("", password.getOnMouseMoveAttribute());
229
assertEquals("", password.getOnMouseOutAttribute());
230
assertEquals("", password.getOnMouseOverAttribute());
231
assertEquals("", password.getOnMouseUpAttribute());
232
assertEquals("password", password.getTypeAttribute());
233
assertEquals("", password.getValueAttribute());
235
HtmlSubmitInput submit = (HtmlSubmitInput) element("form:submit");
236
assertNotNull(submit);
237
assertEquals("", submit.getLangAttribute());
238
assertEquals("form:submit", submit.getNameAttribute());
239
assertEquals("", submit.getOnClickAttribute());
240
assertEquals("", submit.getOnDblClickAttribute());
241
assertEquals("", submit.getOnKeyDownAttribute());
242
assertEquals("", submit.getOnKeyPressAttribute());
243
assertEquals("", submit.getOnKeyUpAttribute());
244
assertEquals("", submit.getOnMouseDownAttribute());
245
assertEquals("", submit.getOnMouseMoveAttribute());
246
assertEquals("", submit.getOnMouseOutAttribute());
247
assertEquals("", submit.getOnMouseOverAttribute());
248
assertEquals("", submit.getOnMouseUpAttribute());
249
assertEquals("submit", submit.getTypeAttribute());
250
assertEquals("Logon", submit.getValueAttribute());
252
HtmlResetInput reset = (HtmlResetInput) element("form:reset");
253
assertNotNull(reset);
254
assertEquals("", reset.getLangAttribute());
255
assertEquals("form:reset", reset.getNameAttribute());
256
assertEquals("", reset.getOnClickAttribute());
257
assertEquals("", reset.getOnDblClickAttribute());
258
assertEquals("", reset.getOnKeyDownAttribute());
259
assertEquals("", reset.getOnKeyPressAttribute());
260
assertEquals("", reset.getOnKeyUpAttribute());
261
assertEquals("", reset.getOnMouseDownAttribute());
262
assertEquals("", reset.getOnMouseMoveAttribute());
263
assertEquals("", reset.getOnMouseOutAttribute());
264
assertEquals("", reset.getOnMouseOverAttribute());
265
assertEquals("", reset.getOnMouseUpAttribute());
266
assertEquals("reset", reset.getTypeAttribute());
267
assertEquals("Reset", reset.getValueAttribute());
269
HtmlSubmitInput cancel = (HtmlSubmitInput) element("form:cancel");
270
assertNotNull(cancel);
271
assertEquals("", cancel.getLangAttribute());
272
assertEquals("form:cancel", cancel.getNameAttribute());
273
assertEquals("", cancel.getOnClickAttribute());
274
assertEquals("", cancel.getOnDblClickAttribute());
275
assertEquals("", cancel.getOnKeyDownAttribute());
276
assertEquals("", cancel.getOnKeyPressAttribute());
277
assertEquals("", cancel.getOnKeyUpAttribute());
278
assertEquals("", cancel.getOnMouseDownAttribute());
279
assertEquals("", cancel.getOnMouseMoveAttribute());
280
assertEquals("", cancel.getOnMouseOutAttribute());
281
assertEquals("", cancel.getOnMouseOverAttribute());
282
assertEquals("", cancel.getOnMouseUpAttribute());
283
assertEquals("submit", cancel.getTypeAttribute());
284
assertEquals("Cancel", cancel.getValueAttribute());
286
HtmlAnchor anchor = (HtmlAnchor) element("form:submit2");
287
assertNotNull(anchor);
288
assertEquals("", anchor.getAccessKeyAttribute());
289
assertEquals("", anchor.getCharsetAttribute());
290
assertEquals("", anchor.getClassAttribute());
291
assertEquals("", anchor.getCoordsAttribute());
292
assertEquals("#", anchor.getHrefAttribute());
293
assertEquals("form:submit2", anchor.getIdAttribute());
294
assertEquals("", anchor.getLangAttribute());
295
assertEquals("", anchor.getHrefLangAttribute());
296
assertEquals("", anchor.getOnBlurAttribute());
298
(anchor.getOnClickAttribute().startsWith
299
("document.forms['form']" +
300
"['org_apache_struts_faces_renderer_CommandLinkRenderer']" +
301
".value='form:submit2';"));
302
assertEquals("", anchor.getOnDblClickAttribute());
303
assertEquals("", anchor.getOnKeyDownAttribute());
304
assertEquals("", anchor.getOnKeyPressAttribute());
305
assertEquals("", anchor.getOnKeyUpAttribute());
306
assertEquals("", anchor.getOnMouseDownAttribute());
307
assertEquals("", anchor.getOnMouseMoveAttribute());
308
assertEquals("", anchor.getOnMouseOutAttribute());
309
assertEquals("", anchor.getOnMouseOverAttribute());
310
assertEquals("", anchor.getOnMouseUpAttribute());
311
assertEquals("", anchor.getTextDirectionAttribute());
312
assertEquals("", anchor.getXmlLangAttribute());
313
assertEquals("", anchor.getOnFocusAttribute());
314
assertEquals("", anchor.getRelAttribute());
315
assertEquals("", anchor.getRevAttribute());
316
assertEquals("", anchor.getShapeAttribute());
317
assertEquals("", anchor.getStyleAttribute());
318
assertEquals("", anchor.getTabIndexAttribute());
319
assertEquals("a", anchor.getTagName());
320
assertEquals("", anchor.getTargetAttribute());
321
assertEquals("", anchor.getTitleAttribute());
322
assertEquals("", anchor.getTypeAttribute());
323
assertEquals("Logon", anchor.asText());
325
List list = form.getHtmlElementsByAttribute
327
"org_apache_struts_faces_renderer_CommandLinkRenderer");
329
assertEquals(1, list.size());
330
HtmlHiddenInput hidden = (HtmlHiddenInput) list.get(0);
331
assertEquals("hidden", hidden.getTypeAttribute());
332
assertEquals("", hidden.getValueAttribute());
338
* <p>Submit known-bad mismatch and verify the correct response.</p>
340
public void testMismatch() throws Exception {
342
HtmlSpan span = null;
343
HtmlTextInput username = (HtmlTextInput) element("form:username");
344
HtmlPasswordInput password = (HtmlPasswordInput)
345
element("form:password");
346
HtmlSubmitInput submit = (HtmlSubmitInput) element("form:submit");
348
username.setValueAttribute("baduser");
349
password.setValueAttribute("badpass");
352
assertEquals("logon", title());
354
span = (HtmlSpan) element("globalErrors");
356
assertEquals("[EH][EP]Invalid username/password combination[ES][EF]",
359
username = (HtmlTextInput) element("form:username");
360
assertNotNull(username);
361
assertEquals("baduser", username.getValueAttribute());
363
span = (HtmlSpan) element("form:usernameErrors");
365
assertEquals("", span.asText());
367
password = (HtmlPasswordInput) element("form:password");
368
assertNotNull(password);
369
assertEquals("", password.getValueAttribute());
371
span = (HtmlSpan) element("form:passwordErrors");
373
assertEquals("", span.asText());
379
* <p>Submit known-good username and password values, and
380
* verify the correct response.</p>
382
public void testSuccessful() throws Exception {
384
HtmlTextInput username = (HtmlTextInput) element("form:username");
385
HtmlPasswordInput password = (HtmlPasswordInput)
386
element("form:password");
387
HtmlSubmitInput submit = (HtmlSubmitInput) element("form:submit");
389
username.setValueAttribute("gooduser");
390
password.setValueAttribute("goodpass");
393
assertEquals("logon1", title());