You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by "Frank Bille Jensen (JIRA)" <ji...@apache.org> on 2007/12/06 19:56:54 UTC

[jira] Updated: (WICKET-768) Testing setRequired(true) behavior of PasswordTestField fails

     [ https://issues.apache.org/jira/browse/WICKET-768?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Frank Bille Jensen updated WICKET-768:
--------------------------------------

    Fix Version/s:     (was: 1.3.0-rc2)
                   1.3.0-rc3

> Testing setRequired(true) behavior of PasswordTestField fails
> -------------------------------------------------------------
>
>                 Key: WICKET-768
>                 URL: https://issues.apache.org/jira/browse/WICKET-768
>             Project: Wicket
>          Issue Type: Bug
>          Components: wicket
>    Affects Versions: 1.3.0-beta2
>         Environment: any
>            Reporter: David Rosenstrauch
>            Assignee: Igor Vaynberg
>            Priority: Minor
>             Fix For: 1.3.0-rc3
>
>
> When testing a PasswordTextField (using Junit and WicketTester), the testing fails - incorrectly, I believe.
> I created a simple page and form with a PasswordTextField on it, then used WicketTester/FormTester to test the setRequired() behavior.  If I leave the field blank before I submit the form, then that should generate a validation error that the field is required.  Instead, I get none, the form submits correctly, and the password value that gets delivered to the model is a bizarre value: XPauhDrxdC0
> Interesting to note:
> * This problem does not appear to happen in a live application.  In a live application, the "required" message is generated correctly.  It only appears to happen when under test.
> * This behavior does not happen if I switch the PasswordTextField to become a regular RequiredTextField.  When using a RequiredTextField with the exact same code, the error message is generated correctly.
> Code to reproduce follows:
> TestPasswordRequired.java
> -------------------------
> import junit.framework.TestCase;
> import org.apache.wicket.feedback.FeedbackMessage;
> import org.apache.wicket.util.tester.FormTester;
> import org.apache.wicket.util.tester.WicketTester;
> public class TestPasswordRequired extends TestCase {
>     public void testPasswordRequired() {
>         WicketTester tester = new WicketTester();
>         Class pageClass = PasswordPage.class;
>         tester.startPage(pageClass);
>         tester.assertRenderedPage(pageClass);
>         tester.assertNoErrorMessage();
>         FormTester formTester = tester.newFormTester(PasswordPage.FORM_NAME);
>         formTester.submit();
>         assertEquals(1, tester.getMessages(FeedbackMessage.ERROR).size());
>     }
> }
> PasswordPage.java
> -----------------
> import java.io.Serializable;
> import org.apache.wicket.markup.html.WebPage;
> import org.apache.wicket.markup.html.form.Form;
> import org.apache.wicket.markup.html.form.PasswordTextField;
> import org.apache.wicket.markup.html.form.RequiredTextField;
> import org.apache.wicket.markup.html.form.TextField;
> import org.apache.wicket.markup.html.panel.FeedbackPanel;
> import org.apache.wicket.model.CompoundPropertyModel;
> import org.apache.wicket.model.Model;
> public class PasswordPage extends WebPage {
>     public PasswordPage() {
>         add(new FeedbackPanel("errors"));
>         add(new PasswordRequiredForm(FORM_NAME));
>     }
>     private static class PasswordRequiredForm extends Form {
>         public PasswordRequiredForm(String formName) {
>             super(formName, new CompoundPropertyModel(new PasswordHolder()));
>             passwordField = new PasswordTextField(PASSWORD_FIELD_NAME);
> //            passwordField = new RequiredTextField(PASSWORD_FIELD_NAME);
>             add(passwordField);
>         }
>         protected void onSubmit() {
>             System.out.println("submit successful; password field value: "+passwordField.getValue());
>         }
>         private TextField passwordField;
>     }
>     private static class PasswordHolder implements Serializable {
>         public String getPassword() {
>             return password;
>         }
>         public void setPassword(String password) {
> System.out.println("set password: "+password);
>             this.password = password;
>         }
>         private String password;
>     }
>     public static final String FORM_NAME = "form";
>     public static final String PASSWORD_FIELD_NAME = "password";
> }
> PasswordPage.html
> -----------------
> <html>
> <head><title>Password required test page</title></head>
> <body>
> <span wicket:id="errors"/>
> <form wicket:id="form">
> <input type="password" wicket:id="password"/>
> <!--<input type="text" wicket:id="password"/>-->
> </form>
> </body>
> </html>

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.