~ubuntu-branches/ubuntu/trusty/libstruts1.2-java/trusty-proposed

« back to all changes in this revision

Viewing changes to contrib/struts-faces/src/sysclient/org/apache/struts/faces/sysclient/LogonTestCase.java

  • Committer: Bazaar Package Importer
  • Author(s): Arnaud Vandyck
  • Date: 2004-11-19 15:35:25 UTC
  • Revision ID: james.westby@ubuntu.com-20041119153525-mdu08a76z4zo67xt
Tags: upstream-1.2.4
ImportĀ upstreamĀ versionĀ 1.2.4

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * Copyright 2002,2004 The Apache Software Foundation.
 
3
 * 
 
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
 
7
 * 
 
8
 *      http://www.apache.org/licenses/LICENSE-2.0
 
9
 * 
 
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.
 
15
 */
 
16
 
 
17
package org.apache.struts.faces.sysclient;
 
18
 
 
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;
 
35
 
 
36
import java.net.URL;
 
37
import java.util.ArrayList;
 
38
import java.util.Iterator;
 
39
import java.util.List;
 
40
 
 
41
import junit.framework.Test;
 
42
import junit.framework.TestCase;
 
43
import junit.framework.TestSuite;
 
44
 
 
45
 
 
46
/**
 
47
 * <p>Test case for a logon form that accepts a username and password.</p>
 
48
 *
 
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>
 
52
 *
 
53
 * @version $Revision: 1.2 $ $Date: 2004/08/21 18:21:33 $
 
54
 */
 
55
 
 
56
public class LogonTestCase extends AbstractTestCase {
 
57
 
 
58
 
 
59
    // ------------------------------------------------------------ Constructors
 
60
 
 
61
 
 
62
    /**
 
63
     * <p>Construct a new instance of this test case.</p>
 
64
     *
 
65
     * @param name Name of the new test case
 
66
     */
 
67
    public LogonTestCase(String name) {
 
68
 
 
69
        super(name);
 
70
 
 
71
    }
 
72
 
 
73
 
 
74
    // ------------------------------------------------------ Instance Variables
 
75
 
 
76
 
 
77
    // ------------------------------------------------------ Test Setup Methods
 
78
 
 
79
 
 
80
    /**
 
81
     * <p>Set up the instance variables required for this test case.</p>
 
82
     */
 
83
    public void setUp() throws Exception {
 
84
 
 
85
        super.setUp();
 
86
        page("/logon.faces");
 
87
 
 
88
    }
 
89
 
 
90
 
 
91
    /**
 
92
     * <p>Return the set of tests included in this test suite.</p>
 
93
     */
 
94
    public static Test suite() {
 
95
 
 
96
        return (new TestSuite(LogonTestCase.class));
 
97
 
 
98
    }
 
99
 
 
100
 
 
101
    /**
 
102
     * <p>Tear down instance variables required by this test case.</p>
 
103
     */
 
104
    public void tearDown() {
 
105
 
 
106
        super.tearDown();
 
107
 
 
108
    }
 
109
 
 
110
 
 
111
 
 
112
    // ------------------------------------------------- Individual Test Methods
 
113
 
 
114
 
 
115
    /**
 
116
     * <p>Submit incorrect input fields and verify the correct response.</p>
 
117
     */
 
118
    public void testIncorrect() throws Exception {
 
119
 
 
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");
 
125
 
 
126
        username.setValueAttribute("bb");
 
127
        password.setValueAttribute("");
 
128
        submit(submit);
 
129
 
 
130
        assertEquals("logon", title());
 
131
 
 
132
        span = (HtmlSpan) element("globalErrors");
 
133
        assertNotNull(span);
 
134
        assertEquals("", span.asText());
 
135
 
 
136
        username = (HtmlTextInput) element("form:username");
 
137
        assertNotNull(username);
 
138
        assertEquals("bb", username.getValueAttribute());
 
139
 
 
140
        span = (HtmlSpan) element("form:usernameErrors");
 
141
        assertNotNull(span);
 
142
        // FIXME:  response string should really include "Username:"
 
143
        assertEquals("[EH][EP] can not be less than 3 characters.[ES][EF]",
 
144
                     span.asText());
 
145
 
 
146
        password = (HtmlPasswordInput) element("form:password");
 
147
        assertNotNull(password);
 
148
        assertEquals("", password.getValueAttribute());
 
149
 
 
150
        span = (HtmlSpan) element("form:passwordErrors");
 
151
        assertNotNull(span);
 
152
        // FIXME:  response string should really include "Password:"
 
153
        assertEquals("[EH][EP] is required.[ES][EF]", span.asText());
 
154
 
 
155
    }
 
156
 
 
157
 
 
158
    /**
 
159
     * <p>Verify the content of a pristine page returned when executing this
 
160
     * view for the first time.</p>
 
161
     */
 
162
    public void testPristine() throws Exception {
 
163
 
 
164
        HtmlSpan span = null;
 
165
 
 
166
        HtmlElement html = (HtmlElement) page;
 
167
        assertEquals("html", html.getTagName());
 
168
        assertEquals("http://www.w3.org/1999/xhtml", html.getAttributeValue("xmlns"));
 
169
 
 
170
        assertEquals("logon", title());
 
171
 
 
172
        HtmlForm form = (HtmlForm) element("form");
 
173
        assertNotNull(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);
 
183
        }
 
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());
 
