Skip to content

Commit

Permalink
Merge pull request #2 from seedstack/upgrade-nuun
Browse files Browse the repository at this point in the history
Upgrade nuun
  • Loading branch information
pith committed Nov 10, 2015
2 parents f7c8a4c + e3ca413 commit f46fa64
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 95 deletions.
38 changes: 6 additions & 32 deletions src/main/java/org/seedstack/javamail/internal/JavaMailPlugin.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,20 +7,18 @@
*/
package org.seedstack.javamail.internal;

import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.inject.AbstractModule;
import io.nuun.kernel.api.Plugin;
import io.nuun.kernel.api.plugin.InitState;
import io.nuun.kernel.api.plugin.PluginException;
import io.nuun.kernel.api.plugin.context.InitContext;
import io.nuun.kernel.core.AbstractPlugin;
import org.apache.commons.configuration.Configuration;
import org.seedstack.javamail.spi.SessionConfigurer;
import org.seedstack.seed.core.internal.application.ApplicationPlugin;
import org.seedstack.seed.core.spi.configuration.ConfigurationProvider;
import org.seedstack.seed.core.utils.SeedReflectionUtils;

import javax.mail.Session;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Map;

Expand All @@ -42,37 +40,15 @@ public String name() {

@Override
public InitState init(InitContext initContext) {
Configuration mailSessionsConfiguration = null;

for (Plugin deployedPlugin : initContext.pluginsRequired()) {
mailSessionsConfiguration = getPluginConfiguration(deployedPlugin);
}

failIfConfigurationIsAbsent(mailSessionsConfiguration);
Configuration mailSessionsConfiguration = initContext.dependency(ConfigurationProvider.class)
.getConfiguration().subset(JavaMailPlugin.CONFIGURATION_PREFIX);

SessionConfigurer configurer = new PropertyFileSessionConfigurer(mailSessionsConfiguration);
sessions.putAll(configurer.doConfigure());

return InitState.INITIALIZED;
}

void failIfConfigurationIsAbsent(Configuration mailSessionsConfiguration) {
if (mailSessionsConfiguration == null) {
throw new PluginException("Unable to find mail plugin configuration");
}
}

Configuration getPluginConfiguration(Plugin deployedPlugin) {
Configuration mailSessionsConfiguration = null;

if (deployedPlugin instanceof ApplicationPlugin) {
ApplicationPlugin applicationPlugin = (ApplicationPlugin) deployedPlugin;
mailSessionsConfiguration = applicationPlugin.getApplication().getConfiguration().subset(JavaMailPlugin.CONFIGURATION_PREFIX);
}

return mailSessionsConfiguration;
}

@Override
public Object nativeUnitModule() {
return new AbstractModule() {
Expand All @@ -88,9 +64,7 @@ protected void configure() {
}

@Override
public Collection<Class<? extends Plugin>> requiredPlugins() {
ArrayList<Class<? extends Plugin>> plugins = new ArrayList<Class<? extends Plugin>>();
plugins.add(ApplicationPlugin.class);
return plugins;
public Collection<Class<?>> requiredPlugins() {
return Lists.<Class<?>>newArrayList(ConfigurationProvider.class);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,26 +8,16 @@
package org.seedstack.javamail.internal;

import com.google.common.collect.Lists;
import org.seedstack.seed.Application;
import org.seedstack.seed.core.internal.application.ApplicationPlugin;
import io.nuun.kernel.api.Plugin;
import io.nuun.kernel.api.plugin.PluginException;
import io.nuun.kernel.api.plugin.context.Context;
import io.nuun.kernel.api.plugin.context.InitContext;
import org.apache.commons.configuration.Configuration;
import org.apache.commons.configuration.MapConfiguration;
import org.assertj.core.api.Condition;
import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
import org.seedstack.seed.core.spi.configuration.ConfigurationProvider;

import javax.mail.Session;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Properties;

import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.anyString;
Expand All @@ -37,82 +27,37 @@
public class JavaMailPluginTest {

private static JavaMailPlugin mailPlugin;
@Mock
private Context context;

@Mock
private InitContext initContext;

@Mock
private Plugin plugin;

@Mock
private ApplicationPlugin applicationPlugin;

@Mock
private Configuration configuration;

@Mock
private Application application;
private ConfigurationProvider configurationProvider;

@BeforeClass
public static void setUp() throws Exception {
mailPlugin = new JavaMailPlugin();
}

@Test(expected = PluginException.class)
public void test_fail_if_configuration_is_absent() {
mailPlugin.failIfConfigurationIsAbsent(null);
}

@Test
public void test_get_plugin_configuration() {
configureMocks();
when(applicationPlugin.getApplication().getConfiguration()).thenReturn(new MapConfiguration(new HashMap<String, Object>() {{
put("smtp", Session.getInstance(new Properties()));
}}));
final Configuration pluginConfiguration = mailPlugin.getPluginConfiguration(applicationPlugin);
assertThat(pluginConfiguration).isNotNull();
}

@Test
public void test_init() throws Exception {
mailPlugin.init(initContext());
configureMocks();
mailPlugin.init(initContext);
}

@Test
public void test_Required_Plugins() throws Exception {
final Collection<Class<? extends Plugin>> plugins = mailPlugin.requiredPlugins();
assertThat(plugins).isNotNull();
assertThat(plugins).isNotEmpty();
assertThat(plugins).hasSize(1);
assertThat(plugins).has(new Condition<Iterable<? extends Class<? extends Plugin>>>() {
@Override
public boolean matches(Iterable<? extends Class<? extends Plugin>> classes) {
return classes.iterator().next() != null;
}
});
final Collection<Class<?>> plugins = mailPlugin.requiredPlugins();
assertThat(plugins).containsOnly(ConfigurationProvider.class);
}

private void configureMocks() {
when(applicationPlugin.getApplication()).thenReturn(application);
when(initContext.dependency(ConfigurationProvider.class)).thenReturn(configurationProvider);
when(configurationProvider.getConfiguration()).thenReturn(configuration);
when(configuration.getList(anyString())).thenReturn(Lists.newArrayList());
when(configuration.subset(anyString())).thenReturn(configuration);
}

@SuppressWarnings("unchecked")
private InitContext initContext() {
configureMocks();

when(applicationPlugin.getApplication().getConfiguration()).thenReturn(configuration);
when(plugin.requiredPlugins()).thenReturn(new ArrayList<Class<? extends Plugin>>() {{
add(ApplicationPlugin.class);
}});

Collection pluginsRequired = new ArrayList<Plugin>();
pluginsRequired.add(applicationPlugin);
when(initContext.pluginsRequired()).thenReturn(pluginsRequired);

return initContext;
}
}

0 comments on commit f46fa64

Please sign in to comment.