From 649b34d4b46a22d25d13b25efae0ce2820646486 Mon Sep 17 00:00:00 2001
From: Daniel Gerhardt <daniel.gerhardt@mni.thm.de>
Date: Fri, 8 Aug 2014 11:22:57 +0200
Subject: [PATCH] Use separate configuration class for tests

---
 .../de/thm/arsnova/config/SecurityConfig.java |  23 +--
 .../arsnova/config/TestSecurityConfig.java    | 138 ++++++++++++++++++
 src/test/resources/test-config.xml            |  11 --
 3 files changed, 139 insertions(+), 33 deletions(-)
 create mode 100644 src/test/java/de/thm/arsnova/config/TestSecurityConfig.java

diff --git a/src/main/java/de/thm/arsnova/config/SecurityConfig.java b/src/main/java/de/thm/arsnova/config/SecurityConfig.java
index f0c380d48..da021fe18 100644
--- a/src/main/java/de/thm/arsnova/config/SecurityConfig.java
+++ b/src/main/java/de/thm/arsnova/config/SecurityConfig.java
@@ -63,6 +63,7 @@ import de.thm.arsnova.security.DbUserDetailsService;
 @Configuration
 @EnableGlobalMethodSecurity(prePostEnabled = true)
 @EnableWebSecurity
