I have a copy of the noejb example that I am modifying. I've modified it only
to change package names. But my ChangePasswordTest is failing.
ChangePasswordTest has this code. The failure is on the "assert
outcome==null;" line.
new Script() {
|
| ChangePasswordAction changePassword;
|
| @Override
| protected void applyRequestValues() throws Exception
| {
| Contexts.getSessionContext().set("loggedIn", true);
| Contexts.getSessionContext().set("user", new User("Gavin King",
"foobar", "gavin"));
| }
|
| @Override
| protected void updateModelValues() throws Exception
| {
| User user = (User) Component.getInstance("user", true);
| user.setPassword("xxx");
| changePassword = (ChangePasswordAction)
Component.getInstance("changePassword", true);
| changePassword.setVerify("xxx");
| }
|
| @Override
| protected void invokeApplication()
| {
| String outcome = changePassword.changePassword();
| log.info("Outcome is " + outcome);
| assert outcome==null; // fails
| }
|
| @Override
| protected void renderResponse()
| {
| User user = (User) Component.getInstance("user", false);
| assert user.getName().equals("Gavin King");
| assert user.getUsername().equals("gavin");
| assert user.getPassword().equals("xxx");
| assert !Manager.instance().isLongRunningConversation();
| assert
Contexts.getSessionContext().get("loggedIn").equals(true);
|
| }
|
| }.run();
My question is, why is outcome expected to be null there? It looks to me like
the test goes to pains to set up a User object whose password *does* match the
value of "verify". And ChangePasswordAction is:
@Name("changePassword")
| @LoggedIn
| public class ChangePasswordAction
| {
|
| private static final Logger log =
Logger.getLogger(ChangePasswordAction.class);
|
| @In @Out @Valid
| private User user;
|
| @In(create=true)
| private Session bookingDatabase;
|
| @In
| private FacesContext facesContext;
|
| private String verify;
|
| @IfInvalid(outcome=REDISPLAY)
| public String changePassword()
| {
| log.info("user is " + user + " with password " + user.getPassword());
| if ( user.getPassword().equals(verify) )
| {
| log.info("updating password to: " + verify);
| user = (User) bookingDatabase.merge(user);
| return "main";
| }
| else
| {
| log.info("password not verified");
| facesContext.addMessage(null, new FacesMessage("Re-enter new
password"));
| bookingDatabase.refresh(user);
| verify=null;
| return null;
| }
| }
|
| public String cancel()
| {
| bookingDatabase.refresh(user);
| return "main";
| }
|
| public String getVerify()
| {
| return verify;
| }
|
| public void setVerify(String verify)
| {
| this.verify = verify;
| }
|
| }
Looks to me like if user.getPassword().equals(verify), which it *does* in this
test, then outcome is -- and SHOULD be -- "main", not null.
And that's what I see in my log:
INFO 20-01 23:17:48,562 (ChangePasswordAction.java:changePassword:38) -user
is User(gavin) with password xxx
| INFO 20-01 23:17:52,281 (ChangePasswordAction.java:changePassword:41)
-updating password to: xxx
| INFO 20-01 23:20:54,187 (ChangePasswordTest.java:invokeApplication:51)
-Outcome is main
| java.lang.AssertionError
| at
com.robjsoftware.replog.test.ChangePasswordTest$1.invokeApplication(ChangePasswordTest.java:52)
The action looks right to me. It's the *test* that looks wrong!
What simple detail am I missing?
Thanks,
Rob
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3918807#3918807
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3918807
-------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc. Do you grep through log files
for problems? Stop! Download the new AJAX search engine that makes
searching your log files as easy as surfing the web. DOWNLOAD SPLUNK!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=103432&bid=230486&dat=121642
_______________________________________________
JBoss-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jboss-user