You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by so...@apache.org on 2015/12/30 10:30:47 UTC

svn commit: r1722294 - in /openmeetings/application: branches/3.1.x/ branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/ branches/3.1.x/openmeetings-web/ branches/3.1.x/openmeetings-web/src/main/java/org/apache/openme...

Author: solomax
Date: Wed Dec 30 09:30:46 2015
New Revision: 1722294

URL: http://svn.apache.org/viewvc?rev=1722294&view=rev
Log:
[OPENMEETINGS-1305] tests are added to the build, recording service tests are fixed

Added:
    openmeetings/application/branches/3.1.x/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/AbstractWebServiceTest.java
    openmeetings/application/branches/3.1.x/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestRecordingService.java
      - copied, changed from r1722288, openmeetings/application/branches/3.1.x/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/RecordingServiceTest.java
    openmeetings/application/branches/3.1.x/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestUserService.java
      - copied, changed from r1721886, openmeetings/application/branches/3.1.x/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/UserServiceTest.java
    openmeetings/application/trunk/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/AbstractWebServiceTest.java
    openmeetings/application/trunk/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestRecordingService.java
      - copied, changed from r1721886, openmeetings/application/trunk/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/RecordingServiceTest.java
    openmeetings/application/trunk/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestUserService.java
      - copied, changed from r1721886, openmeetings/application/trunk/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/UserServiceTest.java
Removed:
    openmeetings/application/branches/3.1.x/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/RecordingServiceTest.java
    openmeetings/application/branches/3.1.x/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/UserServiceTest.java
    openmeetings/application/trunk/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/RecordingServiceTest.java
    openmeetings/application/trunk/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/UserServiceTest.java
Modified:
    openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/Recording.java
    openmeetings/application/branches/3.1.x/openmeetings-web/pom.xml
    openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/ProfileImageResourceReference.java
    openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/RecordingResourceReference.java
    openmeetings/application/branches/3.1.x/openmeetings-web/src/test/java/org/apache/openmeetings/test/AbstractJUnitDefaults.java
    openmeetings/application/branches/3.1.x/openmeetings-web/src/test/java/org/apache/openmeetings/test/AbstractSpringTest.java
    openmeetings/application/branches/3.1.x/openmeetings-web/src/test/java/org/apache/openmeetings/test/selenium/AbstractTestDefaults.java
    openmeetings/application/branches/3.1.x/pom.xml
    openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/Recording.java
    openmeetings/application/trunk/openmeetings-web/pom.xml
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/ProfileImageResourceReference.java
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/RecordingResourceReference.java
    openmeetings/application/trunk/openmeetings-web/src/test/java/org/apache/openmeetings/test/AbstractJUnitDefaults.java
    openmeetings/application/trunk/openmeetings-web/src/test/java/org/apache/openmeetings/test/AbstractSpringTest.java
    openmeetings/application/trunk/openmeetings-web/src/test/java/org/apache/openmeetings/test/selenium/AbstractTestDefaults.java
    openmeetings/application/trunk/pom.xml

Modified: openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/Recording.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/Recording.java?rev=1722294&r1=1722293&r2=1722294&view=diff
==============================================================================
--- openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/Recording.java (original)
+++ openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/Recording.java Wed Dec 30 09:30:46 2015
@@ -42,8 +42,6 @@ import javax.xml.bind.annotation.XmlRoot
 import javax.xml.bind.annotation.XmlType;
 
 import org.apache.openmeetings.db.entity.file.FileItem;
-import org.apache.openmeetings.db.entity.room.Room;
-import org.apache.openmeetings.db.entity.user.User;
 import org.simpleframework.xml.Element;
 import org.simpleframework.xml.ElementList;
 import org.simpleframework.xml.Root;
@@ -83,8 +81,6 @@ import org.simpleframework.xml.Root;
 	, @NamedQuery(name = "getRecordingsAll", query = "SELECT c FROM Recording c LEFT JOIN FETCH c.metaData ORDER BY c.id")
 	, @NamedQuery(name = "getRecordingsByExternalTypeAndOwner", query = "SELECT c FROM Recording c, Room r WHERE c.roomId = r.id "
 			+ "AND r.externalType LIKE :externalType AND c.insertedBy LIKE :insertedBy AND c.deleted = false")
