/*
* 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.service;
import static org.hamcrest.CoreMatchers.is;
import static org.mockito.Mockito.doThrow;
import static org.mockito.Mockito.mock;
import static org.mule.runtime.module.service.LifecycleFilterServiceProxy.createLifecycleFilterServiceProxy;
import org.mule.runtime.api.exception.MuleException;
import org.mule.runtime.api.lifecycle.Startable;
import org.mule.runtime.api.lifecycle.Stoppable;
import org.mule.runtime.api.service.Service;
import org.mule.runtime.core.api.DefaultMuleException;
import org.mule.tck.junit4.AbstractMuleTestCase;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
public class LifecycleFilterServiceProxyTestCase extends AbstractMuleTestCase {
@Rule
public ExpectedException expected = ExpectedException.none();
@Test
public void avoidsStartExecution() throws Exception {
StartableService service = mock(StartableService.class);
final Startable serviceProxy = (Startable) createLifecycleFilterServiceProxy(service);
expected.expect(UnsupportedOperationException.class);
serviceProxy.start();
}
@Test
public void avoidsStopExecution() throws Exception {
StoppableService service = mock(StoppableService.class);
final Stoppable serviceProxy = (Stoppable) createLifecycleFilterServiceProxy(service);
expected.expect(UnsupportedOperationException.class);
serviceProxy.stop();
}
@Test
public void checkedExceptionThrownUnwrapped() throws Exception {
CheckedExceptionService checkExceptionService = mock(CheckedExceptionService.class);
DefaultMuleException checkedException = new DefaultMuleException("ERROR");
doThrow(checkedException).when(checkExceptionService).execute();
final CheckedExceptionService checkedExceptionServiceProxy =
(CheckedExceptionService) createLifecycleFilterServiceProxy(checkExceptionService);
expected.expect(is(checkedException));
checkedExceptionServiceProxy.execute();
}
@Test
public void uncheckedExceptionThrownUnwrapped() throws Exception {
UncheckedExceptionService uncheckedExceptionService = mock(UncheckedExceptionService.class);
RuntimeException uncheckedException = new RuntimeException();
doThrow(uncheckedException).when(uncheckedExceptionService).execute();
final UncheckedExceptionService uncheckedExceptionServiceProxy =
(UncheckedExceptionService) createLifecycleFilterServiceProxy(uncheckedExceptionService);
expected.expect(is(uncheckedException));
uncheckedExceptionServiceProxy.execute();
}
public interface StartableService extends Service, Startable {
}
public interface StoppableService extends Service, Stoppable {
}
public interface CheckedExceptionService extends Service {
void execute() throws MuleException;
}
public interface UncheckedExceptionService extends Service {
void execute();
}
}