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 3013951  [OPENMEETINGS-1850] some tests are fixed
3013951 is described below

commit 3013951a43f78e73df282450d3a31965af51a0f8
Author: Maxim Solodovnik <[email protected]>
AuthorDate: Wed Mar 14 17:15:50 2018 +0700

    [OPENMEETINGS-1850] some tests are fixed
---
 .../apache/openmeetings/db/dao/label/LabelDao.java |  15 +--
 .../openmeetings/db/util/ApplicationHelper.java    |  71 +++++++++-----
 .../installation/ImportInitvalues.java             |   8 ++
 .../src/main/resources/logback.xml                 |  26 +++--
 .../src/main/resources/logback.xsd                 | 109 ---------------------
 openmeetings-service/pom.xml                       |   5 +
 .../mail/template/AbstractTemplatePanel.java       |  14 +--
 .../mail/template/RequestContactTemplate.java      |   4 +-
 .../subject/AppointmentReminderTemplate.java       |   2 +-
 .../subject/CanceledAppointmentTemplate.java       |   2 +-
 .../subject/CreatedAppointmentTemplate.java        |   2 +-
 .../subject/RecordingExpiringTemplate.java         |   6 +-
 .../subject/UpdatedAppointmentTemplate.java        |   2 +-
 .../openmeetings/util/OpenmeetingsVariables.java   |   9 ++
 openmeetings-web/pom.xml                           |   5 -
 .../apache/openmeetings/web/app/Application.java   |   5 +-
 .../main/webapp/WEB-INF/classes/logback-config.xml |   1 -
 .../apache/openmeetings/AbstractJUnitDefaults.java |  70 +++++++------
 .../apache/openmeetings/AbstractWicketTester.java  |  26 +----
 .../apache/openmeetings/db/dao/TestRoomDao.java    |   5 +
 .../webservice/AbstractWebServiceTest.java         |  22 ++++-
 .../webservice/TestCalendarService.java            |  35 ++++---
 .../openmeetings/webservice/TestErrorService.java  |   1 +
 .../webservice/TestRecordingService.java           |   6 +-
 .../openmeetings/webservice/TestUserService.java   |   6 ++
 .../src/test/resources/logback-test.xml            |   1 -
 26 files changed, 196 insertions(+), 262 deletions(-)

diff --git 
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/label/LabelDao.java
 
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/label/LabelDao.java
index a3412b4..e310489 100644
--- 
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/label/LabelDao.java
+++ 
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/label/LabelDao.java
@@ -18,8 +18,9 @@
  */
 package org.apache.openmeetings.db.dao.label;
 
-import static 
org.apache.openmeetings.db.util.ApplicationHelper._ensureApplication;
+import static 
org.apache.openmeetings.db.util.ApplicationHelper.ensureApplication;
 import static org.apache.openmeetings.util.DaoHelper.UNSUPPORTED;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.getAppClass;
 
 import java.io.File;
 import java.io.IOException;
@@ -90,25 +91,17 @@ public class LabelDao implements 
IDataProviderDao<StringLabel>{
        }
 
        public static String getString(String key, long langId) {
-               return _ensureApplication().getOmString(key, langId);
+               return ensureApplication().getOmString(key, langId);
        }
 
        private static File getLangFile() {
                return new File(OmFileHelper.getLanguagesDir(), 
OmFileHelper.LANG_FILE_NAME);
        }
 
