You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by so...@apache.org on 2020/04/04 14:07:54 UTC

[openmeetings] branch master updated: [OPENMEETINGS-2165] tests should be fixed

This is an automated email from the ASF dual-hosted git repository.

solomax pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/openmeetings.git


The following commit(s) were added to refs/heads/master by this push:
     new 10b5edb  [OPENMEETINGS-2165] tests should be fixed
10b5edb is described below

commit 10b5edb2703735b9efdeacb07e4abadc366fb797
Author: Maxim Solodovnik <so...@gmail.com>
AuthorDate: Sat Apr 4 21:07:14 2020 +0700

    [OPENMEETINGS-2165] tests should be fixed
---
 .../web/pages/install/TestInstall.java             | 77 ++++++++++++----------
 1 file changed, 41 insertions(+), 36 deletions(-)

diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/web/pages/install/TestInstall.java b/openmeetings-web/src/test/java/org/apache/openmeetings/web/pages/install/TestInstall.java
index f851669..7ac4f34 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/web/pages/install/TestInstall.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/web/pages/install/TestInstall.java
@@ -18,7 +18,6 @@
  */
 package org.apache.openmeetings.web.pages.install;
 
-import static com.googlecode.wicket.jquery.ui.widget.dialog.AbstractDialog.SUBMIT;
 import static org.apache.commons.io.FileUtils.deleteQuietly;
 import static org.apache.openmeetings.AbstractJUnitDefaults.adminUsername;
 import static org.apache.openmeetings.AbstractJUnitDefaults.email;
@@ -31,14 +30,13 @@ import static org.apache.openmeetings.cli.ConnectionPropertiesPatcher.DEFAULT_DB
 import static org.apache.openmeetings.db.util.ApplicationHelper.ensureApplication;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.DEFAULT_APP_NAME;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.setWicketApplicationName;
+import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertNull;
-import static org.junit.jupiter.api.Assertions.fail;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.io.File;
-import java.io.Serializable;
 import java.nio.file.Files;
-import java.util.List;
+import java.util.Iterator;
 import java.util.Locale;
 import java.util.Random;
 import java.util.TimeZone;
@@ -50,8 +48,12 @@ import org.apache.openmeetings.util.ConnectionProperties.DbType;
 import org.apache.openmeetings.util.crypt.SCryptImplementation;
 import org.apache.openmeetings.web.app.Application;
 import org.apache.openmeetings.web.app.WebSession;
+import org.apache.wicket.ajax.AjaxClientInfoBehavior;
 import org.apache.wicket.behavior.AbstractAjaxBehavior;
-import org.apache.wicket.util.lang.Args;
+import org.apache.wicket.extensions.wizard.WizardButton;
+import org.apache.wicket.protocol.ws.WebSocketAwareCsrfPreventionRequestCycleListener;
+import org.apache.wicket.request.cycle.IRequestCycleListener;
+import org.apache.wicket.request.cycle.RequestCycleListenerCollection;
 import org.apache.wicket.util.tester.FormTester;
 import org.apache.wicket.util.tester.WicketTester;
 import org.junit.jupiter.api.AfterEach;
@@ -60,12 +62,10 @@ import org.junit.jupiter.api.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.googlecode.wicket.jquery.ui.widget.dialog.AbstractDialog;
-import com.googlecode.wicket.jquery.ui.widget.dialog.ButtonAjaxBehavior;
-
 public class TestInstall {
 	private static final Logger log = LoggerFactory.getLogger(TestInstall.class);
 	private static final String WIZARD_PATH = "wizard";
+	private static final String FORM_PATH = WIZARD_PATH + ":form";
 	private File tempFolder;
 	protected WicketTester tester;
 	protected Random rnd = new Random();
@@ -96,6 +96,14 @@ public class TestInstall {
 		tempFolder = Files.createTempDirectory("omtempdb").toFile();
 		setH2Home(tempFolder);
 		tester = getWicketTester((Application)ensureApplication(-1L));
+		RequestCycleListenerCollection listeners = tester.getApplication().getRequestCycleListeners();
+		for (Iterator<IRequestCycleListener> iter = listeners.iterator(); iter.hasNext();) {
+			IRequestCycleListener l = iter.next();
+			if (l instanceof WebSocketAwareCsrfPreventionRequestCycleListener) {
+				listeners.remove(l);
+				break;
+			}
+		}
 		assertNotNull(WebSession.get(), "Web session should not be null");
 		Locale[] locales = Locale.getAvailableLocales();
 		tester.getSession().setLocale(locales[rnd.nextInt(locales.length)]);
@@ -117,62 +125,59 @@ public class TestInstall {
 		InstallWizardPage page = tester.startPage(InstallWizardPage.class);
 		tester.assertRenderedPage(InstallWizardPage.class);
 		InstallWizard wiz = (InstallWizard)page.get(WIZARD_PATH);
-		assertNull(wiz.getWizardModel().getActiveStep(), "Model should be null");
-		tester.executeBehavior((AbstractAjaxBehavior)page.getBehaviorById(0)); //welcome step
+		assertFalse(wiz.isEnabled(), "Wizard should be disabled");
+		AjaxClientInfoBehavior clientInfo = page.getBehaviors(AjaxClientInfoBehavior.class).get(0);
+		tester.executeBehavior(clientInfo);
+		assertTrue(wiz.isEnabled(), "Wizard should be enabled");
 		assertNotNull(wiz.getWizardModel().getActiveStep(), "Model should NOT be null");
 
-		AbstractAjaxBehavior prev = getButtonBehavior(tester, WIZARD_PATH, "PREV");
+		WizardButton prev = getWizardButton("previous");
 		//check enabled, add check for other buttons on other steps
-		//FIXME TODO assertFalse(prev.getButton().isEnabled(), "Prev button should be disabled");
-		AbstractAjaxBehavior next = getButtonBehavior(tester, WIZARD_PATH, "NEXT");
-		AbstractAjaxBehavior finish = getButtonBehavior(tester, WIZARD_PATH, SUBMIT);
-		tester.executeBehavior(next); //DB step
-		FormTester wizardTester = tester.newFormTester("wizard:form");
+		assertFalse(prev.isEnabled(), "Prev button should be disabled");
+		WizardButton next = getWizardButton("next");
+		AbstractAjaxBehavior finish = (AbstractAjaxBehavior)getWizardButton("finish").getBehaviorById(0);
+		FormTester wizardTester = tester.newFormTester(FORM_PATH);
+		wizardTester.submit(next);
+		wizardTester = tester.newFormTester(FORM_PATH);
 		wizardTester.select("view:form:dbType", 1);
 		checkErrors(tester, 0);
-		tester.executeBehavior(next); //user step
+		wizardTester.submit(next); //user step
 		checkErrors(tester, 0);
+		wizardTester = tester.newFormTester(FORM_PATH);
 		wizardTester.setValue("view:username", adminUsername);
 		wizardTester.setValue("view:password", userpass);
 		wizardTester.setValue("view:email", email);
 		String[] tzIds = TimeZone.getAvailableIDs();
 		wizardTester.select("view:timeZone", rnd.nextInt(tzIds.length));
 		wizardTester.setValue("view:group", group);
-		tester.executeBehavior(next); //cfg+smtp step
+		wizardTester.submit(next); //cfg+smtp step
 		checkErrors(tester, 0);
+		wizardTester = tester.newFormTester(FORM_PATH);
 		wizardTester.setValue("view:smtpPort", "25");
 		wizardTester.select("view:defaultLangId", 0);
-		tester.executeBehavior(next); //converters step
+		wizardTester.submit(next); //converters step
 		checkErrors(tester, 0);
+		wizardTester = tester.newFormTester(FORM_PATH);
 		wizardTester.setValue("view:docDpi", "150");
 		wizardTester.setValue("view:docQuality", "90");
-		tester.executeBehavior(next); //crypt step
+		wizardTester.submit(next); //crypt step
 		// not checking errors
 		if (countErrors(tester) > 0) {
 			tester.cleanupFeedbackMessages();
+			wizardTester = tester.newFormTester(FORM_PATH);
 			wizardTester.setValue("view:docDpi", "150");
 			wizardTester.setValue("view:docQuality", "90");
-			tester.executeBehavior(next); //skip errors
+			wizardTester.submit(next); //skip errors
 		}
+		wizardTester = tester.newFormTester(FORM_PATH);
 		wizardTester.setValue("view:cryptClassName", SCryptImplementation.class.getName());
-		tester.executeBehavior(next); //install step
+		wizardTester.submit(next); //install step
 		checkErrors(tester, 0);
 		tester.executeBehavior(finish);
 		checkErrors(tester, 0);
 	}
 
-	public static <T extends Serializable> ButtonAjaxBehavior getButtonBehavior(WicketTester tester, String path, String name) {
-		Args.notNull(path, "path");
-		Args.notNull(name, "name");
-		@SuppressWarnings("unchecked")
-		AbstractDialog<T> dialog = (AbstractDialog<T>)tester.getComponentFromLastRenderedPage(path);
-		List<ButtonAjaxBehavior> bl = dialog.getBehaviors(ButtonAjaxBehavior.class);
-		for (ButtonAjaxBehavior bb : bl) {
-			if (name.equals(bb.getButton().getName())) {
-				return bb;
-			}
-		}
-		fail(String.format("Button '%s' not found for dialog '%s'", name, path));
-		return null;
+	private WizardButton getWizardButton(String name) {
+		return (WizardButton)tester.getComponentFromLastRenderedPage("wizard:form:buttons:" + name);
 	}
 }