From 7ee2f509049c51f252adeeb023cb5ca3ba0f35f2 Mon Sep 17 00:00:00 2001
From: Paul-Christian Volkmer <paul-christian.volkmer@mni.thm.de>
Date: Mon, 26 May 2014 15:55:27 +0200
Subject: [PATCH] Added test profile to make ARSnova testable on host with
 running ARSnova

---
 .../de/thm/arsnova/config/ExtraConfig.java    | 39 ++++++++++++++++++-
 .../webapp/WEB-INF/spring/spring-main.xml     |  5 ---
 .../arsnova/services/FeedbackServiceTest.java |  3 +-
 .../arsnova/services/QuestionServiceTest.java |  2 +
 .../arsnova/services/SessionServiceTest.java  |  2 +
 .../services/StatisticsServiceTest.java       |  2 +
 .../thm/arsnova/services/UserServiceTest.java |  2 +
 7 files changed, 48 insertions(+), 7 deletions(-)

diff --git a/src/main/java/de/thm/arsnova/config/ExtraConfig.java b/src/main/java/de/thm/arsnova/config/ExtraConfig.java
index 4f02a379f..3295ed67e 100644
--- a/src/main/java/de/thm/arsnova/config/ExtraConfig.java
+++ b/src/main/java/de/thm/arsnova/config/ExtraConfig.java
@@ -1,8 +1,12 @@
 package de.thm.arsnova.config;
 
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Profile;
 import org.springframework.context.support.PropertySourcesPlaceholderConfigurer;
 import org.springframework.core.env.Environment;
 import org.springframework.core.io.ClassPathResource;
@@ -11,13 +15,22 @@ import org.springframework.core.io.Resource;
 
 import de.thm.arsnova.connector.client.ConnectorClient;
 import de.thm.arsnova.connector.client.ConnectorClientImpl;
+import de.thm.arsnova.socket.ARSnovaSocketIOServer;
 
 @Configuration
 public class ExtraConfig {
 
+	private final Logger LOGGER = LoggerFactory.getLogger(ExtraConfig.class);
+
 	@Autowired
 	private Environment env;
 
+	@Value(value = "${socketio.ip}") private String socketIp;
+	@Value(value = "${socketio.port}") private int socketPort;
+	@Value(value = "${security.ssl}") private boolean socketUseSll;
+	@Value(value = "${security.keystore}") private String socketKeystore;
+	@Value(value = "${security.storepass}") private String socketStorepass;
+
 	@Bean
 	public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
 		PropertySourcesPlaceholderConfigurer configurer = new PropertySourcesPlaceholderConfigurer();
@@ -32,7 +45,7 @@ public class ExtraConfig {
 
 	@Bean(name = "connectorClient")
 	public ConnectorClient connectorClient() {
-		if (! "true".equals(env.getProperty("connector.enable"))) {
+		if (!"true".equals(env.getProperty("connector.enable"))) {
 			return null;
 		}
 
@@ -42,4 +55,28 @@ public class ExtraConfig {
 		connectorClient.setPassword(env.getProperty("connector.password"));
 		return connectorClient;
 	}
+
+	@Profile("!test")
+	@Bean(name = "socketServer", initMethod = "startServer", destroyMethod = "stopServer")
+	public ARSnovaSocketIOServer socketServer() {
+		ARSnovaSocketIOServer socketServer = new ARSnovaSocketIOServer();
+		socketServer.setHostIp(socketIp);
+		socketServer.setPortNumber(socketPort);
+		socketServer.setUseSSL(socketUseSll);
+		socketServer.setKeystore(socketKeystore);
+		socketServer.setStorepass(socketStorepass);
+		return socketServer;
+	}
+
+	@Profile("test")
+	@Bean(name = "socketServer", initMethod = "startServer", destroyMethod = "stopServer")
+	public ARSnovaSocketIOServer socketTestServer() {
+		ARSnovaSocketIOServer socketServer = new ARSnovaSocketIOServer();
+		socketServer.setHostIp(socketIp);
+		socketServer.setPortNumber(socketPort + 1234);
+		socketServer.setUseSSL(socketUseSll);
+		socketServer.setKeystore(socketKeystore);
+		socketServer.setStorepass(socketStorepass);
+		return socketServer;
+	}
 }
diff --git a/src/main/webapp/WEB-INF/spring/spring-main.xml b/src/main/webapp/WEB-INF/spring/spring-main.xml
index 31686a7ec..d096984dd 100644
--- a/src/main/webapp/WEB-INF/spring/spring-main.xml
+++ b/src/main/webapp/WEB-INF/spring/spring-main.xml
@@ -33,11 +33,6 @@
 		<aop:include name="userSessionAspect" />
 	</aop:aspectj-autoproxy>
 
-	<bean id="socketServer" class="de.thm.arsnova.socket.ARSnovaSocketIOServer"
-		init-method="startServer" destroy-method="stopServer" scope="singleton"
-		p:portNumber="${socketio.port}" p:hostIp="${socketio.ip}" p:useSSL="${security.ssl}"
-		p:keystore="${security.keystore}" p:storepass="${security.storepass}" />
-
 	<bean id="userSessionAspect" class="de.thm.arsnova.aop.UserSessionAspect" />
 
 	<bean id="userService" scope="singleton" class="de.thm.arsnova.services.UserService" />
diff --git a/src/test/java/de/thm/arsnova/services/FeedbackServiceTest.java b/src/test/java/de/thm/arsnova/services/FeedbackServiceTest.java
index 091d39d79..671a7898c 100644
--- a/src/test/java/de/thm/arsnova/services/FeedbackServiceTest.java
+++ b/src/test/java/de/thm/arsnova/services/FeedbackServiceTest.java
@@ -27,6 +27,7 @@ import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
+import org.springframework.test.context.ActiveProfiles;
 import org.springframework.test.context.ContextConfiguration;
 import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
 
@@ -42,6 +43,7 @@ import de.thm.arsnova.exceptions.NotFoundException;
 		"file:src/main/webapp/WEB-INF/spring/spring-security.xml",
 		"file:src/test/resources/test-config.xml"
 })
+@ActiveProfiles("test")
 public class FeedbackServiceTest {
 
 	@Autowired
@@ -75,7 +77,6 @@ public class FeedbackServiceTest {
 		feedbackService.saveFeedback("87654321", 3, new TestUser("testuser36"));
 		feedbackService.saveFeedback("87654321", 3, new TestUser("testuser37"));
 
-
 		feedbackService.saveFeedback("18273645", 0, new TestUser("testuser01"));
 		feedbackService.saveFeedback("18273645", 0, new TestUser("testuser02"));
 		feedbackService.saveFeedback("18273645", 1, new TestUser("testuser11"));
diff --git a/src/test/java/de/thm/arsnova/services/QuestionServiceTest.java b/src/test/java/de/thm/arsnova/services/QuestionServiceTest.java
index eefc6893b..64f8832bf 100644
--- a/src/test/java/de/thm/arsnova/services/QuestionServiceTest.java
+++ b/src/test/java/de/thm/arsnova/services/QuestionServiceTest.java
@@ -34,6 +34,7 @@ import org.springframework.security.authentication.AuthenticationCredentialsNotF
 import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
 import org.springframework.security.core.GrantedAuthority;
 import org.springframework.security.core.context.SecurityContextHolder;
+import org.springframework.test.context.ActiveProfiles;
 import org.springframework.test.context.ContextConfiguration;
 import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
 
@@ -50,6 +51,7 @@ import de.thm.arsnova.exceptions.NotFoundException;
 		"file:src/main/webapp/WEB-INF/spring/spring-security.xml",
 		"file:src/test/resources/test-config.xml"
 })
+@ActiveProfiles("test")
 public class QuestionServiceTest {
 
 	@Autowired
diff --git a/src/test/java/de/thm/arsnova/services/SessionServiceTest.java b/src/test/java/de/thm/arsnova/services/SessionServiceTest.java
index 986a54f01..a01f239f7 100644
--- a/src/test/java/de/thm/arsnova/services/SessionServiceTest.java
+++ b/src/test/java/de/thm/arsnova/services/SessionServiceTest.java
@@ -41,6 +41,7 @@ import org.springframework.security.authentication.AuthenticationCredentialsNotF
 import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
 import org.springframework.security.core.GrantedAuthority;
 import org.springframework.security.core.context.SecurityContextHolder;
+import org.springframework.test.context.ActiveProfiles;
 import org.springframework.test.context.ContextConfiguration;
 import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
 import org.springframework.test.util.ReflectionTestUtils;
@@ -59,6 +60,7 @@ import de.thm.arsnova.exceptions.NotFoundException;
 		"file:src/main/webapp/WEB-INF/spring/spring-security.xml",
 		"file:src/test/resources/test-config.xml"
 })