+@Profile("!test")
 public class SecurityConfig extends WebSecurityConfigurerAdapter implements ServletContextAware {
 	private final Logger logger = LoggerFactory.getLogger(SecurityConfig.class);
 
@@ -214,13 +215,11 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter implements Serv
 
 	// LDAP Authentication Configuration
 
-	@Profile("!test")
 	@Bean
 	public LdapAuthenticationProvider ldapAuthenticationProvider() throws Exception {
 		return new LdapAuthenticationProvider(ldapAuthenticator(), ldapAuthoritiesPopulator());
 	}
 
-	@Profile("!test")
 	@Bean
 	public LdapContextSource ldapContextSource() throws Exception {
 		DefaultSpringSecurityContextSource contextSource = new DefaultSpringSecurityContextSource(ldapUrl);
@@ -231,7 +230,6 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter implements Serv
 		return contextSource;
 	}
 
-	@Profile("!test")
 	@Bean
 	public LdapAuthenticator ldapAuthenticator() throws Exception {
 		BindAuthenticator authenticator = new BindAuthenticator(ldapContextSource());
@@ -240,7 +238,6 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter implements Serv
 		return authenticator;
 	}
 
-	@Profile("!test")
 	@Bean
 	public LdapAuthoritiesPopulator ldapAuthoritiesPopulator() throws Exception {
 		return new DefaultLdapAuthoritiesPopulator(ldapContextSource(), null);
@@ -248,7 +245,6 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter implements Serv
 
 	// CAS Authentication Configuration
 
-	@Profile("!test")
 	@Bean
 	public CasAuthenticationProvider casAuthenticationProvider() {
 		CasAuthenticationProvider authProvider = new CasAuthenticationProvider();
@@ -260,13 +256,11 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter implements Serv
 		return authProvider;
 	}
 
-	@Profile("!test")
 	@Bean
 	public CasUserDetailsService casUserDetailsService() {
 		return new CasUserDetailsService();
 	}
 
-	@Profile("!test")
 	@Bean
 	public ServiceProperties casServiceProperties() {
 		ServiceProperties properties = new ServiceProperties();
@@ -276,13 +270,11 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter implements Serv
 		return properties;
 	}
 
-	@Profile("!test")
 	@Bean
 	public Cas20ProxyTicketValidator casTicketValidator() {
 		return new Cas20ProxyTicketValidator(casUrl);
 	}
 
-	@Profile("!test")
 	@Bean
 	public CasAuthenticationEntryPoint casAuthenticationEntryPoint() {
 		CasAuthenticationEntryPoint entryPoint = new CasAuthenticationEntryPoint();
@@ -292,7 +284,6 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter implements Serv
 		return entryPoint;
 	}
 
-	@Profile("!test")
 	@Bean
 	public CasAuthenticationFilter casAuthenticationFilter() throws Exception {
 		CasAuthenticationFilter filter = new CasAuthenticationFilter();
@@ -303,7 +294,6 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter implements Serv
 		return filter;
 	}
 
-	@Profile("!test")
 	@Bean
 	public LogoutFilter casLogoutFilter() {
 		LogoutFilter filter = new LogoutFilter(casLogoutSuccessHandler(), logoutHandler());
@@ -312,7 +302,6 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter implements Serv
 		return filter;
 	}
 
-	@Profile("!test")
 	@Bean
 	public LogoutSuccessHandler casLogoutSuccessHandler() {
 		CASLogoutSuccessHandler handler = new CASLogoutSuccessHandler();
@@ -324,7 +313,6 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter implements Serv
 
 	// Facebook Authentication Configuration
 
-	@Profile("!test")
 	@Bean
 	public OAuthAuthenticationEntryPoint facebookEntryPoint() {
 		final OAuthAuthenticationEntryPoint entryPoint = new OAuthAuthenticationEntryPoint();
@@ -333,7 +321,6 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter implements Serv
 		return entryPoint;
 	}
 
-	@Profile("!test")
 	@Bean
 	public FacebookProvider facebookProvider() {
 		final FacebookProvider provider = new FacebookProvider();
@@ -344,7 +331,6 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter implements Serv
 		return provider;
 	}
 
-	@Profile("!test")
 	@Bean
 	public OAuthAuthenticationFilter facebookFilter() throws Exception {
 		final OAuthAuthenticationFilter filter = new OAuthAuthenticationFilter("/j_spring_facebook_security_check");
@@ -356,7 +342,6 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter implements Serv
 		return filter;
 	}
 
-	@Profile("!test")
 	@Bean
 	public OAuthAuthenticationProvider facebookAuthProvider() {
 		final OAuthAuthenticationProvider authProvider = new OAuthAuthenticationProvider();
@@ -367,7 +352,6 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter implements Serv
 
 	// Twitter Authentication Configuration
 
-	@Profile("!test")
 	@Bean
 	public TwitterProvider twitterProvider() {
 		final TwitterProvider provider = new TwitterProvider();
@@ -378,7 +362,6 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter implements Serv
 		return provider;
 	}
 
-	@Profile("!test")
 	@Bean
 	public OAuthAuthenticationFilter twitterFilter() throws Exception {
 		final OAuthAuthenticationFilter filter = new OAuthAuthenticationFilter("/j_spring_twitter_security_check");
@@ -389,7 +372,6 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter implements Serv
 		return filter;
 	}
 
-	@Profile("!test")
 	@Bean
 	public OAuthAuthenticationProvider twitterAuthProvider() {
 		final OAuthAuthenticationProvider authProvider = new OAuthAuthenticationProvider();
@@ -400,7 +382,6 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter implements Serv
 
 	// Google Authentication Configuration
 
-	@Profile("!test")
 	@Bean
 	public Google2Provider googleProvider() {
 		final Google2Provider provider = new Google2Provider();
@@ -412,7 +393,6 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter implements Serv
 		return provider;
 	}
 
-	@Profile("!test")
 	@Bean
 	public OAuthAuthenticationFilter googleFilter() throws Exception {
 		final OAuthAuthenticationFilter filter = new OAuthAuthenticationFilter("/j_spring_google_security_check");
@@ -424,7 +404,6 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter implements Serv
 		return filter;
 	}
 
-	@Profile("!test")
 	@Bean
 	public OAuthAuthenticationProvider googleAuthProvider() {
 		final OAuthAuthenticationProvider authProvider = new OAuthAuthenticationProvider();
diff --git a/src/test/java/de/thm/arsnova/config/TestSecurityConfig.java b/src/test/java/de/thm/arsnova/config/TestSecurityConfig.java
new file mode 100644
index 000000000..012c40b7b
--- /dev/null
+++ b/src/test/java/de/thm/arsnova/config/TestSecurityConfig.java
@@ -0,0 +1,138 @@
+package de.thm.arsnova.config;
+
+import org.jasig.cas.client.validation.Cas20ProxyTicketValidator;
+import org.scribe.up.provider.impl.FacebookProvider;
+import org.scribe.up.provider.impl.Google2Provider;
+import org.scribe.up.provider.impl.TwitterProvider;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Profile;
+import org.springframework.security.authentication.AuthenticationManager;
+import org.springframework.security.cas.ServiceProperties;
+import org.springframework.security.cas.authentication.CasAuthenticationProvider;
+import org.springframework.security.cas.web.CasAuthenticationEntryPoint;
+import org.springframework.security.cas.web.CasAuthenticationFilter;
+import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
+import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
+import org.springframework.security.config.annotation.web.builders.HttpSecurity;
+import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
+import org.springframework.security.core.session.SessionRegistry;
+import org.springframework.security.core.session.SessionRegistryImpl;
+
+import com.github.leleuj.ss.oauth.client.authentication.OAuthAuthenticationProvider;
+import com.github.leleuj.ss.oauth.client.web.OAuthAuthenticationEntryPoint;
+import com.github.leleuj.ss.oauth.client.web.OAuthAuthenticationFilter;
+
+import de.thm.arsnova.CasUserDetailsService;
+
+@Configuration
+@EnableGlobalMethodSecurity(prePostEnabled = true)
+@EnableWebSecurity
+@Profile("test")
+public class TestSecurityConfig extends SecurityConfig {
+	@Override
+	protected void configure(HttpSecurity http) {};
+
+	@Override
+	protected void configure(AuthenticationManagerBuilder auth) throws Exception {
+		auth.inMemoryAuthentication()
+			.withUser("ptsr00")
+			.password("secret")
+			.authorities("ROLE_USER")
+		;
+	}
+
+	@Bean
+	@Override
+	public AuthenticationManager authenticationManagerBean() throws Exception {
+		return super.authenticationManager();
+	}
+
+	@Bean
+	public SessionRegistry sessionRegistry() {
+		return new SessionRegistryImpl();
+	}
+
+
+	/* Override for test unnecessary Beans with null */
+
+	@Override
+	public CasAuthenticationProvider casAuthenticationProvider() {
+		return null;
+	}
+
+	@Override
+	public CasUserDetailsService casUserDetailsService() {
+		return null;
+	}
+
+	@Override
+	public ServiceProperties casServiceProperties() {
+		return null;
+	}
+
+	@Override
+	public Cas20ProxyTicketValidator casTicketValidator() {
+		return null;
+	}
+
+	@Override
+	public CasAuthenticationEntryPoint casAuthenticationEntryPoint() {
+		return null;
+	}
+
+	@Override
+	public CasAuthenticationFilter casAuthenticationFilter() {
+		return null;
+	}
+
+	@Override
+	public FacebookProvider facebookProvider() {
+		return null;
+	}
+
+	@Override
+	public OAuthAuthenticationFilter facebookFilter() {
+		return null;
+	}
+
+	@Override
+	public OAuthAuthenticationProvider facebookAuthProvider() {
+		return null;
+	}
+
+	@Override
+	public OAuthAuthenticationEntryPoint facebookEntryPoint() {
+		return null;
+	}
+
+	@Override
+	public Google2Provider googleProvider() {
+		return null;
+	}
+
+	@Override
+	public OAuthAuthenticationFilter googleFilter() {
+		return null;
+	}
+
+	@Override
+	public OAuthAuthenticationProvider googleAuthProvider() {
+		return null;
+	}
+
+	@Override
+	public TwitterProvider twitterProvider() {
+		return null;
+	}
+
+	@Override
+	public OAuthAuthenticationFilter twitterFilter() {
+		return null;
+	}
+
+	@Override
+	public OAuthAuthenticationProvider twitterAuthProvider() {
+		return null;
+	}
+}
diff --git a/src/test/resources/test-config.xml b/src/test/resources/test-config.xml
index dcef7e9a1..efaf6fd87 100644
--- a/src/test/resources/test-config.xml
+++ b/src/test/resources/test-config.xml
@@ -25,15 +25,4 @@
 			</map>
 		</property>
 	</bean>
-
-	<!--
-	<security:authentication-manager>
-		<security:authentication-provider>
-			<security:user-service>
-				<security:user name="ptsr00" password="secret"
-					authorities="" />
-			</security:user-service>
-		</security:authentication-provider>
-	</security:authentication-manager>
-	-->
 </beans>
-- 
GitLab