Commit 72aae34b authored by Andy Wilkinson's avatar Andy Wilkinson

Merge pull request #5032 from Matt Benson

* gh-5032:
  Fix logic for disabling plugins in CrshAutoConfiguration
parents aa175996 2a9e6c40
/*
* Copyright 2012-2015 the original author or authors.
* Copyright 2012-2016 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
......@@ -111,6 +111,7 @@ import org.springframework.util.StringUtils;
* {@code shell.command_path_patterns} in your application configuration.
*
* @author Christian Dupuis
* @author Matt Benson
* @see ShellProperties
*/
@Configuration
......@@ -395,11 +396,11 @@ public class CrshAutoConfiguration {
pluginClasses.add(plugin.getClass());
for (Class<?> pluginClass : pluginClasses) {
if (isEnabled(pluginClass)) {
return true;
if (!isEnabled(pluginClass)) {
return false;
}
}
return false;
return true;
}
private boolean isEnabled(Class<?> pluginClass) {
......
/*
* Copyright 2012-2015 the original author or authors.
* Copyright 2012-2016 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
......@@ -25,11 +25,13 @@ import java.util.UUID;
import org.crsh.auth.AuthenticationPlugin;
import org.crsh.auth.JaasAuthenticationPlugin;
import org.crsh.lang.impl.groovy.GroovyRepl;
import org.crsh.lang.impl.java.JavaLanguage;
import org.crsh.lang.spi.Language;
import org.crsh.plugin.PluginContext;
import org.crsh.plugin.PluginLifeCycle;
import org.crsh.plugin.ResourceKind;
import org.crsh.telnet.term.processor.ProcessorIOHandler;
import org.crsh.telnet.term.spi.TermIOHandler;
import org.crsh.vfs.Resource;
import org.junit.After;
import org.junit.Test;
......@@ -51,10 +53,13 @@ import org.springframework.security.core.AuthenticationException;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
import static org.hamcrest.CoreMatchers.hasItem;
import static org.hamcrest.CoreMatchers.isA;
import static org.hamcrest.CoreMatchers.not;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue;
/**
......@@ -63,6 +68,7 @@ import static org.junit.Assert.assertTrue;
* @author Christian Dupuis
* @author Andreas Ahlenstorf
* @author Eddú Meléndez
* @author Matt Benson
*/
@SuppressWarnings({ "rawtypes", "unchecked" })
public class CrshAutoConfigurationTests {
......@@ -80,15 +86,18 @@ public class CrshAutoConfigurationTests {
public void testDisabledPlugins() throws Exception {
MockEnvironment env = new MockEnvironment();
env.setProperty("shell.disabled_plugins",
"GroovyREPL, termIOHandler, org.crsh.auth.AuthenticationPlugin");
"termIOHandler, org.crsh.auth.AuthenticationPlugin, javaLanguage");
load(env);
PluginLifeCycle lifeCycle = this.context.getBean(PluginLifeCycle.class);
assertNotNull(lifeCycle);
assertNull(lifeCycle.getContext().getPlugin(GroovyRepl.class));
assertNull(lifeCycle.getContext().getPlugin(ProcessorIOHandler.class));
assertNull(lifeCycle.getContext().getPlugin(JaasAuthenticationPlugin.class));
assertThat(lifeCycle.getContext().getPlugins(TermIOHandler.class),
not(hasItem(isA(ProcessorIOHandler.class))));
assertThat(lifeCycle.getContext().getPlugins(AuthenticationPlugin.class),
not(hasItem(isA(JaasAuthenticationPlugin.class))));
assertThat(lifeCycle.getContext().getPlugins(Language.class),
not(hasItem(isA(JavaLanguage.class))));
}
@Test
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment