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 <solomax...@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); } }