/* * Copyright (c) MuleSoft, Inc. All rights reserved. http://www.mulesoft.com * The software in this package is published under the terms of the CPAL v1.0 * license, a copy of which has been included with this distribution in the * LICENSE.txt file. */ package org.mule.runtime.module.deployment.impl.internal.artifact; import static java.lang.Thread.currentThread; import static org.hamcrest.core.Is.is; import static org.hamcrest.core.IsNull.notNullValue; import static org.junit.Assert.assertThat; import static org.mockito.Mockito.mock; import static org.mule.runtime.core.config.bootstrap.ArtifactType.DOMAIN; import static org.mule.runtime.module.deployment.impl.internal.artifact.ArtifactContextBuilder.CLASS_LOADER_REPOSITORY_CANNOT_BE_NULL; import static org.mule.runtime.module.deployment.impl.internal.artifact.ArtifactContextBuilder.CLASS_LOADER_REPOSITORY_WAS_NOT_SET; import static org.mule.runtime.module.deployment.impl.internal.artifact.ArtifactContextBuilder.EXECUTION_CLASSLOADER_WAS_NOT_SET; import static org.mule.runtime.module.deployment.impl.internal.artifact.ArtifactContextBuilder.INSTALLATION_DIRECTORY_MUST_BE_A_DIRECTORY; import static org.mule.runtime.module.deployment.impl.internal.artifact.ArtifactContextBuilder.MULE_CONTEXT_ARTIFACT_PROPERTIES_CANNOT_BE_NULL; import static org.mule.runtime.module.deployment.impl.internal.artifact.ArtifactContextBuilder.ONLY_APPLICATIONS_ARE_ALLOWED_TO_HAVE_A_PARENT_CONTEXT; import static org.mule.runtime.module.deployment.impl.internal.artifact.ArtifactContextBuilder.SERVICE_CONFIGURATOR_CANNOT_BE_NULL; import static org.mule.runtime.module.deployment.impl.internal.artifact.ArtifactContextBuilder.SERVICE_REPOSITORY_CANNOT_BE_NULL; import static org.mule.runtime.module.deployment.impl.internal.artifact.ArtifactContextBuilder.newBuilder; import org.mule.runtime.core.api.MuleContext; import org.mule.runtime.module.artifact.classloader.ClassLoaderRepository; import org.mule.tck.config.TestServicesConfigurationBuilder; import org.mule.tck.junit4.AbstractMuleTestCase; import org.junit.ClassRule; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; import org.junit.rules.TemporaryFolder; public class ArtifactContextBuilderTestCase extends AbstractMuleTestCase { @ClassRule public static TemporaryFolder temporaryFolder = new TemporaryFolder(); @Rule public ExpectedException expectedException = ExpectedException.none(); @Test public void emptyBuilder() throws Exception { MuleContext muleContext = newBuilder(new TestServicesConfigurationBuilder()).setExecutionClassloader(currentThread().getContextClassLoader()) .setClassLoaderRepository(mock(ClassLoaderRepository.class)).build().getMuleContext(); assertThat(muleContext, notNullValue()); assertThat(muleContext.isInitialised(), is(true)); muleContext.start(); assertThat(muleContext.isStarted(), is(true)); } @Test public void buildWithoutClassloader() throws Exception { expectedException.expectMessage(EXECUTION_CLASSLOADER_WAS_NOT_SET); newBuilder().build(); } @Test public void setNullArtifactProperties() throws Exception { expectedException.expectMessage(MULE_CONTEXT_ARTIFACT_PROPERTIES_CANNOT_BE_NULL); newBuilder().setArtifactProperties(null); } @Test public void setNullClassLoaderRepository() throws Exception { expectedException.expectMessage(CLASS_LOADER_REPOSITORY_CANNOT_BE_NULL); newBuilder().setClassLoaderRepository(null); } @Test public void setNullServiceConfigurator() throws Exception { expectedException.expectMessage(SERVICE_CONFIGURATOR_CANNOT_BE_NULL); newBuilder().withServiceConfigurator(null); } @Test public void buildWithoutClassloaderRepository() throws Exception { expectedException.expectMessage(CLASS_LOADER_REPOSITORY_WAS_NOT_SET); newBuilder().setExecutionClassloader(Thread.currentThread().getContextClassLoader()).build(); } @Test public void setRegularFileInstallationLocation() throws Exception { expectedException.expectMessage(INSTALLATION_DIRECTORY_MUST_BE_A_DIRECTORY); newBuilder().setArtifactInstallationDirectory(temporaryFolder.newFile()); } @Test public void buildUsingDomainAndParentContext() throws Exception { expectedException.expectMessage(ONLY_APPLICATIONS_ARE_ALLOWED_TO_HAVE_A_PARENT_CONTEXT); newBuilder().setArtifactType(DOMAIN) .setExecutionClassloader(Thread.currentThread().getContextClassLoader()).setParentContext(mock(MuleContext.class)) .setClassLoaderRepository(mock(ClassLoaderRepository.class)) .build(); } @Test public void setNullServiceRepository() throws Exception { expectedException.expectMessage(SERVICE_REPOSITORY_CANNOT_BE_NULL); newBuilder().setServiceRepository(null); } }