You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by jc...@apache.org on 2007/05/31 22:44:35 UTC
svn commit: r543248 - in /incubator/wicket/trunk/jdk-1.4/wicket/src:
main/java/org/apache/wicket/protocol/http/
test/java/org/apache/wicket/stateless/
test/java/org/apache/wicket/stateless/pages/
Author: jcompagner
Date: Thu May 31 13:44:34 2007
New Revision: 543248
URL: http://svn.apache.org/viewvc?view=rev&rev=543248
Log:
fixes for stateless testing of forms/pages
mock servlet request must also clean/initialize the url variable
Added:
incubator/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/stateless/StatelessFormTest.java (with props)
incubator/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/stateless/pages/
incubator/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/stateless/pages/HomePage.html (with props)
incubator/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/stateless/pages/HomePage.java (with props)
incubator/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/stateless/pages/LoginPage.html (with props)
incubator/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/stateless/pages/LoginPage.java (with props)
incubator/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/stateless/pages/UsernamePasswordSignInPanel.html (with props)
incubator/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/stateless/pages/UsernamePasswordSignInPanel.java (with props)
Modified:
incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/MockHttpServletRequest.java
Modified: incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/MockHttpServletRequest.java
URL: http://svn.apache.org/viewvc/incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/MockHttpServletRequest.java?view=diff&rev=543248&r1=543247&r2=543248
==============================================================================
--- incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/MockHttpServletRequest.java (original)
+++ incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/MockHttpServletRequest.java Thu May 31 13:44:34 2007
@@ -918,6 +918,7 @@
cookies.clear();
setDefaultHeaders();
path = null;
+ url = null;
characterEncoding = "UTF-8";
parameters.clear();
attributes.clear();
@@ -1196,6 +1197,12 @@
parameters.put(WebRequestCodingStrategy.INTERFACE_PARAMETER_NAME, pageMapName + ':'
+ component.getPath() + ':' + (version == 0 ? "" : "" + version) + ':'
+ Classes.simpleName(clazz) + "::");
+
+ if (component.isStateless() && component.getPage().isBookmarkable())
+ {
+ parameters.put(WebRequestCodingStrategy.BOOKMARKABLE_PAGE_PARAMETER_NAME, pageMapName
+ + ':' + component.getPage().getClass().getName());
+ }
}
}
Added: incubator/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/stateless/StatelessFormTest.java
URL: http://svn.apache.org/viewvc/incubator/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/stateless/StatelessFormTest.java?view=auto&rev=543248
==============================================================================
--- incubator/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/stateless/StatelessFormTest.java (added)
+++ incubator/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/stateless/StatelessFormTest.java Thu May 31 13:44:34 2007
@@ -0,0 +1,102 @@
+package org.apache.wicket.stateless;
+
+import junit.framework.TestCase;
+
+import org.apache.wicket.markup.html.form.IFormSubmitListener;
+import org.apache.wicket.protocol.http.WebApplication;
+import org.apache.wicket.protocol.http.WebRequestCycle;
+import org.apache.wicket.stateless.pages.HomePage;
+import org.apache.wicket.stateless.pages.LoginPage;
+import org.apache.wicket.util.tester.FormTester;
+import org.apache.wicket.util.tester.WicketTester;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ *
+ * @author marrink
+ */
+public class StatelessFormTest extends TestCase
+{
+ private static final Logger log = LoggerFactory.getLogger(StatelessFormTest.class);
+
+ private WicketTester mock = null;
+
+ private WebApplication application;
+
+ private Class homePage = HomePage.class;
+ private Class loginPage = LoginPage.class;
+
+
+ protected void setUp() throws Exception
+ {
+ mock = new WicketTester(application = new WebApplication()
+ {
+
+
+ public Class getHomePage()
+ {
+ return StatelessFormTest.this.getHomePage();
+ }
+ }, "src/test/java/" + getClass().getPackage().getName().replace('.', '/'));
+ }
+
+ protected void tearDown() throws Exception
+ {
+ mock.setupRequestAndResponse();
+ mock.getWicketSession().invalidate();
+ mock.processRequestCycle();
+ mock.destroy();
+ mock = null;
+ application = null;
+ setHomePage(HomePage.class);
+ setLoginPage(LoginPage.class);
+ }
+
+ /**
+ * @return Returns the homePage.
+ */
+ public Class getHomePage()
+ {
+ return homePage;
+ }
+
+ /**
+ * @param homePage The homePage to set.
+ */
+ public void setHomePage(Class homePage)
+ {
+ this.homePage = homePage;
+ }
+
+ /**
+ * @return Returns the loginPage.
+ */
+ public Class getLoginPage()
+ {
+ return loginPage;
+ }
+
+ /**
+ * @param loginPage The loginPage to set.
+ */
+ public void setLoginPage(Class loginPage)
+ {
+ this.loginPage = loginPage;
+ }
+
+ /**
+ * Login through the login page.
+ */
+ public void testLogin()
+ {
+ mock.startPage(getLoginPage());
+ mock.assertRenderedPage(getLoginPage());
+ FormTester form = mock.newFormTester("signInPanel:signInForm");
+ form.setValue("username", "test");
+ form.setValue("password", "test");
+ form.submit();
+ mock.assertRenderedPage(getHomePage());
+ }
+
+}
Propchange: incubator/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/stateless/StatelessFormTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/stateless/pages/HomePage.html
URL: http://svn.apache.org/viewvc/incubator/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/stateless/pages/HomePage.html?view=auto&rev=543248
==============================================================================
--- incubator/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/stateless/pages/HomePage.html (added)
+++ incubator/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/stateless/pages/HomePage.html Thu May 31 13:44:34 2007
@@ -0,0 +1,12 @@
+<!DOCTYPE html
+PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns:wicket>
+<head>
+ <title>Homepage</title>
+</head>
+<body>
+<span wicket:id="welcome"></span>
+<a href="#" wicket:id="link">Click me</a>
+</body>
+</html>
Propchange: incubator/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/stateless/pages/HomePage.html
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/stateless/pages/HomePage.java
URL: http://svn.apache.org/viewvc/incubator/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/stateless/pages/HomePage.java?view=auto&rev=543248
==============================================================================
--- incubator/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/stateless/pages/HomePage.java (added)
+++ incubator/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/stateless/pages/HomePage.java Thu May 31 13:44:34 2007
@@ -0,0 +1,38 @@
+package org.apache.wicket.stateless.pages;
+
+import org.apache.wicket.markup.html.WebPage;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.link.Link;
+
+
+/**
+ * @author marrink
+ *
+ */
+public class HomePage extends WebPage
+{
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+
+ /**
+ *
+ */
+ public HomePage()
+ {
+ add(new Label("welcome", "Welcome"));
+ add(new Link("link")
+ {
+ private static final long serialVersionUID = 1L;
+
+ public void onClick()
+ {
+ setVisible(true); // dummy op
+ }
+ });
+
+ }
+
+}
Propchange: incubator/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/stateless/pages/HomePage.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/stateless/pages/LoginPage.html
URL: http://svn.apache.org/viewvc/incubator/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/stateless/pages/LoginPage.html?view=auto&rev=543248
==============================================================================
--- incubator/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/stateless/pages/LoginPage.html (added)
+++ incubator/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/stateless/pages/LoginPage.html Thu May 31 13:44:34 2007
@@ -0,0 +1,62 @@
+<!DOCTYPE html
+PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+<title>Carmel College</title>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+<link href="style.css" rel="stylesheet" type="text/css" />
+
+
+<!-- Browsercheck -->
+<script type="text/javascript" src="browser_detect.js"></script>
+
+<!-- Voor de dropdown functionaliteit -->
+<script type="text/javascript" src="dropdown.js"></script>
+
+<wicket:remove>
+ <link href="../../../../../../../../webapp/style.css" type="text/css" rel="stylesheet" />
+</wicket:remove>
+</head>
+<body>
+<div class="pagecontainer withsearch">
+<div class="filler"></div>
+
+<IFRAME
+ style="Z-INDEX: 2; DISPLAY: none; LEFT: 0px; POSITION: absolute; TOP: 0px"
+ src="javascript:false;" id="iefix" frameBorder="0" scrolling="no"></IFRAME>
+
+<div style="height:70px;"></div>
+<div class="inlogContainer">
+
+ <div class="maintop" id="inlogwidth">
+ <div class="maintop_left" id="inlogmenuleft" style="border-right:none;">
+ <span class="pagetitle" id="systemname">Vocus Leerling Informatie Systeem</span>
+ </div>
+ <div class="maintop_left maintop_right" id="inlogmenuright" style="border-left:none;"></div>
+ </div>
+
+ <div class="menuwrap" id="loginschool"> </div>
+
+ <div class="searchbar nosearch" id="inlogsearchbar"></div>
+ <div class="contentbox cbnosearch" id="inlogcontent">
+
+ <div class="loginLeft">
+ <span wicket:id="signInPanel"> login panel comes here </span>
+ </div>
+
+ <div class="loginRight">
+ TESTING
+ </div>
+
+ </div>
+
+ <div class="mainbottom" id="inlogwidth">
+ <div class="mainbottom_left" id="inlogbar"></div>
+ <div class="mainbottom_left mainbottom_right"></div>
+ </div>
+
+</div>
+</div>
+</body>
+</html>
Propchange: incubator/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/stateless/pages/LoginPage.html
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/stateless/pages/LoginPage.java
URL: http://svn.apache.org/viewvc/incubator/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/stateless/pages/LoginPage.java?view=auto&rev=543248
==============================================================================
--- incubator/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/stateless/pages/LoginPage.java (added)
+++ incubator/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/stateless/pages/LoginPage.java Thu May 31 13:44:34 2007
@@ -0,0 +1,35 @@
+package org.apache.wicket.stateless.pages;
+
+import org.apache.wicket.markup.html.WebPage;
+
+/**
+ *
+ * @author marrink
+ */
+public class LoginPage extends WebPage
+{
+
+ private static final long serialVersionUID = 1L;
+
+
+ /**
+ * Constructor.
+ */
+ public LoginPage()
+ {
+ setStatelessHint(true);
+ String panelId = "signInPanel";
+ newUserPasswordSignInPanel(panelId);
+ }
+
+ /**
+ * Creeert een sign in panel voor instellingen die hun authenticatie enkel baseren op
+ * username/wachtwoord.
+ * @param panelId
+ * @param info
+ */
+ private void newUserPasswordSignInPanel(String panelId)
+ {
+ add(new UsernamePasswordSignInPanel(panelId));
+ }
+}
Propchange: incubator/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/stateless/pages/LoginPage.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/stateless/pages/UsernamePasswordSignInPanel.html
URL: http://svn.apache.org/viewvc/incubator/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/stateless/pages/UsernamePasswordSignInPanel.html?view=auto&rev=543248
==============================================================================
--- incubator/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/stateless/pages/UsernamePasswordSignInPanel.html (added)
+++ incubator/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/stateless/pages/UsernamePasswordSignInPanel.html Thu May 31 13:44:34 2007
@@ -0,0 +1,21 @@
+<html xmlns:wicket>
+<body>
+<wicket:panel>
+ <div class="caption inlogcaption">Aanmelden voor <span wicket:id="naam"></span></div>
+ <form id="signInForm" wicket:id="signInForm">
+ <span class="inloglabel">Gebruikersnaam</span><span class="inloglabel_value"><input type="text" value="" wicket:id="username" class="label_active inlogbox" id="username"/></span>
+ <span class="inloglabel">Wachtwoord</span><span class="inloglabel_value"><input type="password" value="" wicket:id="password" class="label_active inlogbox" id="password" autocomplete="off" /></span>
+ <span wicket:id="rememberMeRow"><span class="inloglabel"> </span><span class="inloglabel_value"><input type="checkbox" id="datsave" wicket:id="rememberMe" style="position:relative;left:-3px;"/><label class="inlogcb" for=datsave>Gegevens opslaan</label></span></span>
+ <span class="inloglabel"> </span><span class="inloglabel_value"><div class="std_button btn_left inlogbtn"><a onClick="form=getElementById('signInForm');form.submit();return true;" href="#"><span>Aanmelden</span></a></div></span>
+ <input type="submit" style="width:0px; height:0px; position:absolute; top:-300px;" tabIndex="-1"/>
+ </form>
+ <span id="loginError" wicket:id="feedback"/>
+ <script type="text/javascript">
+ if(document.getElementById('username').value == "")
+ document.getElementById('username').focus();
+ else
+ document.getElementById('password').focus();
+ </script>
+</wicket:panel>
+</body>
+</html>
Propchange: incubator/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/stateless/pages/UsernamePasswordSignInPanel.html
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/stateless/pages/UsernamePasswordSignInPanel.java
URL: http://svn.apache.org/viewvc/incubator/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/stateless/pages/UsernamePasswordSignInPanel.java?view=auto&rev=543248
==============================================================================
--- incubator/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/stateless/pages/UsernamePasswordSignInPanel.java (added)
+++ incubator/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/stateless/pages/UsernamePasswordSignInPanel.java Thu May 31 13:44:34 2007
@@ -0,0 +1,150 @@
+/*
+ * $Id: UsernamePasswordSignInPanel.java,v 1.3 2007/03/05 12:40:32 dashorst Exp $
+ * $Revision: 1.3 $ $Date: 2007/03/05 12:40:32 $
+ *
+ * ==============================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package org.apache.wicket.stateless.pages;
+
+import org.apache.wicket.Application;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.form.CheckBox;
+import org.apache.wicket.markup.html.form.FormComponent;
+import org.apache.wicket.markup.html.form.PasswordTextField;
+import org.apache.wicket.markup.html.form.StatelessForm;
+import org.apache.wicket.markup.html.form.TextField;
+import org.apache.wicket.markup.html.panel.FeedbackPanel;
+import org.apache.wicket.markup.html.panel.Panel;
+import org.apache.wicket.model.CompoundPropertyModel;
+import org.apache.wicket.model.PropertyModel;
+import org.apache.wicket.util.value.ValueMap;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+
+/**
+ *
+ * @author marrink
+ *
+ */
+public class UsernamePasswordSignInPanel extends Panel
+{
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+ private static final Logger log = LoggerFactory.getLogger(UsernamePasswordSignInPanel.class);
+ /**
+ * Constructor.
+ */
+ public UsernamePasswordSignInPanel(final String id)
+ {
+ super(id);
+
+ add(new FeedbackPanel("feedback"));
+ add(new Label("naam"));
+ add(new SignInForm("signInForm"));
+ }
+
+ /**
+ *
+ * @param username
+ * @param password
+ * @return
+ */
+ public boolean signIn(String username, String password)
+ {
+ return true;
+ }
+
+ /**
+ * Sign in form.
+ */
+ public final class SignInForm extends StatelessForm
+ {
+ /** Voor serializatie. */
+ private static final long serialVersionUID = 1L;
+
+ /** Moeten de inlog waarden bewaard blijven? */
+ private boolean rememberMe = true;
+
+ /**
+ * Constructor.
+ * @param id id of the form component
+ */
+ public SignInForm(final String id)
+ {
+ super(id, new CompoundPropertyModel(new ValueMap()));
+
+ // only save username, not passwords
+ add(new TextField("username").setPersistent(rememberMe));
+ add(new PasswordTextField("password"));
+ // MarkupContainer row for remember me checkbox
+ WebMarkupContainer rememberMeRow = new WebMarkupContainer("rememberMeRow");
+ add(rememberMeRow);
+
+ // Add rememberMe checkbox
+ rememberMeRow.add(new CheckBox("rememberMe", new PropertyModel(this, "rememberMe")));
+ }
+
+ /**
+ * @see wicket.markup.html.form.Form#onSubmit()
+ */
+ public final void onSubmit()
+ {
+ if (!rememberMe)
+ {
+ // Verwijder de persistente waarden van het formulier
+ getPage().removePersistedFormData(SignInForm.class, true);
+ }
+
+ ValueMap values = (ValueMap) getModelObject();
+ String username = values.getString("username");
+ String password = values.getString("password");
+
+ if (signIn(username, password))
+ {
+ if (!getPage().continueToOriginalDestination())
+ {
+ setResponsePage(Application.get().getHomePage());
+ }
+ }
+ else
+ {
+ // Try the component based localizer first. If not found try the
+ // application localizer. Else use the default
+ error(getLocalizer().getString("exception.login", this,
+ "Illegal username password combo"));
+ }
+ }
+
+ /**
+ * Geeft terug of de waarden van het formulier bewaard moeten worden of niet.
+ */
+ public boolean getRememberMe()
+ {
+ return rememberMe;
+ }
+
+ /**
+ * Zet of de waarden van het formulier bewaard moeten worden of niet.
+ */
+ public void setRememberMe(boolean rememberMe)
+ {
+ this.rememberMe = rememberMe;
+ ((FormComponent) get("username")).setPersistent(rememberMe);
+ }
+ }
+}
Propchange: incubator/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/stateless/pages/UsernamePasswordSignInPanel.java
------------------------------------------------------------------------------
svn:eol-style = native