-       public static synchronized Class<?> getAppClass() throws 
ClassNotFoundException {
-               if (appClass == null) {
-                       //HACK to resolve package dependencies
-                       appClass = 
Class.forName("org.apache.openmeetings.web.app.Application");
-               }
-               return appClass;
-       }
-
        public static void initLanguageMap() {
                SAXReader reader = new SAXReader();
                try {
-                       getAppClass();
+                       appClass = getAppClass();
                        Document document = reader.read(getLangFile());
                        Element root = document.getRootElement();
                        languages.clear();
diff --git 
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/ApplicationHelper.java
 
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/ApplicationHelper.java
index 854c4f4..0320712 100644
--- 
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/ApplicationHelper.java
+++ 
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/ApplicationHelper.java
@@ -18,7 +18,9 @@
  */
 package org.apache.openmeetings.db.util;
 
+import static 
org.apache.openmeetings.util.OpenmeetingsVariables.DEFAULT_CONTEXT_NAME;
 import static 
org.apache.openmeetings.util.OpenmeetingsVariables.getWicketApplicationName;
+import static 
org.apache.openmeetings.util.OpenmeetingsVariables.isInitComplete;
 import static 
org.springframework.web.context.WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE;
 import static 
org.springframework.web.context.support.WebApplicationContextUtils.getWebApplicationContext;
 
@@ -29,6 +31,7 @@ import org.apache.openmeetings.IApplication;
 import org.apache.openmeetings.IWebSession;
 import org.apache.openmeetings.db.dao.label.LabelDao;
 import org.apache.openmeetings.util.OMContextListener;
+import org.apache.openmeetings.util.OpenmeetingsVariables;
 import org.apache.wicket.Application;
 import org.apache.wicket.RuntimeConfigurationType;
 import org.apache.wicket.ThreadContext;
@@ -52,11 +55,46 @@ public class ApplicationHelper {
 
        private ApplicationHelper() {}
 
-       public static IApplication ensureApplication() {
-               return ensureApplication(-1L);
+       private static WebApplication createApp(WebApplication _app) {
+               WebApplication app = _app;
+               if (app == null) {
+                       // This is the case for non-web-app applications 
(command line admin)
+                       try {
+                               app = 
(WebApplication)OpenmeetingsVariables.getAppClass().newInstance();
+                               ServletContext sc = new MockServletContext(app, 
null);
+                               XmlWebApplicationContext xmlContext = new 
XmlWebApplicationContext();
+                               
xmlContext.setConfigLocation("classpath:applicationContext.xml");
+                               xmlContext.setServletContext(sc);
+                               xmlContext.refresh();
+                               
sc.setAttribute(ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE, xmlContext);
+                               app.setServletContext(sc);
+                       } catch (InstantiationException | 
IllegalAccessException | ClassNotFoundException e) {
+                               log.error("Failed to create Application");
+                       }
+               }
+               return app;
+       }
+
+       private static WebApplication initApp(WebApplication app) {
+               if (app != null) {
+                       if (app.getName() == null && getWicketApplicationName() 
== null) {
+                               app.setName(DEFAULT_CONTEXT_NAME);
+                       }
+                       try {
+                               app.getServletContext();
+                       } catch(IllegalStateException e) {
+                               app.setServletContext(new 
MockServletContext(app, null));
+                       }
+                       
app.setConfigurationType(RuntimeConfigurationType.DEPLOYMENT);
+                       OMContextListener omcl = new OMContextListener();
+                       omcl.contextInitialized(new 
ServletContextEvent(app.getServletContext()));
+                       ThreadContext.setApplication(app);
+                       app.initApplication();
+               }
+               return app;
        }
 
-       public static IApplication _ensureApplication() {
+       public static IApplication ensureApplication() {
                if (Application.exists()) {
                        return (IApplication)Application.get();
                }
@@ -64,29 +102,12 @@ public class ApplicationHelper {
                        if (Application.exists()) {
                                return (IApplication)Application.get();
                        }
-                       WebApplication app = 
(WebApplication)Application.get(getWicketApplicationName());
+                       WebApplication app = 
createApp((WebApplication)Application.get(getWicketApplicationName()));
                        LabelDao.initLanguageMap();
-                       if (app == null) {
-                               try {
-                                       app = 
(WebApplication)LabelDao.getAppClass().newInstance();
-                               } catch (InstantiationException | 
IllegalAccessException | ClassNotFoundException e) {
-                                       log.error("Failed to create 
Application");
-                                       return null;
+                       if (app != null) {
+                               if (!isInitComplete()) {
+                                       initApp(app);
                                }
-                               app.setServletContext(new 
MockServletContext(app, null));
-                               app.setName(getWicketApplicationName());
-                               ServletContext sc = app.getServletContext();
-                               OMContextListener omcl = new 
OMContextListener();
-                               omcl.contextInitialized(new 
ServletContextEvent(sc));
-                               XmlWebApplicationContext xmlContext = new 
XmlWebApplicationContext();
-                               
xmlContext.setConfigLocation("classpath:applicationContext.xml");
-                               xmlContext.setServletContext(sc);
-                               xmlContext.refresh();
-                               
sc.setAttribute(ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE, xmlContext);
-                               
app.setConfigurationType(RuntimeConfigurationType.DEPLOYMENT);
-                               ThreadContext.setApplication(app);
-                               app.initApplication();
-                       } else {
                                ThreadContext.setApplication(app);
                        }
                        return 
(IApplication)Application.get(getWicketApplicationName());
@@ -94,7 +115,7 @@ public class ApplicationHelper {
        }
 
        public static IApplication ensureApplication(Long langId) {
-               IApplication a = _ensureApplication();
+               IApplication a = ensureApplication();
                if (ThreadContext.getRequestCycle() == null) {
                        ServletWebRequest req = new ServletWebRequest(new 
MockHttpServletRequest((Application)a, new 
MockHttpSession(a.getServletContext()), a.getServletContext()), "");
                        RequestCycleContext rctx = new RequestCycleContext(req, 
new MockWebResponse(), a.getRootRequestMapper(), 
a.getExceptionMapperProvider().get());
diff --git 
a/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java
 
b/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java
index be0d15b..de8a481 100644
--- 
a/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java
+++ 
b/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java
@@ -435,6 +435,14 @@ public class ImportInitvalues {
                }
        }
 
+       public User createSystemUser(User u, String group, String login, String 
pass, boolean groupAdmin) throws Exception {
+               GroupUser gu = new GroupUser(groupDao.get(group), u);
+               gu.setModerator(groupAdmin);
+               u.getGroupUsers().add(gu);
+               u.setLogin(login);
+               return userDao.update(u, pass, null);
+       }
+
        public void loadInitialOAuthServers() {
                // Yandex
                OAuthServer yaServer = new OAuthServer();
diff --git a/openmeetings-screenshare/src/main/resources/logback.xml 
b/openmeetings-screenshare/src/main/resources/logback.xml
index 8b6c297..1325dc6 100644
--- a/openmeetings-screenshare/src/main/resources/logback.xml
+++ b/openmeetings-screenshare/src/main/resources/logback.xml
@@ -18,27 +18,25 @@
   under the License.
 
 -->
-
-<configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
-       xsi:noNamespaceSchemaLocation="logback.xsd">
+<configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>
        <contextName>${current_openmeetings_context_name}</contextName>
 
        <jmxConfigurator contextName="${current_openmeetings_context_name}" />
 
        <appender name="FILE" class="ch.qos.logback.core.FileAppender">
-               <File>screensharing.log</File>
-               <Append>false</Append>
-               <Encoding>UTF-8</Encoding>
-               <BufferedIO>false</BufferedIO>
-               <ImmediateFlush>true</ImmediateFlush>
-               <layout class="ch.qos.logback.classic.PatternLayout">
-                       <pattern>%5p %d{MM-dd HH:mm:ss.SSS } %L %c{10} [%t] - 
%m%n</pattern>
-               </layout>
+               <file>screensharing.log</file>
+               <append>false</append>
+               <immediateFlush>true</immediateFlush>
+               <encoder>
+                       <charset>UTF-8</charset>
+                       <pattern>%5p %d{MM-dd HH:mm:ss.SSS } %c{15}:%L 
[%.15thread] - %m%n</pattern>
+               </encoder>
        </appender>
        <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
-               <layout class="ch.qos.logback.classic.PatternLayout">
-                       <pattern>%5p %d{MM-dd HH:mm:ss.SSS } %L %c{10} [%t] - 
%m%n</pattern>
-               </layout>
+               <encoder>
+                       <charset>UTF-8</charset>
+                       <pattern>%highlight(%-5level) %d{MM-dd HH:mm:ss.SSS } 
%cyan(%c{15}:%L [%.15thread]) - %m%n</pattern>
+               </encoder>
        </appender>
        <logger name="org.apache.openmeetings" level="DEBUG"/>
        <logger name="org.red5.server.net.rtmp.codec.RTMPProtocolDecoder" 
level="OFF"/>
diff --git a/openmeetings-screenshare/src/main/resources/logback.xsd 
b/openmeetings-screenshare/src/main/resources/logback.xsd
deleted file mode 100644
index cc5ad1c..0000000
--- a/openmeetings-screenshare/src/main/resources/logback.xsd
+++ /dev/null
@@ -1,109 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  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.
-  
--->
-<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"; 
elementFormDefault="qualified">
-  <xs:element name="configuration">
-    <xs:complexType>
-      <xs:sequence>
-        <xs:element ref="contextName"/>
-        <xs:element ref="jmxConfigurator"/>
-        <xs:element maxOccurs="unbounded" ref="appender"/>
-        <xs:element maxOccurs="unbounded" ref="logger"/>
-        <xs:element ref="root"/>
-      </xs:sequence>
-    </xs:complexType>
-  </xs:element>
-  <xs:element name="contextName" type="xs:string"/>
-  <xs:element name="jmxConfigurator">
-    <xs:complexType>
-      <xs:attribute name="contextName" use="required"/>
-    </xs:complexType>
-  </xs:element>
-  <xs:element name="appender">
-    <xs:complexType>
-      <xs:sequence>
-        <xs:sequence minOccurs="0">
-          <xs:element ref="File"/>
-          <xs:element ref="Append"/>
-          <xs:element ref="Encoding"/>
-          <xs:element ref="BufferedIO"/>
-          <xs:element ref="ImmediateFlush"/>
-        </xs:sequence>
-        <xs:element ref="layout"/>
-      </xs:sequence>
-      <xs:attribute name="class" use="required"/>
-      <xs:attribute name="name" use="required" type="xs:NCName"/>
-    </xs:complexType>
-  </xs:element>
-  <xs:element name="File" type="xs:string"/>
-  <xs:element name="Append" type="xs:boolean"/>
-  <xs:element name="Encoding" type="xs:NCName"/>
-  <xs:element name="BufferedIO" type="xs:boolean"/>
-  <xs:element name="ImmediateFlush" type="xs:boolean"/>
-  <xs:element name="layout">
-    <xs:complexType>
-      <xs:choice>
-        <xs:element ref="Pattern"/>
-        <xs:element ref="pattern"/>
-      </xs:choice>
-      <xs:attribute name="class" use="required"/>
-    </xs:complexType>
-  </xs:element>
-  <xs:element name="Pattern" type="xs:string"/>
-  <xs:element name="pattern" type="xs:string"/>
-  <xs:element name="logger">
-    <xs:complexType>
-      <xs:sequence>
-        <xs:element maxOccurs="unbounded" minOccurs="0" ref="appender-ref"/>
-        <xs:element maxOccurs="1" minOccurs="0" ref="level"/>
-      </xs:sequence>
-      <xs:attribute name="name" use="required" type="xs:NCName"/>
-      <xs:attribute name="level" type="LoggerLevels" use="optional"/>
-    </xs:complexType>
-  </xs:element>
-  <xs:element name="root">
-    <xs:complexType>
-      <xs:sequence>
-        <xs:element minOccurs="0" maxOccurs="unbounded" ref="appender-ref"/>
-      </xs:sequence>
-      <xs:attribute name="level" type="LoggerLevels" use="optional"/>
-    </xs:complexType>
-  </xs:element>
-  <xs:element name="appender-ref">
-    <xs:complexType>
-      <xs:attribute name="ref" use="required" type="xs:NCName"/>
-    </xs:complexType>
-  </xs:element>
-  <xs:complexType name="level">
-    <xs:sequence>
-      <xs:element ref="level"/>
-    </xs:sequence>
-  </xs:complexType>
-  <xs:element name="level">
-    <xs:complexType>
-      <xs:attribute name="value" use="required" type="xs:NCName"/>
-    </xs:complexType>
-  </xs:element>
-  <xs:simpleType name="LoggerLevels">
-    <xs:restriction base="xs:string">
-      <xs:pattern 
value="off|OFF|all|ALL|inherited|INHERITED|null|NULL|error|ERROR|warn|WARN|info|INFO|debug|DEBUG|trace|TRACE"/>
-    </xs:restriction>
-  </xs:simpleType>
-</xs:schema>
diff --git a/openmeetings-service/pom.xml b/openmeetings-service/pom.xml
index 75ef9e4..fc3389f 100644
--- a/openmeetings-service/pom.xml
+++ b/openmeetings-service/pom.xml
@@ -43,6 +43,11 @@
                        <version>${wicket.version}</version>
                </dependency>
                <dependency>
+                       <groupId>org.apache.wicket</groupId>
+                       <artifactId>wicket-spring</artifactId>
+                       <version>${wicket.version}</version>
+               </dependency>
+               <dependency>
                        <groupId>org.springframework</groupId>
                        <artifactId>spring-core</artifactId>
                </dependency>
diff --git 
a/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/AbstractTemplatePanel.java
 
b/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/AbstractTemplatePanel.java
index bfbec3d..b556835 100644
--- 
a/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/AbstractTemplatePanel.java
+++ 
b/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/AbstractTemplatePanel.java
@@ -18,11 +18,11 @@
  */
 package org.apache.openmeetings.service.mail.template;
 
-import static 
org.apache.openmeetings.db.util.ApplicationHelper.ensureApplication;
 import static 
org.apache.openmeetings.util.OpenmeetingsVariables.getDefaultLang;
 
 import java.util.Locale;
 
+import org.apache.openmeetings.IApplication;
 import org.apache.openmeetings.IWebSession;
 import org.apache.openmeetings.db.dao.label.LabelDao;
 import org.apache.openmeetings.db.util.FormatHelper;
@@ -30,22 +30,22 @@ import org.apache.wicket.AttributeModifier;
 import org.apache.wicket.markup.html.TransparentWebMarkupContainer;
 import org.apache.wicket.markup.html.panel.Panel;
 import org.apache.wicket.protocol.http.WebSession;
+import org.apache.wicket.spring.injection.annot.SpringBean;
 
 public abstract class AbstractTemplatePanel extends Panel {
        private static final long serialVersionUID = 1L;
        public static final String COMP_ID = "template";
        protected final Locale locale;
 
+       @SpringBean
+       protected IApplication app;
+
        protected AbstractTemplatePanel(Locale locale) {
                super(COMP_ID);
                this.locale = locale == null ? getDefault() : locale;
                add(new 
TransparentWebMarkupContainer("container").add(AttributeModifier.append("dir", 
FormatHelper.isRtlLanguage(this.locale.toLanguageTag()) ? "rtl" : "ltr")));
        }
 
-       public static <T> T getBean(Class<T> clazz) {
-               return ensureApplication().getOmBean(clazz);
-       }
-
        public static IWebSession getOmSession() {
                return (IWebSession)WebSession.get();
        }
@@ -54,7 +54,7 @@ public abstract class AbstractTemplatePanel extends Panel {
                return LabelDao.getLocale(getDefaultLang());
        }
 
-       public static String getString(String id, Locale locale, String... 
params) {
-               return ensureApplication().getOmString(id, locale, params);
+       public String getString(String id, Locale locale, String... params) {
+               return app.getOmString(id, locale, params);
        }
 }
diff --git 
a/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/RequestContactTemplate.java
 
b/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/RequestContactTemplate.java
index 9d4ddd5..1781f53 100644
--- 
a/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/RequestContactTemplate.java
+++ 
b/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/RequestContactTemplate.java
@@ -18,8 +18,6 @@
  */
 package org.apache.openmeetings.service.mail.template;
 
-import static 
org.apache.openmeetings.db.util.ApplicationHelper.ensureApplication;
-
 import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.db.util.LocaleHelper;
 import org.apache.wicket.core.util.string.ComponentRenderer;
@@ -38,7 +36,7 @@ public class RequestContactTemplate extends 
AbstractTemplatePanel {
                add(new Label("lastName", user.getLastname()));
                add(new Label("likeToAdd", getString("1193", locale)));
                add(new Label("check", getString("1194", locale)));
-               add(new ExternalLink("link", 
ensureApplication().getOmContactsLink()).add(new Label("contactList", 
getString("1196", locale))));
+               add(new ExternalLink("link", app.getOmContactsLink()).add(new 
Label("contactList", getString("1196", locale))));
        }
 
        public static String getEmail(User userToAdd, User user) {
diff --git 
a/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/subject/AppointmentReminderTemplate.java
 
b/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/subject/AppointmentReminderTemplate.java
index 744cd1c..08149d8 100644
--- 
a/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/subject/AppointmentReminderTemplate.java
+++ 
b/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/subject/AppointmentReminderTemplate.java
@@ -48,6 +48,6 @@ public class AppointmentReminderTemplate extends 
AppointmentTemplate {
 
        @Override
        String getPrefix() {
-               return ensureApplication().getOmString("1158", locale);
+               return app.getOmString("1158", locale);
        }
 }
diff --git 
a/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/subject/CanceledAppointmentTemplate.java
 
b/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/subject/CanceledAppointmentTemplate.java
index fff5902..ebf807b 100644
--- 
a/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/subject/CanceledAppointmentTemplate.java
+++ 
b/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/subject/CanceledAppointmentTemplate.java
@@ -48,6 +48,6 @@ public class CanceledAppointmentTemplate extends 
InvitedAppointmentTemplate {
 
        @Override
        String getPrefix() {
-               return ensureApplication().getOmString("1157", locale);
+               return app.getOmString("1157", locale);
        }
 }
diff --git 
a/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/subject/CreatedAppointmentTemplate.java
 
b/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/subject/CreatedAppointmentTemplate.java
index 99a0e8c..161d10f 100644
--- 
a/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/subject/CreatedAppointmentTemplate.java
+++ 
b/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/subject/CreatedAppointmentTemplate.java
@@ -48,6 +48,6 @@ public class CreatedAppointmentTemplate extends 
InvitedAppointmentTemplate {
 
        @Override
        String getPrefix() {
-               return ensureApplication().getOmString("1151", locale);
+               return app.getOmString("1151", locale);
        }
 }
diff --git 
a/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/subject/RecordingExpiringTemplate.java
 
b/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/subject/RecordingExpiringTemplate.java
index ce756dc..db696b7 100644
--- 
a/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/subject/RecordingExpiringTemplate.java
+++ 
b/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/subject/RecordingExpiringTemplate.java
@@ -29,6 +29,7 @@ import org.apache.openmeetings.db.util.LocaleHelper;
 import org.apache.openmeetings.service.mail.template.OmTextLabel;
 import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.markup.html.panel.Fragment;
+import org.apache.wicket.spring.injection.annot.SpringBean;
 
 public class RecordingExpiringTemplate extends SubjectEmailTemplate {
        private static final long serialVersionUID = 1L;
@@ -36,6 +37,9 @@ public class RecordingExpiringTemplate extends 
SubjectEmailTemplate {
        private long remainingDays;
        private final User u;
 
+       @SpringBean
+       protected RoomDao roomDao;
+
        private RecordingExpiringTemplate(User u, final Recording rec, long 
remainingDays) {
                super(LocaleHelper.getLocale(u));
                this.u = u;
@@ -60,7 +64,7 @@ public class RecordingExpiringTemplate extends 
SubjectEmailTemplate {
        @Override
        Fragment getSubjectFragment() {
                Fragment f = new Fragment(COMP_ID, "subject", this);
-               Room room = getBean(RoomDao.class).get(rec.getRoomId());
+               Room room = roomDao.get(rec.getRoomId());
                f.add(new OmTextLabel("prefix", 
getString("template.recording.expiring.subj.prefix", locale))
                                , new OmTextLabel("room", room == null ? null : 
getString("template.recording.expiring.subj.room", locale, 
room.getName())).setVisible(room != null)
                                );
diff --git 
a/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/subject/UpdatedAppointmentTemplate.java
 
b/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/subject/UpdatedAppointmentTemplate.java
index c1dcec1..cb9b315 100644
--- 
a/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/subject/UpdatedAppointmentTemplate.java
+++ 
b/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/subject/UpdatedAppointmentTemplate.java
@@ -48,6 +48,6 @@ public class UpdatedAppointmentTemplate extends 
InvitedAppointmentTemplate {
 
        @Override
        String getPrefix() {
-               return ensureApplication().getOmString("1155", locale);
+               return app.getOmString("1155", locale);
        }
 }
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 5e58994..fb59d97 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
@@ -132,6 +132,7 @@ public class OpenmeetingsVariables {
        private static String audioBitrate = "32k";
        private static String defaultTimezone = "Europe/Berlin";
        private static String restAllowOrigin = null;
+       private static Class<?> appClass = null;
 
        private OpenmeetingsVariables() {}
 
@@ -258,4 +259,12 @@ public class OpenmeetingsVariables {
        public static void setRestAllowOrigin(String allowOrigin) {
                restAllowOrigin = allowOrigin;
        }
+
+       public static synchronized Class<?> getAppClass() throws 
ClassNotFoundException {
+               if (appClass == null) {
+                       //HACK to resolve package dependencies
+                       appClass = 
Class.forName("org.apache.openmeetings.web.app.Application");
+               }
+               return appClass;
+       }
 }
diff --git a/openmeetings-web/pom.xml b/openmeetings-web/pom.xml
index 7ce4b2c..38b9d62 100644
--- a/openmeetings-web/pom.xml
+++ b/openmeetings-web/pom.xml
@@ -567,11 +567,6 @@
                        <version>${wicket.version}</version>
                </dependency>
                <dependency>
-                       <groupId>org.apache.wicket</groupId>
-                       <artifactId>wicket-spring</artifactId>
-                       <version>${wicket.version}</version>
-               </dependency>
-               <dependency>
                        <groupId>com.googlecode.wicket-jquery-ui</groupId>
                        <artifactId>wicket-jquery-ui-core</artifactId>
                        <version>${wicketju.version}</version>
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
index cb917c2..ad822a0 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
@@ -277,7 +277,7 @@ public class Application extends 
AuthenticatedWebApplication implements IApplica
                mountResource("/group/${id}", new GroupLogoResourceReference());
                getComponentInstantiationListeners().add(new 
SpringComponentInjector(this, ctx, true));
 
-               log.debug("InitComponent::PostConstruct");
+               log.debug("Application::init");
                try {
                        if (OmFileHelper.getOmHome() == null) {
                                OmFileHelper.setOmHome(new 
File(getServletContext().getRealPath("/")));
@@ -289,7 +289,6 @@ public class Application extends 
AuthenticatedWebApplication implements IApplica
                        // Init all global config properties
                        cfgDao.reinit();
 
-                       setInitComplete(true);
                        // Init properties
                        setXFrameOptions(cfgDao.getString(CONFIG_HEADER_XFRAME, 
HEADER_XFRAME_SAMEORIGIN));
                        
setContentSecurityPolicy(cfgDao.getString(CONFIG_HEADER_CSP, HEADER_CSP_SELF));
@@ -297,6 +296,8 @@ public class Application extends 
AuthenticatedWebApplication implements IApplica
                        setExtProcessTtl(cfgDao.getInt(CONFIG_EXT_PROCESS_TTL, 
getExtProcessTtl()));
                        Version.logOMStarted();
                        recordingDao.resetProcessingStatus(); //we are starting 
so all processing recordings are now errors
+
+                       setInitComplete(true);
                } catch (Exception err) {
                        log.error("[appStart]", err);
                }
diff --git 
a/openmeetings-web/src/main/webapp/WEB-INF/classes/logback-config.xml 
b/openmeetings-web/src/main/webapp/WEB-INF/classes/logback-config.xml
index 17a0a42..d18ff74 100644
--- a/openmeetings-web/src/main/webapp/WEB-INF/classes/logback-config.xml
+++ b/openmeetings-web/src/main/webapp/WEB-INF/classes/logback-config.xml
@@ -25,7 +25,6 @@
 
        <appender name="FILE" 
class="ch.qos.logback.core.rolling.RollingFileAppender">
                
<file>${current_openmeetings_log_dir}/${current_openmeetings_context_name}.log</file>
-               <append>false</append>
                <immediateFlush>true</immediateFlush>
                <encoder>
                        <charset>UTF-8</charset>
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 8906829..2a6654e 100644
--- 
a/openmeetings-web/src/test/java/org/apache/openmeetings/AbstractJUnitDefaults.java
+++ 
b/openmeetings-web/src/test/java/org/apache/openmeetings/AbstractJUnitDefaults.java
@@ -18,8 +18,10 @@
  */
 package org.apache.openmeetings;
 
+import static 
org.apache.openmeetings.db.util.ApplicationHelper.ensureApplication;
 import static 
org.apache.openmeetings.util.OpenmeetingsVariables.DEFAULT_CONTEXT_NAME;
 import static 
org.apache.openmeetings.util.OpenmeetingsVariables.getCryptClassName;
+import static 
org.apache.openmeetings.util.OpenmeetingsVariables.getWicketApplicationName;
 import static 
org.apache.openmeetings.util.OpenmeetingsVariables.setWicketApplicationName;
 import static org.junit.Assert.assertNotNull;
 
@@ -34,10 +36,10 @@ import org.apache.openmeetings.db.dao.user.UserDao;
 import org.apache.openmeetings.db.entity.calendar.Appointment;
 import org.apache.openmeetings.db.entity.room.Room;
 import org.apache.openmeetings.db.entity.user.Address;
-import org.apache.openmeetings.db.entity.user.GroupUser;
 import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.installation.ImportInitvalues;
 import org.apache.openmeetings.installation.InstallationConfig;
+import org.apache.openmeetings.web.app.Application;
 import org.junit.Before;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -65,22 +67,24 @@ public abstract class AbstractJUnitDefaults extends 
AbstractSpringTest {
        private ImportInitvalues importInitvalues;
        @Autowired
        protected ConfigurationDao cfgDao;
+       @Autowired
+       protected Application app;
 
        @Before
        public void setUp() throws Exception {
-               setWicketApplicationName(DEFAULT_CONTEXT_NAME);
-               try {
-                       cfgDao.reinit();
-               } catch (Exception e) {
-                       log.warn("DB seems not to be inited", e);
+               if (app.getName() == null) {
+                       app.setName(DEFAULT_CONTEXT_NAME);
                }
-               if (userDao.count() < 1) {
-                       makeDefaultScheme();
-                       // regular user
-                       createSystemUser(regularUsername, false);
+               if (getWicketApplicationName() == null) {
+                       setWicketApplicationName(app.getName());
+               }
+               ensureApplication();
+               ensureSchema(userDao, importInitvalues);
+       }
 
-                       // group admin
-                       createSystemUser(groupAdminUsername, true);
+       public static void ensureSchema(UserDao userDao, ImportInitvalues 
importInitvalues) throws Exception {
+               if (userDao.count() < 1) {
+                       makeDefaultScheme(importInitvalues);
                        log.info("Default scheme created successfully");
                } else {
                        log.info("Default scheme already created");
@@ -105,9 +109,7 @@ public abstract class AbstractJUnitDefaults extends 
AbstractSpringTest {
                return getAppointment(owner, null, start, end);
        }
 
-       public Appointment getAppointment(User owner, Room r, Date start, Date 
end) {
-               assertNotNull("Can't access to appointment dao implimentation", 
appointmentDao);
-
+       public static Appointment getAppointment(User owner, Room r, Date 
start, Date end) {
                // add new appointment
                Appointment ap = new Appointment();
 
@@ -141,13 +143,18 @@ public abstract class AbstractJUnitDefaults extends 
AbstractSpringTest {
                return ap;
        }
 
-       public Appointment createAppointment(Appointment ap) {
+       public static Appointment createAppointment(AppointmentDao 
appointmentDao, Appointment ap) {
+               assertNotNull("Can't access to appointment dao implimentation", 
appointmentDao);
                // add new appointment
                ap = appointmentDao.update(ap, null, false);
-               assertNotNull("Cann't add appointment", ap.getId());
+               assertNotNull("Can't add appointment", ap.getId());
                return ap;
        }
 
+       public Appointment createAppointment(Appointment ap) {
+               return createAppointment(appointmentDao, ap);
+       }
+
        public User getUser() throws Exception {
                return getUser(UUID.randomUUID().toString());
        }
@@ -160,11 +167,11 @@ public abstract class AbstractJUnitDefaults extends 
AbstractSpringTest {
                return String.format("email%s@local", uid);
        }
 
-       protected String createPass() {
+       public static String createPass() {
                return "pass1_!@#$%_A";
        }
 
-       public User getUser(String uuid) throws Exception {
+       public static User getUser(String uuid) throws Exception {
                User u = new User();
                // add user
                u.setFirstname("firstname" + uuid);
@@ -174,21 +181,11 @@ public abstract class AbstractJUnitDefaults extends 
AbstractSpringTest {
                u.getAddress().setEmail(getEmail(uuid));
                u.setRights(UserDao.getDefaultRights());
                u.setTimeZoneId("Asia/Bangkok");
-               u.updatePassword(cfgDao, createPass());
+               u.updatePassword(null, createPass()); // NO SIP
                u.setLanguageId(1L);
                return u;
        }
 
-       public User createSystemUser(String login, boolean groupAdmin) throws 
Exception {
-               User u = getUser();
-               GroupUser gu = new GroupUser(groupDao.get(group), u);
-               gu.setModerator(groupAdmin);
-               u.getGroupUsers().add(gu);
-               u.setLogin(login);
-               u.updatePassword(cfgDao, userpass);
-               return createUser(u);
-       }
-
        public User createUser() throws Exception {
                return createUser(UUID.randomUUID().toString());
        }
@@ -197,13 +194,17 @@ public abstract class AbstractJUnitDefaults extends 
AbstractSpringTest {
                return createUser(getUser(uuid));
        }
 
-       public User createUser(User u) {
+       public static User createUser(UserDao userDao, User u) {
                u = userDao.update(u, null);
                assertNotNull("Can't add user", u);
                return u;
        }
 
-       private void makeDefaultScheme() throws Exception {
+       public User createUser(User u) {
+               return createUser(userDao, u);
+       }
+
+       private static void makeDefaultScheme(ImportInitvalues 
importInitvalues) throws Exception {
                InstallationConfig cfg = new InstallationConfig();
                cfg.setUsername(adminUsername);
                cfg.setPassword(userpass);
@@ -211,6 +212,11 @@ public abstract class AbstractJUnitDefaults extends 
AbstractSpringTest {
                cfg.setGroup(group);
                cfg.setTimeZone(timeZone);
                importInitvalues.loadAll(cfg, false);
+               // regular user
+               
importInitvalues.createSystemUser(getUser(UUID.randomUUID().toString()), group, 
regularUsername, userpass, false);
+
+               // group admin
+               
importInitvalues.createSystemUser(getUser(UUID.randomUUID().toString()), group, 
groupAdminUsername, userpass, true);
        }
 
        public User getContact(String uuid, Long ownerId) {
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 325bcbd..77be8b4 100644
--- 
a/openmeetings-web/src/test/java/org/apache/openmeetings/AbstractWicketTester.java
+++ 
b/openmeetings-web/src/test/java/org/apache/openmeetings/AbstractWicketTester.java
@@ -19,8 +19,6 @@
 package org.apache.openmeetings;
 
 import static 
org.apache.openmeetings.db.util.ApplicationHelper.ensureApplication;
-import static 
org.apache.openmeetings.util.OpenmeetingsVariables.getWicketApplicationName;
-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;
@@ -32,28 +30,21 @@ import java.util.List;
 import java.util.Locale;
 import java.util.function.Consumer;
 
-import javax.servlet.ServletContextEvent;
-
 import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.db.entity.user.User.Type;
-import org.apache.openmeetings.util.OMContextListener;
 import org.apache.openmeetings.util.OmException;
 import org.apache.openmeetings.web.app.Application;
 import org.apache.openmeetings.web.app.WebSession;
 import org.apache.openmeetings.web.pages.MainPage;
-import org.apache.wicket.RuntimeConfigurationType;
-import org.apache.wicket.ThreadContext;
 import org.apache.wicket.behavior.AbstractAjaxBehavior;
 import org.apache.wicket.feedback.ExactLevelFeedbackMessageFilter;
 import org.apache.wicket.feedback.FeedbackMessage;
-import org.apache.wicket.protocol.http.mock.MockServletContext;
 import org.apache.wicket.protocol.ws.util.tester.WebSocketTester;
 import org.apache.wicket.util.lang.Args;
 import org.apache.wicket.util.tester.WicketTester;
 import org.junit.Assert;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
 
 import com.googlecode.wicket.jquery.ui.widget.dialog.AbstractDialog;
 import com.googlecode.wicket.jquery.ui.widget.dialog.ButtonAjaxBehavior;
@@ -64,29 +55,14 @@ public class AbstractWicketTester extends 
AbstractJUnitDefaults {
        public static final String PATH_MENU = 
"main-container:main:topControls:menu:menu";
        protected WicketTester tester;
 
-       @Autowired
-       private Application app;
-
        public static WicketTester getWicketTester(Application app) {
                return getWicketTester(app, -1);
        }
 
        public static WicketTester getWicketTester(Application app, long 
langId) {
-               boolean testerNeedInit = app.getName() != null;
-               if (!testerNeedInit) {
-                       //FIXME TODO re-use this for templates
-                       app.setName(getWicketApplicationName());
-                       app.setServletContext(new MockServletContext(app, 
null));
-                       
app.setConfigurationType(RuntimeConfigurationType.DEPLOYMENT);
-                       OMContextListener omcl = new OMContextListener();
-                       omcl.contextInitialized(new 
ServletContextEvent(app.getServletContext()));
-                       ThreadContext.setApplication(app);
-                       app.initApplication();
-               }
                ensureApplication(langId); // to ensure WebSession is attached
 
-               WicketTester tester = new WicketTester(app, 
app.getServletContext(), testerNeedInit);
-               setInitComplete(true);
+               WicketTester tester = new WicketTester(app, 
app.getServletContext(), false);
                return tester;
        }
 
diff --git 
a/openmeetings-web/src/test/java/org/apache/openmeetings/db/dao/TestRoomDao.java
 
b/openmeetings-web/src/test/java/org/apache/openmeetings/db/dao/TestRoomDao.java
index 6a81ad8..92ab136 100644
--- 
a/openmeetings-web/src/test/java/org/apache/openmeetings/db/dao/TestRoomDao.java
+++ 
b/openmeetings-web/src/test/java/org/apache/openmeetings/db/dao/TestRoomDao.java
@@ -19,6 +19,7 @@
 package org.apache.openmeetings.db.dao;
 
 import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
 
 import org.apache.openmeetings.AbstractJUnitDefaults;
@@ -40,14 +41,18 @@ public class TestRoomDao extends AbstractJUnitDefaults {
        @Test
        public void testMicStatusHidden() throws Exception {
                Room r = roomDao.get(1);
+               assertNotNull("Room must exist", r);
                assertTrue("Default interview room should have mic status 
hidden", r.isHidden(RoomElement.MicrophoneStatus));
                r = roomDao.get(5);
+               assertNotNull("Room must exist", r);
                assertTrue("Default presentation room should have mic status 
hidden", r.isHidden(RoomElement.MicrophoneStatus));
                r = roomDao.get(6);
+               assertNotNull("Room must exist", r);
                assertFalse("Default Mic room should have mic status visible", 
r.isHidden(RoomElement.MicrophoneStatus));
 
                User u = createUser(); //creating new User here
                r = roomDao.getUserRoom(u.getId(), Room.Type.presentation, 
"bla");
+               assertNotNull("Room must exist", r);
                boolean hidden = r.isHidden(RoomElement.MicrophoneStatus);
                if (!hidden && log.isDebugEnabled()) {
                        log.debug("Invalid personal room found -> User: {}, 
Room: {} ... deleted ? {}", u, r, r.isDeleted());
diff --git 
a/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/AbstractWebServiceTest.java
 
b/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/AbstractWebServiceTest.java
index 562d132..367668e 100644
--- 
a/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/AbstractWebServiceTest.java
+++ 
b/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/AbstractWebServiceTest.java
@@ -19,6 +19,11 @@
 package org.apache.openmeetings.webservice;
 
 import static javax.ws.rs.core.MediaType.APPLICATION_FORM_URLENCODED;
+import static org.apache.openmeetings.AbstractJUnitDefaults.adminUsername;
+import static org.apache.openmeetings.AbstractJUnitDefaults.createPass;
+import static org.apache.openmeetings.AbstractJUnitDefaults.ensureSchema;
+import static org.apache.openmeetings.AbstractJUnitDefaults.userpass;
+import static 
org.apache.openmeetings.db.util.ApplicationHelper.ensureApplication;
 import static org.apache.openmeetings.util.OmFileHelper.getOmHome;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
@@ -43,7 +48,8 @@ import org.apache.catalina.startup.Tomcat;
 import org.apache.cxf.jaxrs.client.WebClient;
 import org.apache.cxf.jaxrs.ext.multipart.Attachment;
 import org.apache.cxf.transports.http.configuration.HTTPClientPolicy;
-import org.apache.openmeetings.AbstractJUnitDefaults;
+import org.apache.openmeetings.AbstractSpringTest;
+import org.apache.openmeetings.db.dao.user.UserDao;
 import org.apache.openmeetings.db.dto.basic.ServiceResult;
 import org.apache.openmeetings.db.dto.basic.ServiceResult.Type;
 import org.apache.openmeetings.db.dto.file.FileItemDTO;
@@ -51,12 +57,14 @@ import org.apache.openmeetings.db.dto.room.RoomDTO;
 import org.apache.openmeetings.db.dto.user.UserDTO;
 import org.apache.openmeetings.db.entity.file.BaseFileItem;
 import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.installation.ImportInitvalues;
 import org.apache.openmeetings.webservice.util.AppointmentMessageBodyReader;
 import org.junit.AfterClass;
 import org.junit.Assert;
+import org.junit.Before;
 import org.junit.BeforeClass;
 
-public class AbstractWebServiceTest extends AbstractJUnitDefaults {
+public class AbstractWebServiceTest {
        private static Tomcat tomcat;
        private static final String HOST = "localhost";
        private static final String CONTEXT = "/openmeetings";
@@ -67,6 +75,10 @@ public class AbstractWebServiceTest extends 
AbstractJUnitDefaults {
        public static final String UNIT_TEST_EXT_TYPE = "om_unit_tests";
        public static final long TIMEOUT = 5 * 60 * 1000;
 
+       protected static <T> T getBean(Class<T> clazz) {
+               return ensureApplication()._getOmBean(clazz);
+       }
+
        public static WebClient getClient(String url) {
                WebClient c = WebClient.create(url, Arrays.asList(new 
AppointmentMessageBodyReader()))
                                
.accept("application/json").type("application/json");
@@ -94,6 +106,7 @@ public class AbstractWebServiceTest extends 
AbstractJUnitDefaults {
 
        @BeforeClass
        public static void initialize() throws Exception {
+               AbstractSpringTest.init();
                tomcat = new Tomcat();
                Connector connector = new Connector("HTTP/1.1");
                connector.setAttribute("address", 
InetAddress.getByName(HOST).getHostAddress());
@@ -111,6 +124,11 @@ public class AbstractWebServiceTest extends 
AbstractJUnitDefaults {
                port = tomcat.getConnector().getLocalPort();
        }
 
+       @Before
+       public void setUp() throws Exception {
+               ensureSchema(getBean(UserDao.class), 
getBean(ImportInitvalues.class));
+       }
+
        @AfterClass
        public static void destroy() throws Exception {
                if (tomcat.getServer() != null && tomcat.getServer().getState() 
!= LifecycleState.DESTROYED) {
diff --git 
a/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/TestCalendarService.java
 
b/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/TestCalendarService.java
index 1ff6684..2526911 100644
--- 
a/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/TestCalendarService.java
+++ 
b/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/TestCalendarService.java
@@ -18,6 +18,11 @@
  */
 package org.apache.openmeetings.webservice;
 
+import static org.apache.openmeetings.AbstractJUnitDefaults.ONE_HOUR;
+import static org.apache.openmeetings.AbstractJUnitDefaults.createPass;
+import static org.apache.openmeetings.AbstractJUnitDefaults.createUser;
+import static org.apache.openmeetings.AbstractJUnitDefaults.getAppointment;
+import static org.apache.openmeetings.AbstractJUnitDefaults.getUser;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotEquals;
@@ -32,9 +37,13 @@ import java.util.UUID;
 import javax.ws.rs.core.Form;
 import javax.ws.rs.core.Response;
 
+import org.apache.openmeetings.AbstractJUnitDefaults;
+import org.apache.openmeetings.db.dao.calendar.AppointmentDao;
 import org.apache.openmeetings.db.dao.calendar.MeetingMemberDao;
 import org.apache.openmeetings.db.dao.room.InvitationDao;
 import org.apache.openmeetings.db.dao.room.RoomDao;
+import org.apache.openmeetings.db.dao.user.GroupDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
 import org.apache.openmeetings.db.dto.basic.ServiceResult;
 import org.apache.openmeetings.db.dto.calendar.AppointmentDTO;
 import org.apache.openmeetings.db.dto.calendar.MeetingMemberDTO;
@@ -45,30 +54,23 @@ import org.apache.openmeetings.db.entity.user.GroupUser;
 import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.webservice.util.AppointmentParamConverter;
 import org.junit.Test;
-import org.springframework.beans.factory.annotation.Autowired;
 
 import com.github.openjson.JSONArray;
 import com.github.openjson.JSONObject;
 
 public class TestCalendarService extends AbstractWebServiceTest {
        public static final String CALENDAR_SERVICE_MOUNT = "calendar";
-       @Autowired
-       private RoomDao roomDao;
-       @Autowired
-       private MeetingMemberDao mmDao;
-       @Autowired
-       private InvitationDao invitationDao;
 
        private void actualTest(Room r) throws Exception {
                String uuid = UUID.randomUUID().toString();
                User u = getUser(uuid);
-               u.getGroupUsers().add(new GroupUser(groupDao.get(1L), u));
+               u.getGroupUsers().add(new 
GroupUser(getBean(GroupDao.class).get(1L), u));
                webCreateUser(u);
                ServiceResult sr = login(u.getLogin(), createPass());
-               u = userDao.get(u.getId());
+               u = getBean(UserDao.class).get(u.getId());
 
                Date start = new Date();
-               Appointment a = createAppointment(getAppointment(u, r, start, 
new Date(start.getTime() + ONE_HOUR)));
+               Appointment a = 
AbstractJUnitDefaults.createAppointment(getBean(AppointmentDao.class), 
getAppointment(u, r, start, new Date(start.getTime() + ONE_HOUR)));
 
                AppointmentDTO app = getClient(getCalendarUrl()).path("/room/" 
+ a.getRoom().getId()).query("sid", sr.getMessage())
                                .get(AppointmentDTO.class);
@@ -82,7 +84,7 @@ public class TestCalendarService extends 
AbstractWebServiceTest {
 
        @Test
        public void testGetByPublicRoom() throws Exception {
-               actualTest(roomDao.get(5L)); //default public presentation room
+               actualTest(getBean(RoomDao.class).get(5L)); //default public 
presentation room
        }
 
        private static JSONObject createAppointment(String title) {
@@ -125,7 +127,7 @@ public class TestCalendarService extends 
AbstractWebServiceTest {
        private String loginNewUser() throws Exception {
                String uuid = UUID.randomUUID().toString();
                User u = getUser(uuid);
-               u.getGroupUsers().add(new GroupUser(groupDao.get(1L), u));
+               u.getGroupUsers().add(new 
GroupUser(getBean(GroupDao.class).get(1L), u));
                webCreateUser(u);
                ServiceResult sr = login(u.getLogin(), createPass());
                return sr.getMessage();
@@ -175,8 +177,8 @@ public class TestCalendarService extends 
AbstractWebServiceTest {
 
                String uuid = UUID.randomUUID().toString();
                User u = getUser(uuid);
-               u.getGroupUsers().add(new GroupUser(groupDao.get(1L), u));
-               u = createUser(u);
+               u.getGroupUsers().add(new 
GroupUser(getBean(GroupDao.class).get(1L), u));
+               u = createUser(getBean(UserDao.class), u);
                ServiceResult sr = login(u.getLogin(), createPass());
 
                Response resp = getClient(getCalendarUrl())
@@ -253,6 +255,7 @@ public class TestCalendarService extends 
AbstractWebServiceTest {
                String sid = loginNewUser();
                AppointmentDTO dto = createEventWithGuests(sid);
                List<MeetingMemberDTO> initialList = new 
ArrayList<>(dto.getMeetingMembers());
+               MeetingMemberDao mmDao = getBean(MeetingMemberDao.class);
                MeetingMember mm = mmDao.get(initialList.get(initialList.size() 
- 1).getId());
                Long mmId = mm.getId(), mmUserId = mm.getUser().getId();
                String hash = mm.getInvitation().getHash();
@@ -273,8 +276,8 @@ public class TestCalendarService extends 
AbstractWebServiceTest {
                assertEquals("DTO should have 1 attendees", 1, 
dto.getMeetingMembers().size());
 
                assertNull("Meeting member should deleted", mmDao.get(mmId));
-               assertNull("Invitation should deleted", 
invitationDao.getByHash(hash, true, false));
-               User uc = userDao.get(mmUserId);
+               assertNull("Invitation should deleted", 
getBean(InvitationDao.class).getByHash(hash, true, false));
+               User uc = getBean(UserDao.class).get(mmUserId);
                assertNotNull("Meeting member user should not be deleted", uc);
                assertFalse("Meeting member user should not be deleted", 
uc.isDeleted());
        }
diff --git 
a/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/TestErrorService.java
 
b/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/TestErrorService.java
index 4dc1ca0..281788f 100644
--- 
a/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/TestErrorService.java
+++ 
b/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/TestErrorService.java
@@ -18,6 +18,7 @@
  */
 package org.apache.openmeetings.webservice;
 
+import static org.apache.openmeetings.AbstractJUnitDefaults.rnd;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 
diff --git 
a/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/TestRecordingService.java
 
b/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/TestRecordingService.java
index b2d3230..05ac4e7 100644
--- 
a/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/TestRecordingService.java
+++ 
b/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/TestRecordingService.java
@@ -18,6 +18,7 @@
  */
 package org.apache.openmeetings.webservice;
 
+import static org.apache.openmeetings.AbstractJUnitDefaults.getUser;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
@@ -31,12 +32,9 @@ import org.apache.openmeetings.db.dto.record.RecordingDTO;
 import org.apache.openmeetings.db.entity.record.Recording;
 import org.apache.openmeetings.db.entity.user.User;
 import org.junit.Test;
-import org.springframework.beans.factory.annotation.Autowired;
 
 public class TestRecordingService extends AbstractWebServiceTest {
        public static final String RECORD_SERVICE_MOUNT = "record";
-       @Autowired
-       private RecordingDao recordingDao;
 
        private User getExternalUser() throws Exception {
                String uuid = UUID.randomUUID().toString();
@@ -54,7 +52,7 @@ public class TestRecordingService extends 
AbstractWebServiceTest {
                r.setInsertedBy(u.getId());
                r.setComment("Created by Unit Tests");
                r.setRoomId(5L);
-               r = recordingDao.update(r);
+               r = getBean(RecordingDao.class).update(r);
                ServiceResult sr = login();
                Collection<? extends RecordingDTO> recs = 
getClient(getRecordUrl()).path("/" + UNIT_TEST_EXT_TYPE).query("sid", 
sr.getMessage())
                                .getCollection(RecordingDTO.class);
diff --git 
a/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/TestUserService.java
 
b/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/TestUserService.java
index 2921b46..49ec310 100644
--- 
a/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/TestUserService.java
+++ 
b/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/TestUserService.java
@@ -19,6 +19,11 @@
 package org.apache.openmeetings.webservice;
 
 import static javax.ws.rs.core.MediaType.APPLICATION_FORM_URLENCODED;
+import static org.apache.openmeetings.AbstractJUnitDefaults.adminUsername;
+import static org.apache.openmeetings.AbstractJUnitDefaults.createPass;
+import static org.apache.openmeetings.AbstractJUnitDefaults.rnd;
+import static org.apache.openmeetings.AbstractJUnitDefaults.userpass;
+import static 
org.apache.openmeetings.db.util.ApplicationHelper.ensureApplication;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
@@ -97,6 +102,7 @@ public class TestUserService extends AbstractWebServiceTest {
                ServiceResult r1 = getHash(r.getMessage(), false);
                assertEquals("OM Call should be successful", 
Type.SUCCESS.name(), r1.getType());
 
+               ensureApplication(-1L); // to ensure WebSession is attached
                WebSession ws = WebSession.get();
                assertTrue(ws.signIn(adminUsername, userpass, User.Type.user, 
null));
                Long userId0 = WebSession.getUserId();
diff --git a/openmeetings-web/src/test/resources/logback-test.xml 
b/openmeetings-web/src/test/resources/logback-test.xml
index 17a0a42..d18ff74 100644
--- a/openmeetings-web/src/test/resources/logback-test.xml
+++ b/openmeetings-web/src/test/resources/logback-test.xml
@@ -25,7 +25,6 @@
 
        <appender name="FILE" 
class="ch.qos.logback.core.rolling.RollingFileAppender">
                
<file>${current_openmeetings_log_dir}/${current_openmeetings_context_name}.log</file>
-               <append>false</append>
                <immediateFlush>true</immediateFlush>
                <encoder>
                        <charset>UTF-8</charset>

-- 
To stop receiving notification emails like this one, please contact
[email protected].

Reply via email to