Repository: openmeetings Updated Branches: refs/heads/master 4393fb1d8 -> effe83366
[OPENMEETINGS-1714] more issues are fixed Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/effe8336 Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/effe8336 Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/effe8336 Branch: refs/heads/master Commit: effe833661584800f5fe6bb467be4f610fdb7739 Parents: 4393fb1 Author: Maxim Solodovnik <[email protected]> Authored: Thu Oct 5 16:07:09 2017 +0700 Committer: Maxim Solodovnik <[email protected]> Committed: Thu Oct 5 16:07:09 2017 +0700 ---------------------------------------------------------------------- .../java/org/apache/openmeetings/cli/Admin.java | 3 +- .../cli/ConnectionPropertiesPatcher.java | 1 + .../apache/openmeetings/cli/DerbyPatcher.java | 7 +- .../apache/openmeetings/cli/MssqlPatcher.java | 4 +- .../apache/openmeetings/cli/MysqlPatcher.java | 4 +- .../apache/openmeetings/cli/OraclePatcher.java | 2 +- .../openmeetings/cli/PostgresPatcher.java | 4 +- .../util/OpenmeetingsVariables.java | 1 + .../openmeetings/AbstractJUnitDefaults.java | 16 +-- .../openmeetings/AbstractWicketTester.java | 22 ++++ .../apache/openmeetings/web/TestInstall.java | 64 ---------- .../web/pages/auth/TestLoginUI.java | 17 --- .../web/pages/install/TestInstall.java | 123 +++++++++++++++++++ 13 files changed, 168 insertions(+), 100 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/openmeetings/blob/effe8336/openmeetings-install/src/main/java/org/apache/openmeetings/cli/Admin.java ---------------------------------------------------------------------- diff --git a/openmeetings-install/src/main/java/org/apache/openmeetings/cli/Admin.java b/openmeetings-install/src/main/java/org/apache/openmeetings/cli/Admin.java index 3afd80e..86fc5b0 100644 --- a/openmeetings-install/src/main/java/org/apache/openmeetings/cli/Admin.java +++ b/openmeetings-install/src/main/java/org/apache/openmeetings/cli/Admin.java @@ -21,6 +21,7 @@ package org.apache.openmeetings.cli; import static java.nio.charset.StandardCharsets.UTF_8; import static org.apache.openmeetings.db.util.ApplicationHelper.destroyApplication; import static org.apache.openmeetings.db.util.UserHelper.getMinPasswdLength; +import static org.apache.openmeetings.util.OpenmeetingsVariables.DEFAULT_CONTEXT_NAME; import static org.apache.openmeetings.util.OpenmeetingsVariables.USER_LOGIN_MINIMUM_LENGTH; import static org.apache.openmeetings.util.OpenmeetingsVariables.USER_PASSWORD_MINIMUM_LENGTH; import static org.apache.openmeetings.util.OpenmeetingsVariables.setWicketApplicationName; @@ -185,7 +186,7 @@ public class Admin { } private void process(String[] args) { - String ctxName = System.getProperty("context", "openmeetings"); + String ctxName = System.getProperty("context", DEFAULT_CONTEXT_NAME); setWicketApplicationName(ctxName); File home = new File(System.getenv("RED5_HOME")); OmFileHelper.setOmHome(new File(new File(home, "webapps"), ctxName)); http://git-wip-us.apache.org/repos/asf/openmeetings/blob/effe8336/openmeetings-install/src/main/java/org/apache/openmeetings/cli/ConnectionPropertiesPatcher.java ---------------------------------------------------------------------- diff --git a/openmeetings-install/src/main/java/org/apache/openmeetings/cli/ConnectionPropertiesPatcher.java b/openmeetings-install/src/main/java/org/apache/openmeetings/cli/ConnectionPropertiesPatcher.java index b46f607..441b2b1 100644 --- a/openmeetings-install/src/main/java/org/apache/openmeetings/cli/ConnectionPropertiesPatcher.java +++ b/openmeetings-install/src/main/java/org/apache/openmeetings/cli/ConnectionPropertiesPatcher.java @@ -42,6 +42,7 @@ import org.w3c.dom.Document; import org.w3c.dom.Element; public abstract class ConnectionPropertiesPatcher { + public static final String DEFAULT_DB_NAME = "openmeetings"; protected static final String URL_PREFIX = "Url"; protected static final String DRIVER_PREFIX = "DriverClassName"; protected static final String USER_PREFIX = "Username"; http://git-wip-us.apache.org/repos/asf/openmeetings/blob/effe8336/openmeetings-install/src/main/java/org/apache/openmeetings/cli/DerbyPatcher.java ---------------------------------------------------------------------- diff --git a/openmeetings-install/src/main/java/org/apache/openmeetings/cli/DerbyPatcher.java b/openmeetings-install/src/main/java/org/apache/openmeetings/cli/DerbyPatcher.java index 402b598..c79aa1a 100644 --- a/openmeetings-install/src/main/java/org/apache/openmeetings/cli/DerbyPatcher.java +++ b/openmeetings-install/src/main/java/org/apache/openmeetings/cli/DerbyPatcher.java @@ -21,8 +21,9 @@ package org.apache.openmeetings.cli; public class DerbyPatcher extends ConnectionPropertiesPatcher { @Override protected String getUrl(String _url, String host, String _port, String _db) { - String db = (_db == null) ? "openmeetings" : _db; - String suffix = _url.substring(_url.indexOf(';')); - return "jdbc:derby" + ":" + db + suffix; + String db = (_db == null) ? DEFAULT_DB_NAME : _db; + int idx = _url.indexOf(';'); + String suffix = idx > -1 ? _url.substring(idx) : ""; + return String.format("jdbc:derby:%s%s", db, suffix); } } http://git-wip-us.apache.org/repos/asf/openmeetings/blob/effe8336/openmeetings-install/src/main/java/org/apache/openmeetings/cli/MssqlPatcher.java ---------------------------------------------------------------------- diff --git a/openmeetings-install/src/main/java/org/apache/openmeetings/cli/MssqlPatcher.java b/openmeetings-install/src/main/java/org/apache/openmeetings/cli/MssqlPatcher.java index 2bd04a8..77b9194 100644 --- a/openmeetings-install/src/main/java/org/apache/openmeetings/cli/MssqlPatcher.java +++ b/openmeetings-install/src/main/java/org/apache/openmeetings/cli/MssqlPatcher.java @@ -22,7 +22,7 @@ public class MssqlPatcher extends ConnectionPropertiesPatcher { @Override protected String getUrl(String _url, String host, String _port, String _db) { String port = (_port == null) ? "1433" : _port; - String db = (_db == null) ? "openmeetings" : _db; - return "jdbc:sqlserver://" + host + ":" + port + ";databaseName=" + db; + String db = (_db == null) ? DEFAULT_DB_NAME : _db; + return String.format("jdbc:sqlserver://%s:%s;databaseName=%s", host, port, db); } } http://git-wip-us.apache.org/repos/asf/openmeetings/blob/effe8336/openmeetings-install/src/main/java/org/apache/openmeetings/cli/MysqlPatcher.java ---------------------------------------------------------------------- diff --git a/openmeetings-install/src/main/java/org/apache/openmeetings/cli/MysqlPatcher.java b/openmeetings-install/src/main/java/org/apache/openmeetings/cli/MysqlPatcher.java index 2a3c7d4..d0eaef1 100644 --- a/openmeetings-install/src/main/java/org/apache/openmeetings/cli/MysqlPatcher.java +++ b/openmeetings-install/src/main/java/org/apache/openmeetings/cli/MysqlPatcher.java @@ -22,8 +22,8 @@ public class MysqlPatcher extends ConnectionPropertiesPatcher { @Override protected String getUrl(String _url, String host, String _port, String _db) { String port = (_port == null) ? "3306" : _port; - String db = (_db == null) ? "openmeetings" : _db; + String db = (_db == null) ? DEFAULT_DB_NAME : _db; String suffix = _url.substring(_url.indexOf('?')); - return "jdbc:mysql://" + host + ":" + port + "/" + db + suffix; + return String.format("jdbc:mysql://%s:%s/%s%s", host, port, db, suffix); } } http://git-wip-us.apache.org/repos/asf/openmeetings/blob/effe8336/openmeetings-install/src/main/java/org/apache/openmeetings/cli/OraclePatcher.java ---------------------------------------------------------------------- diff --git a/openmeetings-install/src/main/java/org/apache/openmeetings/cli/OraclePatcher.java b/openmeetings-install/src/main/java/org/apache/openmeetings/cli/OraclePatcher.java index 0284efd..edac555 100644 --- a/openmeetings-install/src/main/java/org/apache/openmeetings/cli/OraclePatcher.java +++ b/openmeetings-install/src/main/java/org/apache/openmeetings/cli/OraclePatcher.java @@ -22,7 +22,7 @@ public class OraclePatcher extends ConnectionPropertiesPatcher { @Override protected String getUrl(String _url, String host, String _port, String _db) { String port = (_port == null) ? "1521" : _port; - String db = (_db == null) ? "openmeetings" : _db; + String db = (_db == null) ? DEFAULT_DB_NAME : _db; String delim = ":"; if (db.startsWith("/")) { delim = ""; http://git-wip-us.apache.org/repos/asf/openmeetings/blob/effe8336/openmeetings-install/src/main/java/org/apache/openmeetings/cli/PostgresPatcher.java ---------------------------------------------------------------------- diff --git a/openmeetings-install/src/main/java/org/apache/openmeetings/cli/PostgresPatcher.java b/openmeetings-install/src/main/java/org/apache/openmeetings/cli/PostgresPatcher.java index 53f1140..9b72eb3 100644 --- a/openmeetings-install/src/main/java/org/apache/openmeetings/cli/PostgresPatcher.java +++ b/openmeetings-install/src/main/java/org/apache/openmeetings/cli/PostgresPatcher.java @@ -22,7 +22,7 @@ public class PostgresPatcher extends ConnectionPropertiesPatcher { @Override protected String getUrl(String _url, String host, String _port, String _db) { String port = (_port == null) ? "5432" : _port; - String db = (_db == null) ? "openmeetings" : _db; - return "jdbc:postgresql://" + host + ":" + port + "/" + db; + String db = (_db == null) ? DEFAULT_DB_NAME : _db; + return String.format("jdbc:postgresql://%s:%s/%s", host, port, db); } } http://git-wip-us.apache.org/repos/asf/openmeetings/blob/effe8336/openmeetings-util/src/main/java/org/apache/openmeetings/util/OpenmeetingsVariables.java ---------------------------------------------------------------------- diff --git a/openmeetings-util/src/main/java/org/apache/openmeetings/util/OpenmeetingsVariables.java b/openmeetings-util/src/main/java/org/apache/openmeetings/util/OpenmeetingsVariables.java index e171531..7f72bea 100644 --- a/openmeetings-util/src/main/java/org/apache/openmeetings/util/OpenmeetingsVariables.java +++ b/openmeetings-util/src/main/java/org/apache/openmeetings/util/OpenmeetingsVariables.java @@ -94,6 +94,7 @@ public class OpenmeetingsVariables { public static final int USER_LOGIN_MINIMUM_LENGTH = 4; public static final int USER_PASSWORD_MINIMUM_LENGTH = 8; public static final String DEFAULT_APP_NAME = "OpenMeetings"; + public static final String DEFAULT_CONTEXT_NAME = "openmeetings"; public static final long DEFAULT_MAX_UPLOAD_SIZE = 100 * 1024 * 1024L; // 100MB public static final String FLASH_SECURE = "secure"; public static final String FLASH_NATIVE_SSL = "native"; http://git-wip-us.apache.org/repos/asf/openmeetings/blob/effe8336/openmeetings-web/src/test/java/org/apache/openmeetings/AbstractJUnitDefaults.java ---------------------------------------------------------------------- diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/AbstractJUnitDefaults.java b/openmeetings-web/src/test/java/org/apache/openmeetings/AbstractJUnitDefaults.java index 76adff4..65a58ab 100644 --- a/openmeetings-web/src/test/java/org/apache/openmeetings/AbstractJUnitDefaults.java +++ b/openmeetings-web/src/test/java/org/apache/openmeetings/AbstractJUnitDefaults.java @@ -18,6 +18,7 @@ */ package org.apache.openmeetings; +import static org.apache.openmeetings.util.OpenmeetingsVariables.DEFAULT_CONTEXT_NAME; import static org.apache.openmeetings.util.OpenmeetingsVariables.getConfigKeyCryptClassName; import static org.apache.openmeetings.util.OpenmeetingsVariables.setWicketApplicationName; import static org.junit.Assert.assertNotNull; @@ -43,15 +44,14 @@ import org.springframework.beans.factory.annotation.Autowired; public abstract class AbstractJUnitDefaults extends AbstractSpringTest { private static final Logger log = Red5LoggerFactory.getLogger(AbstractJUnitDefaults.class); + private static final String timeZone = "Europe/Berlin"; public static final int ONE_HOUR = 60 * 60 * 1000; - - protected static final String adminUsername = "admin"; - protected static final String regularUsername = "user"; + public static final String adminUsername = "admin"; + public static final String regularUsername = "user"; protected static final String groupAdminUsername = "groupAdmin"; - protected static final String userpass = "Q!w2e3r4t5"; - private static final String group = "smoketest"; - private static final String timeZone = "Europe/Berlin"; - private static final String email = "[email protected]"; + public static final String userpass = "Q!w2e3r4t5"; + public static final String group = "smoketest"; + public static final String email = "[email protected]"; @Autowired private AppointmentDao appointmentDao; @@ -66,7 +66,7 @@ public abstract class AbstractJUnitDefaults extends AbstractSpringTest { @Before public void setUp() throws Exception { - setWicketApplicationName("openmeetings"); + setWicketApplicationName(DEFAULT_CONTEXT_NAME); cfgDao.getCryptKey(); if (userDao.count() < 1) { makeDefaultScheme(); http://git-wip-us.apache.org/repos/asf/openmeetings/blob/effe8336/openmeetings-web/src/test/java/org/apache/openmeetings/AbstractWicketTester.java ---------------------------------------------------------------------- diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/AbstractWicketTester.java b/openmeetings-web/src/test/java/org/apache/openmeetings/AbstractWicketTester.java index 15c46a3..4e31990 100644 --- a/openmeetings-web/src/test/java/org/apache/openmeetings/AbstractWicketTester.java +++ b/openmeetings-web/src/test/java/org/apache/openmeetings/AbstractWicketTester.java @@ -22,6 +22,7 @@ import static org.apache.openmeetings.db.util.ApplicationHelper.ensureApplicatio import static org.apache.openmeetings.util.OpenmeetingsVariables.getWebAppRootKey; import static org.apache.openmeetings.util.OpenmeetingsVariables.setInitComplete; import static org.apache.wicket.util.string.Strings.escapeMarkup; +import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; @@ -39,6 +40,8 @@ import org.apache.openmeetings.db.entity.user.User.Type; import org.apache.openmeetings.util.OmException; import org.apache.openmeetings.web.app.Application; import org.apache.openmeetings.web.app.WebSession; +import org.apache.wicket.feedback.ExactLevelFeedbackMessageFilter; +import org.apache.wicket.feedback.FeedbackMessage; import org.apache.wicket.protocol.http.WebApplication; import org.apache.wicket.util.lang.Args; import org.apache.wicket.util.tester.WicketTester; @@ -109,6 +112,10 @@ public class AbstractWicketTester extends AbstractJUnitDefaults { } public <T extends Serializable> ButtonAjaxBehavior getButtonBehavior(String path, String name) { + return getButtonBehavior(tester, path, name); + } + + public static <T extends Serializable> ButtonAjaxBehavior getButtonBehavior(WicketTester tester, String path, String name) { Args.notNull(path, "path"); Args.notNull(name, "name"); @SuppressWarnings("unchecked") @@ -119,6 +126,21 @@ public class AbstractWicketTester extends AbstractJUnitDefaults { return bb; } } + fail(String.format("Button '%s' not found for dialog '%s'", name, path)); return null; } + + public void checkErrors(int count) { + checkErrors(tester, count); + } + + public static void checkErrors(WicketTester tester, int count) { + List<FeedbackMessage> errors = tester.getFeedbackMessages(new ExactLevelFeedbackMessageFilter(FeedbackMessage.ERROR)); + if (count != errors.size()) { + for (FeedbackMessage fm : errors) { + log.debug("Error {}", fm); + } + } + assertEquals(String.format("There should be exactly %s errors", count), count, errors.size()); + } } http://git-wip-us.apache.org/repos/asf/openmeetings/blob/effe8336/openmeetings-web/src/test/java/org/apache/openmeetings/web/TestInstall.java ---------------------------------------------------------------------- diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/web/TestInstall.java b/openmeetings-web/src/test/java/org/apache/openmeetings/web/TestInstall.java deleted file mode 100644 index b2e86ec..0000000 --- a/openmeetings-web/src/test/java/org/apache/openmeetings/web/TestInstall.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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.openmeetings.web; - -import static org.apache.openmeetings.AbstractWicketTester.getWicketTester; -import static org.apache.openmeetings.util.OmFileHelper.getOmHome; -import static org.apache.openmeetings.util.OpenmeetingsVariables.setWicketApplicationName; -import static org.junit.Assert.assertNotNull; - -import java.io.IOException; -import java.util.Locale; -import java.util.Random; - -import org.apache.openmeetings.AbstractSpringTest; -import org.apache.openmeetings.web.app.WebSession; -import org.apache.openmeetings.web.pages.install.InstallWizardPage; -import org.apache.wicket.util.tester.WicketTester; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; - -public class TestInstall { - private static final String DERBY_HOME = "derby.system.home"; - protected WicketTester tester; - protected Random rnd = new Random(); - - @Before - public void setUp() throws IOException { - AbstractSpringTest.setOmHome(); - setWicketApplicationName("openmeetings"); - System.setProperty(DERBY_HOME, getOmHome().getCanonicalPath()); - tester = getWicketTester(); - assertNotNull("Web session should not be null", WebSession.get()); - Locale[] locales = Locale.getAvailableLocales(); - tester.getSession().setLocale(locales[rnd.nextInt(locales.length)]); - } - - @After - public void tearDown() { - System.getProperties().remove(DERBY_HOME); - } - - @Test - public void testInstall() { - tester.startPage(InstallWizardPage.class); - tester.assertRenderedPage(InstallWizardPage.class); - } -} http://git-wip-us.apache.org/repos/asf/openmeetings/blob/effe8336/openmeetings-web/src/test/java/org/apache/openmeetings/web/pages/auth/TestLoginUI.java ---------------------------------------------------------------------- diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/web/pages/auth/TestLoginUI.java b/openmeetings-web/src/test/java/org/apache/openmeetings/web/pages/auth/TestLoginUI.java index fd54dac..f7184bf 100644 --- a/openmeetings-web/src/test/java/org/apache/openmeetings/web/pages/auth/TestLoginUI.java +++ b/openmeetings-web/src/test/java/org/apache/openmeetings/web/pages/auth/TestLoginUI.java @@ -20,13 +20,10 @@ package org.apache.openmeetings.web.pages.auth; import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_EMAIL_AT_REGISTER; import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_EMAIL_VERIFICATION; -import static org.apache.openmeetings.util.OpenmeetingsVariables.getWebAppRootKey; -import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; -import static org.red5.logging.Red5LoggerFactory.getLogger; import java.lang.reflect.Method; import java.util.List; @@ -41,19 +38,15 @@ import org.apache.openmeetings.web.pages.ActivatePage; import org.apache.openmeetings.web.pages.MainPage; import org.apache.openmeetings.web.pages.ResetPage; import org.apache.wicket.extensions.markup.html.captcha.CaptchaImageResource; -import org.apache.wicket.feedback.ExactLevelFeedbackMessageFilter; -import org.apache.wicket.feedback.FeedbackMessage; import org.apache.wicket.markup.html.image.Image; import org.apache.wicket.request.mapper.parameter.PageParameters; import org.apache.wicket.request.resource.IResource.Attributes; import org.apache.wicket.util.tester.FormTester; import org.junit.Test; -import org.slf4j.Logger; import com.googlecode.wicket.jquery.ui.widget.dialog.ButtonAjaxBehavior; public class TestLoginUI extends AbstractWicketTester { - private static final Logger log = getLogger(TestLoginUI.class, getWebAppRootKey()); private final static String PATH_REGISTER = "register:form"; private void checkLogin(String login, String pass) { @@ -76,16 +69,6 @@ public class TestLoginUI extends AbstractWicketTester { checkLogin(adminUsername, userpass); } - private void checkErrors(int count) { - List<FeedbackMessage> errors = tester.getFeedbackMessages(new ExactLevelFeedbackMessageFilter(FeedbackMessage.ERROR)); - if (count != errors.size()) { - for (FeedbackMessage fm : errors) { - log.debug("Error {}", fm); - } - } - assertEquals(String.format("There should be exactly %s errors", count), count, errors.size()); - } - @Test public void testEmptyLogin() { tester.startPage(SignInPage.class); http://git-wip-us.apache.org/repos/asf/openmeetings/blob/effe8336/openmeetings-web/src/test/java/org/apache/openmeetings/web/pages/install/TestInstall.java ---------------------------------------------------------------------- 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 new file mode 100644 index 0000000..b405093 --- /dev/null +++ b/openmeetings-web/src/test/java/org/apache/openmeetings/web/pages/install/TestInstall.java @@ -0,0 +1,123 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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.openmeetings.web.pages.install; + +import static com.googlecode.wicket.jquery.ui.widget.dialog.AbstractDialog.SUBMIT; +import static org.apache.commons.io.FileUtils.deleteDirectory; +import static org.apache.openmeetings.AbstractJUnitDefaults.adminUsername; +import static org.apache.openmeetings.AbstractJUnitDefaults.email; +import static org.apache.openmeetings.AbstractJUnitDefaults.group; +import static org.apache.openmeetings.AbstractJUnitDefaults.userpass; +import static org.apache.openmeetings.AbstractWicketTester.checkErrors; +import static org.apache.openmeetings.AbstractWicketTester.getButtonBehavior; +import static org.apache.openmeetings.AbstractWicketTester.getWicketTester; +import static org.apache.openmeetings.util.OpenmeetingsVariables.DEFAULT_APP_NAME; +import static org.apache.openmeetings.util.OpenmeetingsVariables.getWebAppRootKey; +import static org.apache.openmeetings.util.OpenmeetingsVariables.setWicketApplicationName; +import static org.junit.Assert.assertNotNull; +import static org.red5.logging.Red5LoggerFactory.getLogger; + +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +import java.util.Locale; +import java.util.Random; +import java.util.TimeZone; + +import org.apache.openmeetings.AbstractSpringTest; +import org.apache.openmeetings.AbstractWicketTester; +import org.apache.openmeetings.util.crypt.SCryptImplementation; +import org.apache.openmeetings.web.app.WebSession; +import org.apache.wicket.behavior.AbstractAjaxBehavior; +import org.apache.wicket.util.tester.FormTester; +import org.apache.wicket.util.tester.WicketTester; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.slf4j.Logger; + +import com.googlecode.wicket.jquery.ui.widget.dialog.ButtonAjaxBehavior; + +public class TestInstall { + private static final Logger log = getLogger(TestInstall.class, getWebAppRootKey()); + private static final String DERBY_HOME = "derby.system.home"; + private static final String WIZARD_PATH = "wizard"; + private File tempFolder; + protected WicketTester tester; + protected Random rnd = new Random(); + + @Before + public void setUp() throws IOException { + AbstractSpringTest.setOmHome(); + setWicketApplicationName(DEFAULT_APP_NAME); + tempFolder = Files.createTempDirectory("omtempdb").toFile(); + System.setProperty(DERBY_HOME, tempFolder.getCanonicalPath()); + tester = getWicketTester(); + assertNotNull("Web session should not be null", WebSession.get()); + Locale[] locales = Locale.getAvailableLocales(); + tester.getSession().setLocale(locales[rnd.nextInt(locales.length)]); + log.debug("Setup complete"); + } + + @After + public void tearDown() throws IOException { + AbstractWicketTester.destroy(tester); + System.getProperties().remove(DERBY_HOME); + deleteDirectory(tempFolder); + } + + @Test + public void testInstall() { + InstallWizardPage page = tester.startPage(InstallWizardPage.class); + tester.assertRenderedPage(InstallWizardPage.class); + tester.executeBehavior((AbstractAjaxBehavior)page.getBehaviorById(0)); //welcome step + + ButtonAjaxBehavior prev = getButtonBehavior(tester, WIZARD_PATH, "PREV"); //check enabled + log.debug("Prev button enabled ? {}", prev.getButton().isEnabled()); + ButtonAjaxBehavior next = getButtonBehavior(tester, WIZARD_PATH, "NEXT"); + ButtonAjaxBehavior finish = getButtonBehavior(tester, WIZARD_PATH, SUBMIT); + tester.executeBehavior(next); //DB step + FormTester wizardTester = tester.newFormTester("wizard:form"); + wizardTester.select("view:form:dbType", 1); + checkErrors(tester, 0); + tester.executeBehavior(next); //user step + checkErrors(tester, 0); + 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 + checkErrors(tester, 0); + wizardTester.setValue("view:smtpPort", "25"); + wizardTester.select("view:defaultLangId", 0); + tester.executeBehavior(next); //converters step + checkErrors(tester, 0); + wizardTester.setValue("view:docDpi", "150"); + wizardTester.setValue("view:docQuality", "90"); + tester.executeBehavior(next); //crypt step + checkErrors(tester, 0); + wizardTester.setValue("view:cryptClassName", SCryptImplementation.class.getName()); + tester.executeBehavior(next); //install step + checkErrors(tester, 0); + tester.executeBehavior(finish); + checkErrors(tester, 0); + } +}
