/* * 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.transformer.simple; import static java.nio.charset.StandardCharsets.UTF_8; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import org.mule.runtime.core.api.Event; import org.mule.runtime.core.api.MuleContext; import org.mule.runtime.core.api.el.ExtendedExpressionManager; import org.mule.runtime.core.internal.message.InternalMessage; import org.mule.runtime.api.lifecycle.InitialisationException; import org.mule.runtime.core.api.transformer.TransformerException; import org.mule.runtime.core.util.IOUtils; import org.mule.tck.size.SmallTest; import java.io.IOException; import org.junit.Before; import org.junit.Test; @SmallTest public class ParseTemplateTransformerTestCase { private static final String LOCATION = "error.html"; private static final String INVALID_LOCATION = "wrong_error.html"; private ParseTemplateTransformer parseTemplateTransformer; private Event mockMuleEvent = mock(Event.class); private InternalMessage mockMuleMessage = mock(InternalMessage.class); private MuleContext mockMuleContext = mock(MuleContext.class); private ExtendedExpressionManager mockExpressionManager = mock(ExtendedExpressionManager.class); @Before public void setUp() { parseTemplateTransformer = new ParseTemplateTransformer(); parseTemplateTransformer.setMuleContext(mockMuleContext); when(mockMuleEvent.getMessage()).thenReturn(mockMuleMessage); when(mockMuleContext.getExpressionManager()).thenReturn(mockExpressionManager); } @Test(expected = IllegalArgumentException.class) public void testParseTemplateNullTemplate() throws TransformerException, InitialisationException { parseTemplateTransformer.setLocation(LOCATION); parseTemplateTransformer.transformMessage(mockMuleEvent, UTF_8); } @Test(expected = InitialisationException.class) public void testParseTemplateNullLocation() throws TransformerException, InitialisationException { parseTemplateTransformer.setLocation(null); parseTemplateTransformer.initialise(); parseTemplateTransformer.transformMessage(mockMuleEvent, UTF_8); } @Test(expected = InitialisationException.class) public void testParseTemplateInvalidLocation() throws TransformerException, InitialisationException { parseTemplateTransformer.setLocation(INVALID_LOCATION); parseTemplateTransformer.initialise(); parseTemplateTransformer.transformMessage(mockMuleEvent, UTF_8); } @Test public void testParseTemplate() throws TransformerException, InitialisationException, IOException { parseTemplateTransformer.setLocation(LOCATION); parseTemplateTransformer.initialise(); when(mockMuleMessage.getInboundProperty("errorMessage")).thenReturn("ERROR!!!"); String expectedExpression = IOUtils.getResourceAsString(LOCATION, this.getClass()); when(mockExpressionManager.parse(expectedExpression, mockMuleEvent, null)).thenReturn("Parsed"); Object response = parseTemplateTransformer.transformMessage(mockMuleEvent, UTF_8); assertNotNull(response); assertEquals("Parsed", response); // Call a second time to make sure the template is stored once the transformer has been initialized response = parseTemplateTransformer.transformMessage(mockMuleEvent, UTF_8); assertNotNull(response); assertEquals("Parsed", response); } }