/* * 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.core.routing.filters; import static java.util.Optional.empty; import static java.util.Optional.of; import static org.hamcrest.core.Is.is; import static org.hamcrest.core.IsNull.nullValue; import static org.junit.Assert.assertThat; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import static org.mule.tck.MuleTestUtils.createErrorMock; import org.mule.runtime.api.message.Error; import org.mule.runtime.api.message.Message; import org.mule.runtime.core.api.Event; import org.mule.runtime.core.internal.message.InternalMessage; import org.mule.runtime.core.internal.message.DefaultExceptionPayload; import org.mule.tck.junit4.AbstractMuleTestCase; import java.io.IOException; import org.junit.Test; public class ExceptionTypeFilterTestCase extends AbstractMuleTestCase { @Test public void testExceptionTypeFilterMessage() { ExceptionTypeFilter filter = new ExceptionTypeFilter(); assertThat(filter.getExpectedType(), nullValue()); Message m = Message.of("test"); assertThat(filter.accept(m, mock(Event.Builder.class)), is(false)); m = InternalMessage.builder(m).exceptionPayload(new DefaultExceptionPayload(new IllegalArgumentException("test"))).build(); assertThat(filter.accept(m, mock(Event.Builder.class)), is(true)); filter = new ExceptionTypeFilter(IOException.class); assertThat(filter.accept(m, mock(Event.Builder.class)), is(false)); m = InternalMessage.builder(m).exceptionPayload(new DefaultExceptionPayload(new IOException("test"))).build(); assertThat(filter.accept(m, mock(Event.Builder.class)), is(true)); } @Test public void testExceptionTypeFilterEvent() { Event event = mock(Event.class); ExceptionTypeFilter filter = new ExceptionTypeFilter(); assertThat(filter.getExpectedType(), nullValue()); Message m = Message.of("test"); assertThat(filter.accept(m, mock(Event.Builder.class)), is(false)); Exception exception = new IllegalArgumentException("test"); Error mockError = createErrorMock(exception); when(event.getError()).thenReturn(of(mockError)); m = InternalMessage.builder(m).build(); assertThat(filter.accept(event, mock(Event.Builder.class)), is(true)); when(event.getMessage()).thenReturn(m); when(event.getError()).thenReturn(empty()); filter = new ExceptionTypeFilter(IOException.class); assertThat(filter.accept(event, mock(Event.Builder.class)), is(false)); exception = new IOException("test"); mockError = createErrorMock(exception); when(event.getError()).thenReturn(of(mockError)); assertThat(filter.accept(event, mock(Event.Builder.class)), is(true)); } }