+@ActiveProfiles("test")
 public class SessionServiceTest {
 
 	@Autowired
diff --git a/src/test/java/de/thm/arsnova/services/StatisticsServiceTest.java b/src/test/java/de/thm/arsnova/services/StatisticsServiceTest.java
index aca18022e..0e253786d 100644
--- a/src/test/java/de/thm/arsnova/services/StatisticsServiceTest.java
+++ b/src/test/java/de/thm/arsnova/services/StatisticsServiceTest.java
@@ -11,6 +11,7 @@ import org.junit.runner.RunWith;
 import org.mockito.InjectMocks;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
+import org.springframework.test.context.ActiveProfiles;
 import org.springframework.test.context.ContextConfiguration;
 import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
 
@@ -24,6 +25,7 @@ import de.thm.arsnova.entities.Statistics;
 		"file:src/main/webapp/WEB-INF/spring/spring-security.xml",
 		"file:src/test/resources/test-config.xml"
 })
+@ActiveProfiles("test")
 public class StatisticsServiceTest {
 
 	@InjectMocks
diff --git a/src/test/java/de/thm/arsnova/services/UserServiceTest.java b/src/test/java/de/thm/arsnova/services/UserServiceTest.java
index 687e51cff..e9b349ac5 100644
--- a/src/test/java/de/thm/arsnova/services/UserServiceTest.java
+++ b/src/test/java/de/thm/arsnova/services/UserServiceTest.java
@@ -24,10 +24,12 @@ import org.springframework.security.authentication.AnonymousAuthenticationToken;
 import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
 import org.springframework.security.core.GrantedAuthority;
 import org.springframework.security.core.authority.SimpleGrantedAuthority;
+import org.springframework.test.context.ActiveProfiles;
 
 import de.thm.arsnova.entities.User;
 
 @RunWith(BlockJUnit4ClassRunner.class)
+@ActiveProfiles("test")
 public class UserServiceTest {
 
 	private static final ConcurrentHashMap<UUID, User> socketid2user = new ConcurrentHashMap<UUID, User>();
-- 
GitLab