-	, @NamedQuery(name = "getRecordingsByExternalType", query = "SELECT c FROM Recording c, Room r WHERE c.roomId = r.id "
-			+ "AND r.externalType LIKE :externalType AND c.deleted = false")
 	, @NamedQuery(name = "getRecordingsByRoom", query = "SELECT c FROM Recording c WHERE c.deleted = false AND c.roomId = :roomId "
 			+ "ORDER BY c.type ASC, c.inserted")
 	, @NamedQuery(name = "getRecordingsByParent", query = "SELECT f FROM Recording f WHERE f.deleted = false AND f.parentId = :parentId "
@@ -170,12 +166,6 @@ public class Recording extends FileItem
 	
 	// Not Mapped
 	@Transient
-	private User creator;
-
-	@Transient
-	private Room room;
-
-	@Transient
 	private List<RecordingLog> log;
 
 	public Long getId() {
@@ -242,22 +232,6 @@ public class Recording extends FileItem
 		this.metaData = metaData;
 	}
 
-	public User getCreator() {
-		return creator;
-	}
-
-	public void setCreator(User creator) {
-		this.creator = creator;
-	}
-
-	public Room getRoom() {
-		return room;
-	}
-
-	public void setRoom(Room room) {
-		this.room = room;
-	}
-
 	public Integer getWidth() {
 		return width;
 	}

Modified: openmeetings/application/branches/3.1.x/openmeetings-web/pom.xml
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/pom.xml?rev=1722294&r1=1722293&r2=1722294&view=diff
==============================================================================
--- openmeetings/application/branches/3.1.x/openmeetings-web/pom.xml (original)
+++ openmeetings/application/branches/3.1.x/openmeetings-web/pom.xml Wed Dec 30 09:30:46 2015
@@ -351,6 +351,26 @@
 				<artifactId>maven-resources-plugin</artifactId>
 				<executions>
 					<execution>
+						<id>prepare-test-resources</id>
+						<phase>process-test-resources</phase>
+						<goals>
+							<goal>copy-resources</goal>
+						</goals>
+						<configuration>
+							<overwrite>true</overwrite>
+							<outputDirectory>${project.build.directory}/test-root</outputDirectory>
+							<resources>
+								<resource>
+									<directory>${project.basedir}/src/main/webapp</directory>
+									<includes>
+										<include>**</include>
+									</includes>
+									<filtering>true</filtering>
+								</resource>
+							</resources>
+						</configuration>
+					</execution>
+					<execution>
 						<id>copy-web-templates</id>
 						<phase>process-resources</phase>
 						<goals>
@@ -402,20 +422,6 @@
 							<goal>run</goal>
 						</goals>
 					</execution>
-					<execution><!-- FIXME should be refactored -->
-						<id>move-openjpa-resources</id>
-						<phase>process-resources</phase>
-						<configuration>
-							<target>
-								<copy todir="${project.build.directory}/test-root">
-									<fileset dir="${project.basedir}/src/main/webapp"/>
-								</copy>
-							</target>
-						</configuration>
-						<goals>
-							<goal>run</goal>
-						</goals>
-					</execution>
 				</executions>
 			</plugin>
 			<plugin>
@@ -430,6 +436,8 @@
 						<languages.home>${project.basedir}/src/main/webapp/languages</languages.home>
 						<red5.root>red5.root</red5.root>
 						<backups.dir>${old-backups.dir}</backups.dir>
+						<logback.ContextSelector>org.red5.logging.LoggingContextSelector</logback.ContextSelector>
+						<catalina.useNaming>true</catalina.useNaming>
 					</systemPropertyVariables>
 					<additionalClasspathElements>
 						<additionalClasspathElement>${project.build.directory}/${project.build.finalName}/WEB-INF/classes</additionalClasspathElement>
@@ -675,8 +683,20 @@
 		</dependency>
 		<dependency>
 			<groupId>org.apache.tomcat.embed</groupId>
+			<artifactId>tomcat-embed-core</artifactId>
+			<version>${tomcat.version}</version>
+			<scope>test</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.tomcat.embed</groupId>
+			<artifactId>tomcat-embed-logging-juli</artifactId>
+			<version>${tomcat.version}</version>
+			<scope>test</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.tomcat.embed</groupId>
 			<artifactId>tomcat-embed-websocket</artifactId>
-			<version>8.0.26</version>
+			<version>${tomcat.version}</version>
 			<exclusions>
 				<exclusion>
 					<groupId>org.apache.tomcat.embed</groupId>

Modified: openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/ProfileImageResourceReference.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/ProfileImageResourceReference.java?rev=1722294&r1=1722293&r2=1722294&view=diff
==============================================================================
--- openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/ProfileImageResourceReference.java (original)
+++ openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/ProfileImageResourceReference.java Wed Dec 30 09:30:46 2015
@@ -73,11 +73,13 @@ public class ProfileImageResourceReferen
 		return new ByteArrayResource("image/jpeg") {
 			private static final long serialVersionUID = 1L;
 			private Long userId = null;
+			private String uri = null;
 
 			@Override
 			protected ResourceResponse newResourceResponse(Attributes attributes) {
 				PageParameters params = attributes.getParameters();
 				userId = params.get("id").toOptionalLong();
+				uri = getBean(UserDao.class).get(userId).getPictureuri();
 				ResourceResponse rr = super.newResourceResponse(attributes);
 				rr.disableCaching();
 				return rr;
@@ -85,7 +87,6 @@ public class ProfileImageResourceReferen
 			
 			@Override
 			protected byte[] getData(Attributes attributes) {
-				String uri = getBean(UserDao.class).get(userId).getPictureuri();
 				if (!isAbsolute(uri)) {
 					File img = OmFileHelper.getUserProfilePicture(userId, uri);
 					try (InputStream is = new FileInputStream(img)) {

Modified: openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/RecordingResourceReference.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/RecordingResourceReference.java?rev=1722294&r1=1722293&r2=1722294&view=diff
==============================================================================
--- openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/RecordingResourceReference.java (original)
+++ openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/RecordingResourceReference.java Wed Dec 30 09:30:46 2015
@@ -32,7 +32,9 @@ import javax.servlet.http.HttpServletRes
 
 import org.apache.openmeetings.db.dao.record.RecordingDao;
 import org.apache.openmeetings.db.dao.user.GroupUserDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
 import org.apache.openmeetings.db.entity.record.Recording;
+import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.web.app.WebSession;
 import org.apache.wicket.request.mapper.parameter.PageParameters;
 import org.apache.wicket.request.resource.IResource;
@@ -96,8 +98,11 @@ public abstract class RecordingResourceR
 		}
 		//TODO external group check was added for plugin recording download
 		String extType = getExternalType();
-		if (extType != null && extType.equals(r.getCreator().getExternalType())) {
-			return r;
+		if (extType != null) {
+			User creator = getBean(UserDao.class).get(r.getInsertedBy());
+			if (extType.equals(creator.getExternalType())) {
+				return r;
+			}
 		}
 		return null;
 	}

Modified: openmeetings/application/branches/3.1.x/openmeetings-web/src/test/java/org/apache/openmeetings/test/AbstractJUnitDefaults.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/test/java/org/apache/openmeetings/test/AbstractJUnitDefaults.java?rev=1722294&r1=1722293&r2=1722294&view=diff
==============================================================================
--- openmeetings/application/branches/3.1.x/openmeetings-web/src/test/java/org/apache/openmeetings/test/AbstractJUnitDefaults.java (original)
+++ openmeetings/application/branches/3.1.x/openmeetings-web/src/test/java/org/apache/openmeetings/test/AbstractJUnitDefaults.java Wed Dec 30 09:30:46 2015
@@ -56,7 +56,6 @@ public abstract class AbstractJUnitDefau
 
 	@Before
 	public void setUp() throws Exception {
-		super.setUp();
 		configurationDao.getCryptKey();
 		if (userDao.count() < 1) {
 			makeDefaultScheme();

Modified: openmeetings/application/branches/3.1.x/openmeetings-web/src/test/java/org/apache/openmeetings/test/AbstractSpringTest.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/test/java/org/apache/openmeetings/test/AbstractSpringTest.java?rev=1722294&r1=1722293&r2=1722294&view=diff
==============================================================================
--- openmeetings/application/branches/3.1.x/openmeetings-web/src/test/java/org/apache/openmeetings/test/AbstractSpringTest.java (original)
+++ openmeetings/application/branches/3.1.x/openmeetings-web/src/test/java/org/apache/openmeetings/test/AbstractSpringTest.java Wed Dec 30 09:30:46 2015
@@ -22,7 +22,7 @@ import static org.junit.Assert.fail;
 
 import org.apache.openmeetings.db.dao.label.LabelDao;
 import org.apache.openmeetings.util.OmFileHelper;
-import org.junit.Before;
+import org.junit.BeforeClass;
 import org.junit.runner.RunWith;
 import org.springframework.test.context.ContextConfiguration;
 import org.springframework.test.context.TestExecutionListeners;
@@ -34,8 +34,8 @@ import org.springframework.test.context.
 @ContextConfiguration(locations={"classpath:openmeetings-applicationContext.xml"}, inheritLocations = true)
 public abstract class AbstractSpringTest extends AbstractJUnit4SpringContextTests {
 
-	@Before
-	public void setUp() throws Exception {
+	@BeforeClass
+	public static void init() throws Exception {
 		setOmHome();
 		LabelDao.initLanguageMap();
 		if (LabelDao.languages.isEmpty()) {
@@ -43,7 +43,7 @@ public abstract class AbstractSpringTest
 		}
 	}
 	
-	protected void setOmHome() {
+	protected static void setOmHome() {
 		String webappsDir = System.getProperty("om.home", ".");
 		OmFileHelper.setOmHome(webappsDir);
 		if (!OmFileHelper.getOmHome().exists() || !OmFileHelper.getOmHome().isDirectory()) {

Modified: openmeetings/application/branches/3.1.x/openmeetings-web/src/test/java/org/apache/openmeetings/test/selenium/AbstractTestDefaults.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/test/java/org/apache/openmeetings/test/selenium/AbstractTestDefaults.java?rev=1722294&r1=1722293&r2=1722294&view=diff
==============================================================================
--- openmeetings/application/branches/3.1.x/openmeetings-web/src/test/java/org/apache/openmeetings/test/selenium/AbstractTestDefaults.java (original)
+++ openmeetings/application/branches/3.1.x/openmeetings-web/src/test/java/org/apache/openmeetings/test/selenium/AbstractTestDefaults.java Wed Dec 30 09:30:46 2015
@@ -96,7 +96,6 @@ public abstract class AbstractTestDefaul
 
 	@Before
 	public void setUp() throws Exception {
-		super.setUp();
 		FirefoxProfile profile = new FirefoxProfile();
 		profile.setPreference("intl.accept_languages", getLocale());
 		driver = new FirefoxDriver(profile);

Added: openmeetings/application/branches/3.1.x/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/AbstractWebServiceTest.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/AbstractWebServiceTest.java?rev=1722294&view=auto
==============================================================================
--- openmeetings/application/branches/3.1.x/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/AbstractWebServiceTest.java (added)
+++ openmeetings/application/branches/3.1.x/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/AbstractWebServiceTest.java Wed Dec 30 09:30:46 2015
@@ -0,0 +1,77 @@
+/*
+ * 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.test.webservice;
+
+import static org.apache.openmeetings.util.OmFileHelper.getOmHome;
+import static org.junit.Assert.assertEquals;
+
+import java.io.File;
+import java.nio.file.Files;
+import java.util.Random;
+
+import org.apache.catalina.LifecycleState;
+import org.apache.catalina.startup.Tomcat;
+import org.apache.cxf.jaxrs.client.WebClient;
+import org.apache.openmeetings.db.dto.basic.ServiceResult;
+import org.apache.openmeetings.db.dto.basic.ServiceResult.Type;
+import org.apache.openmeetings.test.AbstractJUnitDefaults;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+
+public class AbstractWebServiceTest extends AbstractJUnitDefaults {
+	private static Tomcat tomcat;
+	public final static String CONTEXT = "/openmeetings";
+	public final static String BASE_SERVICES_URL = "http://localhost:8080" + CONTEXT + "/services";
+	public final static String USER_SERVICE_URL = BASE_SERVICES_URL + "/user";
+	protected static final Random rnd = new Random();
+
+	public static WebClient getClient(String url) {
+		return WebClient.create(url).accept("application/json").type("application/json");
+	}
+
+	public static ServiceResult login() {
+		ServiceResult sr = getClient(USER_SERVICE_URL).path("/login").query("user", username).query("pass", userpass)
+				.get(ServiceResult.class);
+		assertEquals("Login should be successful", sr.getType(), Type.SUCCESS.name());
+		return sr;
+	}
+
+	@BeforeClass
+	public static void initialize() throws Exception {
+		tomcat = new Tomcat();
+		tomcat.setPort(8080);
+		File wd = Files.createTempDirectory("om" + rnd.nextInt()).toFile();
+		tomcat.setBaseDir(wd.getCanonicalPath());
+		tomcat.getHost().setAppBase(wd.getCanonicalPath());
+		tomcat.getHost().setAutoDeploy(true);
+		tomcat.getHost().setDeployOnStartup(true);
+		tomcat.addWebapp(CONTEXT, getOmHome().getAbsolutePath());
+		tomcat.start();
+	}
+
+	@AfterClass
+	public static void destroy() throws Exception {
+		if (tomcat.getServer() != null && tomcat.getServer().getState() != LifecycleState.DESTROYED) {
+			if (tomcat.getServer().getState() != LifecycleState.STOPPED) {
+				tomcat.stop();
+			}
+			tomcat.destroy();
+		}
+	}
+}

Copied: openmeetings/application/branches/3.1.x/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestRecordingService.java (from r1722288, openmeetings/application/branches/3.1.x/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/RecordingServiceTest.java)
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestRecordingService.java?p2=openmeetings/application/branches/3.1.x/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestRecordingService.java&p1=openmeetings/application/branches/3.1.x/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/RecordingServiceTest.java&r1=1722288&r2=1722294&rev=1722294&view=diff
==============================================================================
--- openmeetings/application/branches/3.1.x/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/RecordingServiceTest.java (original)
+++ openmeetings/application/branches/3.1.x/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestRecordingService.java Wed Dec 30 09:30:46 2015
@@ -23,7 +23,6 @@ import static org.junit.Assert.assertNot
 import static org.junit.Assert.assertTrue;
 
 import java.util.Collection;
-import java.util.Random;
 
 import org.apache.openmeetings.db.dao.record.RecordingDao;
 import org.apache.openmeetings.db.dao.user.UserDao;
@@ -31,37 +30,42 @@ import org.apache.openmeetings.db.dto.ba
 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.apache.openmeetings.test.AbstractJUnitDefaults;
 import org.junit.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 
-public class RecordingServiceTest extends AbstractJUnitDefaults {
-	public final static String RECORD_SERVICE_URL = UserServiceTest.BASE_SERVICES_URL + "/record";
+public class TestRecordingService extends AbstractWebServiceTest {
+	public final static String RECORD_SERVICE_URL = BASE_SERVICES_URL + "/record";
 	private final static String UNIT_TEST_GROUP = "om_unit_tests";
-	private final Random rnd = new Random();
 	@Autowired
 	private RecordingDao recordingDao;
 	@Autowired
 	private UserDao userDao;
 
-	@Test
-	public void testExternal() throws Exception {
+	private User getExternalUser() throws Exception {
 		User u = getUser(rnd.nextInt());
 		u.setExternalType(UNIT_TEST_GROUP);
 		u.setExternalId("" + rnd.nextInt());
-		userDao.update(u, null);
+		u = userDao.update(u, null);
+		return u;
+	}
+	
+	@Test
+	public void testExternal() throws Exception {
+		User u = getExternalUser();
 		Recording r = new Recording();
-		r.setCreator(u);
+		r.setInsertedBy(u.getId());
 		r.setComment("Created by Unit Tests");
+		r.setRoomId(5L);
 		r = recordingDao.update(r);
-		ServiceResult sr = UserServiceTest.login();
-		Collection<? extends RecordingDTO> recs = UserServiceTest.getClient(RECORD_SERVICE_URL).path("/" + UNIT_TEST_GROUP).query("sid", sr.getMessage())
+		ServiceResult sr = login();
+		Collection<? extends RecordingDTO> recs = getClient(RECORD_SERVICE_URL).path("/" + UNIT_TEST_GROUP).query("sid", sr.getMessage())
 				.getCollection(RecordingDTO.class);
 		assertNotNull("Valid collection should be returned", recs);
-		assertFalse("Collection of the recordings shoould not be empty", recs.isEmpty());
+		assertFalse("Collection of the recordings should not be empty", recs.isEmpty());
 		boolean found = false;
 		for (RecordingDTO rdo : recs) {
 			if (r.getId().equals(rdo.getId())) {
+				//TODO check room, user
 				found = true;
 				break;
 			}

Copied: openmeetings/application/branches/3.1.x/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestUserService.java (from r1721886, openmeetings/application/branches/3.1.x/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/UserServiceTest.java)
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestUserService.java?p2=openmeetings/application/branches/3.1.x/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestUserService.java&p1=openmeetings/application/branches/3.1.x/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/UserServiceTest.java&r1=1721886&r2=1722294&rev=1722294&view=diff
==============================================================================
--- openmeetings/application/branches/3.1.x/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/UserServiceTest.java (original)
+++ openmeetings/application/branches/3.1.x/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestUserService.java Wed Dec 30 09:30:46 2015
@@ -24,28 +24,13 @@ import static org.junit.Assert.assertNot
 import javax.ws.rs.core.Form;
 import javax.ws.rs.core.Response;
 
-import org.apache.cxf.jaxrs.client.WebClient;
 import org.apache.openmeetings.db.dto.basic.ServiceResult;
 import org.apache.openmeetings.db.dto.basic.ServiceResult.Type;
 import org.apache.openmeetings.db.dto.room.RoomOptionsDTO;
 import org.apache.openmeetings.db.dto.user.ExternalUserDTO;
-import org.apache.openmeetings.test.AbstractJUnitDefaults;
 import org.junit.Test;
 
-public class UserServiceTest extends AbstractJUnitDefaults {
-	public final static String BASE_SERVICES_URL = "http://localhost:5080/openmeetings/services";
-	public final static String USER_SERVICE_URL = BASE_SERVICES_URL + "/user";
-	
-	public static WebClient getClient(String url) {
-		return WebClient.create(url).accept("application/json").type("application/json");
-	}
-	
-	public static ServiceResult login() {
-		ServiceResult sr = getClient(USER_SERVICE_URL).path("/login").query("user", username).query("pass", userpass).get(ServiceResult.class);
-		assertEquals("Login should be successful", sr.getType(), Type.SUCCESS.name());
-		return sr;
-	}
-	
+public class TestUserService extends AbstractWebServiceTest {
 	@Test
 	public void loginTest() {
 		ServiceResult r = login();

Modified: openmeetings/application/branches/3.1.x/pom.xml
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/pom.xml?rev=1722294&r1=1722293&r2=1722294&view=diff
==============================================================================
--- openmeetings/application/branches/3.1.x/pom.xml (original)
+++ openmeetings/application/branches/3.1.x/pom.xml Wed Dec 30 09:30:46 2015
@@ -56,6 +56,7 @@
 		<site.basedir>${project.basedir}</site.basedir>
 		<skip.site.copy>true</skip.site.copy>
 		<src.pack.skip>false</src.pack.skip>
+		<tomcat.version>8.0.28</tomcat.version>
 	</properties>
 	<modules>
 		<module>openmeetings-util</module>
@@ -618,7 +619,7 @@
 			<dependency>
 				<groupId>org.apache.tomcat</groupId>
 				<artifactId>tomcat-servlet-api</artifactId>
-				<version>8.0.28</version>
+				<version>${tomcat.version}</version>
 				<scope>provided</scope>
 			</dependency>
 		</dependencies>

Modified: openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/Recording.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/Recording.java?rev=1722294&r1=1722293&r2=1722294&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/Recording.java (original)
+++ openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/Recording.java Wed Dec 30 09:30:46 2015
@@ -42,8 +42,6 @@ import javax.xml.bind.annotation.XmlRoot
 import javax.xml.bind.annotation.XmlType;
 
 import org.apache.openmeetings.db.entity.file.FileItem;
-import org.apache.openmeetings.db.entity.room.Room;
-import org.apache.openmeetings.db.entity.user.User;
 import org.simpleframework.xml.Element;
 import org.simpleframework.xml.ElementList;
 import org.simpleframework.xml.Root;
@@ -83,8 +81,6 @@ import org.simpleframework.xml.Root;
 	, @NamedQuery(name = "getRecordingsAll", query = "SELECT c FROM Recording c LEFT JOIN FETCH c.metaData ORDER BY c.id")
 	, @NamedQuery(name = "getRecordingsByExternalTypeAndOwner", query = "SELECT c FROM Recording c, Room r WHERE c.roomId = r.id "
 			+ "AND r.externalType LIKE :externalType AND c.insertedBy LIKE :insertedBy AND c.deleted = false")
-	, @NamedQuery(name = "getRecordingsByExternalType", query = "SELECT c FROM Recording c, Room r WHERE c.roomId = r.id "
-			+ "AND r.externalType LIKE :externalType AND c.deleted = false")
 	, @NamedQuery(name = "getRecordingsByRoom", query = "SELECT c FROM Recording c WHERE c.deleted = false AND c.roomId = :roomId "
 			+ "ORDER BY c.type ASC, c.inserted")
 	, @NamedQuery(name = "getRecordingsByParent", query = "SELECT f FROM Recording f WHERE f.deleted = false AND f.parentId = :parentId "
@@ -170,12 +166,6 @@ public class Recording extends FileItem
 	
 	// Not Mapped
 	@Transient
-	private User creator;
-
-	@Transient
-	private Room room;
-
-	@Transient
 	private List<RecordingLog> log;
 
 	public Long getId() {
@@ -242,22 +232,6 @@ public class Recording extends FileItem
 		this.metaData = metaData;
 	}
 
-	public User getCreator() {
-		return creator;
-	}
-
-	public void setCreator(User creator) {
-		this.creator = creator;
-	}
-
-	public Room getRoom() {
-		return room;
-	}
-
-	public void setRoom(Room room) {
-		this.room = room;
-	}
-
 	public Integer getWidth() {
 		return width;
 	}

Modified: openmeetings/application/trunk/openmeetings-web/pom.xml
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/pom.xml?rev=1722294&r1=1722293&r2=1722294&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/pom.xml (original)
+++ openmeetings/application/trunk/openmeetings-web/pom.xml Wed Dec 30 09:30:46 2015
@@ -351,6 +351,26 @@
 				<artifactId>maven-resources-plugin</artifactId>
 				<executions>
 					<execution>
+						<id>prepare-test-resources</id>
+						<phase>process-test-resources</phase>
+						<goals>
+							<goal>copy-resources</goal>
+						</goals>
+						<configuration>
+							<overwrite>true</overwrite>
+							<outputDirectory>${project.build.directory}/test-root</outputDirectory>
+							<resources>
+								<resource>
+									<directory>${project.basedir}/src/main/webapp</directory>
+									<includes>
+										<include>**</include>
+									</includes>
+									<filtering>true</filtering>
+								</resource>
+							</resources>
+						</configuration>
+					</execution>
+					<execution>
 						<id>copy-web-templates</id>
 						<phase>process-resources</phase>
 						<goals>
@@ -402,20 +422,6 @@
 							<goal>run</goal>
 						</goals>
 					</execution>
-					<execution><!-- FIXME should be refactored -->
-						<id>move-openjpa-resources</id>
-						<phase>process-resources</phase>
-						<configuration>
-							<target>
-								<copy todir="${project.build.directory}/test-root">
-									<fileset dir="${project.basedir}/src/main/webapp"/>
-								</copy>
-							</target>
-						</configuration>
-						<goals>
-							<goal>run</goal>
-						</goals>
-					</execution>
 				</executions>
 			</plugin>
 			<plugin>
@@ -430,6 +436,8 @@
 						<languages.home>${project.basedir}/src/main/webapp/languages</languages.home>
 						<red5.root>red5.root</red5.root>
 						<backups.dir>${old-backups.dir}</backups.dir>
+						<logback.ContextSelector>org.red5.logging.LoggingContextSelector</logback.ContextSelector>
+						<catalina.useNaming>true</catalina.useNaming>
 					</systemPropertyVariables>
 					<additionalClasspathElements>
 						<additionalClasspathElement>${project.build.directory}/${project.build.finalName}/WEB-INF/classes</additionalClasspathElement>
@@ -675,8 +683,20 @@
 		</dependency>
 		<dependency>
 			<groupId>org.apache.tomcat.embed</groupId>
+			<artifactId>tomcat-embed-core</artifactId>
+			<version>${tomcat.version}</version>
+			<scope>test</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.tomcat.embed</groupId>
+			<artifactId>tomcat-embed-logging-juli</artifactId>
+			<version>${tomcat.version}</version>
+			<scope>test</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.tomcat.embed</groupId>
 			<artifactId>tomcat-embed-websocket</artifactId>
-			<version>8.0.26</version>
+			<version>${tomcat.version}</version>
 			<exclusions>
 				<exclusion>
 					<groupId>org.apache.tomcat.embed</groupId>

Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/ProfileImageResourceReference.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/ProfileImageResourceReference.java?rev=1722294&r1=1722293&r2=1722294&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/ProfileImageResourceReference.java (original)
+++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/ProfileImageResourceReference.java Wed Dec 30 09:30:46 2015
@@ -73,11 +73,13 @@ public class ProfileImageResourceReferen
 		return new ByteArrayResource("image/jpeg") {
 			private static final long serialVersionUID = 1L;
 			private Long userId = null;
+			private String uri = null;
 
 			@Override
 			protected ResourceResponse newResourceResponse(Attributes attributes) {
 				PageParameters params = attributes.getParameters();
 				userId = params.get("id").toOptionalLong();
+				uri = getBean(UserDao.class).get(userId).getPictureuri();
 				ResourceResponse rr = super.newResourceResponse(attributes);
 				rr.disableCaching();
 				return rr;
@@ -85,7 +87,6 @@ public class ProfileImageResourceReferen
 			
 			@Override
 			protected byte[] getData(Attributes attributes) {
-				String uri = getBean(UserDao.class).get(userId).getPictureuri();
 				if (!isAbsolute(uri)) {
 					File img = OmFileHelper.getUserProfilePicture(userId, uri);
 					try (InputStream is = new FileInputStream(img)) {

Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/RecordingResourceReference.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/RecordingResourceReference.java?rev=1722294&r1=1722293&r2=1722294&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/RecordingResourceReference.java (original)
+++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/RecordingResourceReference.java Wed Dec 30 09:30:46 2015
@@ -32,7 +32,9 @@ import javax.servlet.http.HttpServletRes
 
 import org.apache.openmeetings.db.dao.record.RecordingDao;
 import org.apache.openmeetings.db.dao.user.GroupUserDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
 import org.apache.openmeetings.db.entity.record.Recording;
+import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.web.app.WebSession;
 import org.apache.wicket.request.mapper.parameter.PageParameters;
 import org.apache.wicket.request.resource.IResource;
@@ -96,8 +98,11 @@ public abstract class RecordingResourceR
 		}
 		//TODO external group check was added for plugin recording download
 		String extType = getExternalType();
-		if (extType != null && extType.equals(r.getCreator().getExternalType())) {
-			return r;
+		if (extType != null) {
+			User creator = getBean(UserDao.class).get(r.getInsertedBy());
+			if (extType.equals(creator.getExternalType())) {
+				return r;
+			}
 		}
 		return null;
 	}

Modified: openmeetings/application/trunk/openmeetings-web/src/test/java/org/apache/openmeetings/test/AbstractJUnitDefaults.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/test/java/org/apache/openmeetings/test/AbstractJUnitDefaults.java?rev=1722294&r1=1722293&r2=1722294&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/test/java/org/apache/openmeetings/test/AbstractJUnitDefaults.java (original)
+++ openmeetings/application/trunk/openmeetings-web/src/test/java/org/apache/openmeetings/test/AbstractJUnitDefaults.java Wed Dec 30 09:30:46 2015
@@ -56,7 +56,6 @@ public abstract class AbstractJUnitDefau
 
 	@Before
 	public void setUp() throws Exception {
-		super.setUp();
 		configurationDao.getCryptKey();
 		if (userDao.count() < 1) {
 			makeDefaultScheme();

Modified: openmeetings/application/trunk/openmeetings-web/src/test/java/org/apache/openmeetings/test/AbstractSpringTest.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/test/java/org/apache/openmeetings/test/AbstractSpringTest.java?rev=1722294&r1=1722293&r2=1722294&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/test/java/org/apache/openmeetings/test/AbstractSpringTest.java (original)
+++ openmeetings/application/trunk/openmeetings-web/src/test/java/org/apache/openmeetings/test/AbstractSpringTest.java Wed Dec 30 09:30:46 2015
@@ -22,7 +22,7 @@ import static org.junit.Assert.fail;
 
 import org.apache.openmeetings.db.dao.label.LabelDao;
 import org.apache.openmeetings.util.OmFileHelper;
-import org.junit.Before;
+import org.junit.BeforeClass;
 import org.junit.runner.RunWith;
 import org.springframework.test.context.ContextConfiguration;
 import org.springframework.test.context.TestExecutionListeners;
@@ -34,8 +34,8 @@ import org.springframework.test.context.
 @ContextConfiguration(locations={"classpath:openmeetings-applicationContext.xml"}, inheritLocations = true)
 public abstract class AbstractSpringTest extends AbstractJUnit4SpringContextTests {
 
-	@Before
-	public void setUp() throws Exception {
+	@BeforeClass
+	public static void init() throws Exception {
 		setOmHome();
 		LabelDao.initLanguageMap();
 		if (LabelDao.languages.isEmpty()) {
@@ -43,7 +43,7 @@ public abstract class AbstractSpringTest
 		}
 	}
 	
-	protected void setOmHome() {
+	protected static void setOmHome() {
 		String webappsDir = System.getProperty("om.home", ".");
 		OmFileHelper.setOmHome(webappsDir);
 		if (!OmFileHelper.getOmHome().exists() || !OmFileHelper.getOmHome().isDirectory()) {

Modified: openmeetings/application/trunk/openmeetings-web/src/test/java/org/apache/openmeetings/test/selenium/AbstractTestDefaults.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/test/java/org/apache/openmeetings/test/selenium/AbstractTestDefaults.java?rev=1722294&r1=1722293&r2=1722294&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/test/java/org/apache/openmeetings/test/selenium/AbstractTestDefaults.java (original)
+++ openmeetings/application/trunk/openmeetings-web/src/test/java/org/apache/openmeetings/test/selenium/AbstractTestDefaults.java Wed Dec 30 09:30:46 2015
@@ -96,7 +96,6 @@ public abstract class AbstractTestDefaul
 
 	@Before
 	public void setUp() throws Exception {
-		super.setUp();
 		FirefoxProfile profile = new FirefoxProfile();
 		profile.setPreference("intl.accept_languages", getLocale());
 		driver = new FirefoxDriver(profile);

Added: openmeetings/application/trunk/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/AbstractWebServiceTest.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/AbstractWebServiceTest.java?rev=1722294&view=auto
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/AbstractWebServiceTest.java (added)
+++ openmeetings/application/trunk/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/AbstractWebServiceTest.java Wed Dec 30 09:30:46 2015
@@ -0,0 +1,77 @@
+/*
+ * 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.test.webservice;
+
+import static org.apache.openmeetings.util.OmFileHelper.getOmHome;
+import static org.junit.Assert.assertEquals;
+
+import java.io.File;
+import java.nio.file.Files;
+import java.util.Random;
+
+import org.apache.catalina.LifecycleState;
+import org.apache.catalina.startup.Tomcat;
+import org.apache.cxf.jaxrs.client.WebClient;
+import org.apache.openmeetings.db.dto.basic.ServiceResult;
+import org.apache.openmeetings.db.dto.basic.ServiceResult.Type;
+import org.apache.openmeetings.test.AbstractJUnitDefaults;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+
+public class AbstractWebServiceTest extends AbstractJUnitDefaults {
+	private static Tomcat tomcat;
+	public final static String CONTEXT = "/openmeetings";
+	public final static String BASE_SERVICES_URL = "http://localhost:8080" + CONTEXT + "/services";
+	public final static String USER_SERVICE_URL = BASE_SERVICES_URL + "/user";
+	protected static final Random rnd = new Random();
+
+	public static WebClient getClient(String url) {
+		return WebClient.create(url).accept("application/json").type("application/json");
+	}
+
+	public static ServiceResult login() {
+		ServiceResult sr = getClient(USER_SERVICE_URL).path("/login").query("user", username).query("pass", userpass)
+				.get(ServiceResult.class);
+		assertEquals("Login should be successful", sr.getType(), Type.SUCCESS.name());
+		return sr;
+	}
+
+	@BeforeClass
+	public static void initialize() throws Exception {
+		tomcat = new Tomcat();
+		tomcat.setPort(8080);
+		File wd = Files.createTempDirectory("om" + rnd.nextInt()).toFile();
+		tomcat.setBaseDir(wd.getCanonicalPath());
+		tomcat.getHost().setAppBase(wd.getCanonicalPath());
+		tomcat.getHost().setAutoDeploy(true);
+		tomcat.getHost().setDeployOnStartup(true);
+		tomcat.addWebapp(CONTEXT, getOmHome().getAbsolutePath());
+		tomcat.start();
+	}
+
+	@AfterClass
+	public static void destroy() throws Exception {
+		if (tomcat.getServer() != null && tomcat.getServer().getState() != LifecycleState.DESTROYED) {
+			if (tomcat.getServer().getState() != LifecycleState.STOPPED) {
+				tomcat.stop();
+			}
+			tomcat.destroy();
+		}
+	}
+}

Copied: openmeetings/application/trunk/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestRecordingService.java (from r1721886, openmeetings/application/trunk/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/RecordingServiceTest.java)
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestRecordingService.java?p2=openmeetings/application/trunk/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestRecordingService.java&p1=openmeetings/application/trunk/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/RecordingServiceTest.java&r1=1721886&r2=1722294&rev=1722294&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/RecordingServiceTest.java (original)
+++ openmeetings/application/trunk/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestRecordingService.java Wed Dec 30 09:30:46 2015
@@ -23,7 +23,6 @@ import static org.junit.Assert.assertNot
 import static org.junit.Assert.assertTrue;
 
 import java.util.Collection;
-import java.util.Random;
 
 import org.apache.openmeetings.db.dao.record.RecordingDao;
 import org.apache.openmeetings.db.dao.user.UserDao;
@@ -31,37 +30,42 @@ import org.apache.openmeetings.db.dto.ba
 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.apache.openmeetings.test.AbstractJUnitDefaults;
 import org.junit.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 
-public class RecordingServiceTest extends AbstractJUnitDefaults {
-	public final static String RECORD_SERVICE_URL = UserServiceTest.BASE_SERVICES_URL + "/record";
+public class TestRecordingService extends AbstractWebServiceTest {
+	public final static String RECORD_SERVICE_URL = BASE_SERVICES_URL + "/record";
 	private final static String UNIT_TEST_GROUP = "om_unit_tests";
-	private final Random rnd = new Random();
 	@Autowired
 	private RecordingDao recordingDao;
 	@Autowired
 	private UserDao userDao;
 
-	@Test
-	public void testExternal() throws Exception {
+	private User getExternalUser() throws Exception {
 		User u = getUser(rnd.nextInt());
 		u.setExternalType(UNIT_TEST_GROUP);
 		u.setExternalId("" + rnd.nextInt());
-		userDao.update(u, null);
+		u = userDao.update(u, null);
+		return u;
+	}
+	
+	@Test
+	public void testExternal() throws Exception {
+		User u = getExternalUser();
 		Recording r = new Recording();
-		r.setCreator(u);
+		r.setInsertedBy(u.getId());
 		r.setComment("Created by Unit Tests");
+		r.setRoomId(5L);
 		r = recordingDao.update(r);
-		ServiceResult sr = UserServiceTest.login();
-		Collection<? extends RecordingDTO> recs = UserServiceTest.getClient(RECORD_SERVICE_URL).path("/" + UNIT_TEST_GROUP).query("sid", sr.getMessage())
+		ServiceResult sr = login();
+		Collection<? extends RecordingDTO> recs = getClient(RECORD_SERVICE_URL).path("/" + UNIT_TEST_GROUP).query("sid", sr.getMessage())
 				.getCollection(RecordingDTO.class);
 		assertNotNull("Valid collection should be returned", recs);
-		assertFalse("Collection of the recordings shoould not be empty", recs.isEmpty());
+		assertFalse("Collection of the recordings should not be empty", recs.isEmpty());
 		boolean found = false;
 		for (RecordingDTO rdo : recs) {
 			if (r.getId().equals(rdo.getId())) {
+				//TODO check room, user
 				found = true;
 				break;
 			}

Copied: openmeetings/application/trunk/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestUserService.java (from r1721886, openmeetings/application/trunk/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/UserServiceTest.java)
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestUserService.java?p2=openmeetings/application/trunk/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestUserService.java&p1=openmeetings/application/trunk/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/UserServiceTest.java&r1=1721886&r2=1722294&rev=1722294&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/UserServiceTest.java (original)
+++ openmeetings/application/trunk/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestUserService.java Wed Dec 30 09:30:46 2015
@@ -24,28 +24,13 @@ import static org.junit.Assert.assertNot
 import javax.ws.rs.core.Form;
 import javax.ws.rs.core.Response;
 
-import org.apache.cxf.jaxrs.client.WebClient;
 import org.apache.openmeetings.db.dto.basic.ServiceResult;
 import org.apache.openmeetings.db.dto.basic.ServiceResult.Type;
 import org.apache.openmeetings.db.dto.room.RoomOptionsDTO;
 import org.apache.openmeetings.db.dto.user.ExternalUserDTO;
-import org.apache.openmeetings.test.AbstractJUnitDefaults;
 import org.junit.Test;
 
-public class UserServiceTest extends AbstractJUnitDefaults {
-	public final static String BASE_SERVICES_URL = "http://localhost:5080/openmeetings/services";
-	public final static String USER_SERVICE_URL = BASE_SERVICES_URL + "/user";
-	
-	public static WebClient getClient(String url) {
-		return WebClient.create(url).accept("application/json").type("application/json");
-	}
-	
-	public static ServiceResult login() {
-		ServiceResult sr = getClient(USER_SERVICE_URL).path("/login").query("user", username).query("pass", userpass).get(ServiceResult.class);
-		assertEquals("Login should be successful", sr.getType(), Type.SUCCESS.name());
-		return sr;
-	}
-	
+public class TestUserService extends AbstractWebServiceTest {
 	@Test
 	public void loginTest() {
 		ServiceResult r = login();

Modified: openmeetings/application/trunk/pom.xml
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/pom.xml?rev=1722294&r1=1722293&r2=1722294&view=diff
==============================================================================
--- openmeetings/application/trunk/pom.xml (original)
+++ openmeetings/application/trunk/pom.xml Wed Dec 30 09:30:46 2015
@@ -56,6 +56,7 @@
 		<site.basedir>${project.basedir}</site.basedir>
 		<skip.site.copy>true</skip.site.copy>
 		<src.pack.skip>false</src.pack.skip>
+		<tomcat.version>8.0.28</tomcat.version>
 	</properties>
 	<modules>
 		<module>openmeetings-util</module>
@@ -618,7 +619,7 @@
 			<dependency>
 				<groupId>org.apache.tomcat</groupId>
 				<artifactId>tomcat-servlet-api</artifactId>
-				<version>8.0.28</version>
+				<version>${tomcat.version}</version>
 				<scope>provided</scope>
 			</dependency>
 		</dependencies>