191
 
 
192
        span = (HtmlSpan) element("form:usernamePrompt");
 
193
        assertNotNull(span);
 
194
        assertEquals("Username:", span.asText());
 
195
 
 
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());
 
212
 
 
213
        span = (HtmlSpan) element("form:passwordPrompt");
 
214
        assertNotNull(span);
 
215
        assertEquals("Password:", span.asText());
 
216
 
 
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());
 
234
 
 
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());
 
251
 
 
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());
 
268
 
 
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());
 
285
 
 
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());
 
297
        assertTrue
 
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());
 
324
 
 
325
        List list = form.getHtmlElementsByAttribute
 
326
            ("input", "name",
 
327
             "org_apache_struts_faces_renderer_CommandLinkRenderer");
 
328
        assertNotNull(list);
 
329
        assertEquals(1, list.size());
 
330
        HtmlHiddenInput hidden = (HtmlHiddenInput) list.get(0);
 
331
        assertEquals("hidden", hidden.getTypeAttribute());
 
332
        assertEquals("", hidden.getValueAttribute());
 
333
 
 
334
    }
 
335
 
 
336
 
 
337
    /**
 
338
     * <p>Submit known-bad mismatch and verify the correct response.</p>
 
339
     */
 
340
    public void testMismatch() throws Exception {
 
341
 
 
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");
 
347
 
 
348
        username.setValueAttribute("baduser");
 
349
        password.setValueAttribute("badpass");
 
350
        submit(submit);
 
351
 
 
352
        assertEquals("logon", title());
 
353
 
 
354
        span = (HtmlSpan) element("globalErrors");
 
355
        assertNotNull(span);
 
356
        assertEquals("[EH][EP]Invalid username/password combination[ES][EF]",
 
357
                     span.asText());
 
358
 
 
359
        username = (HtmlTextInput) element("form:username");
 
360
        assertNotNull(username);
 
361
        assertEquals("baduser", username.getValueAttribute());
 
362
 
 
363
        span = (HtmlSpan) element("form:usernameErrors");
 
364
        assertNotNull(span);
 
365
        assertEquals("", span.asText());
 
366
 
 
367
        password = (HtmlPasswordInput) element("form:password");
 
368
        assertNotNull(password);
 
369
        assertEquals("", password.getValueAttribute());
 
370
 
 
371
        span = (HtmlSpan) element("form:passwordErrors");
 
372
        assertNotNull(span);
 
373
        assertEquals("", span.asText());
 
374
 
 
375
    }
 
376
 
 
377
 
 
378
    /**
 
379
     * <p>Submit known-good username and password values, and
 
380
     * verify the correct response.</p>
 
381
     */
 
382
    public void testSuccessful() throws Exception {
 
383
 
 
384
        HtmlTextInput username = (HtmlTextInput) element("form:username");
 
385
        HtmlPasswordInput password = (HtmlPasswordInput)
 
386
            element("form:password");
 
387
        HtmlSubmitInput submit = (HtmlSubmitInput) element("form:submit");
 
388
 
 
389
        username.setValueAttribute("gooduser");
 
390
        password.setValueAttribute("goodpass");
 
391
        submit(submit);
 
392
 
 
393
        assertEquals("logon1", title());
 
394
 
 
395
    }
 
396
 
 
397
 
 
398
}