View Javadoc

1   /*
2    * $Id: ValueExtractorTransformerConfigTestCase.java 23202 2011-10-17 21:16:01Z pablo.kraan $
3    * --------------------------------------------------------------------------------------
4    * Copyright (c) MuleSoft, Inc.  All rights reserved.  http://www.mulesoft.com
5    *
6    * The software in this package is published under the terms of the CPAL v1.0
7    * license, a copy of which has been included with this distribution in the
8    * LICENSE.txt file.
9    */
10  
11  package org.mule.transformers.simple;
12  
13  import org.mule.api.transformer.Transformer;
14  import org.mule.tck.junit4.FunctionalTestCase;
15  import org.mule.transformer.simple.ValueExtractorTransformer;
16  
17  import java.util.ArrayList;
18  import java.util.List;
19  
20  import org.junit.Before;
21  import org.junit.Test;
22  
23  import static org.junit.Assert.assertEquals;
24  import static org.junit.Assert.assertTrue;
25  
26  public class ValueExtractorTransformerConfigTestCase extends FunctionalTestCase
27  {
28  
29      private List<ValueExtractorTransformer.ValueExtractorTemplate> expectedTemplates;
30      private ValueExtractorTransformer.ValueExtractorTemplate template1;
31      private ValueExtractorTransformer.ValueExtractorTemplate template2;
32      private String expectedSource;
33  
34      @Override
35      protected String getConfigResources()
36      {
37          return "value-extractor-transformer-config.xml";
38      }
39  
40      @Before
41      public void setUp()
42      {
43          expectedTemplates = new ArrayList<ValueExtractorTransformer.ValueExtractorTemplate>();
44  
45          template1 = new ValueExtractorTransformer.ValueExtractorTemplate();
46          template1.setPattern("TEST(\\w+)TEST");
47          template1.setTarget("#[header:INVOCATION:propName1]");
48          template1.setFailIfNoMatch(false);
49          template1.setDefaultValue("foo");
50  
51          template2 = new ValueExtractorTransformer.ValueExtractorTemplate();
52          template2.setPattern("test(\\w+)test");
53          template2.setTarget("#[header:OUTBOUND:propName2]");
54          template2.setFailIfNoMatch(true);
55      }
56  
57      @Test
58      public void testConfiguresValueExtractor() throws Exception
59      {
60          expectedSource = "#[payload]";
61          expectedTemplates.add(template1);
62          expectedTemplates.add(template2);
63  
64          ValueExtractorTransformer valueExtractorTransformer = getValueExtractor("valueExtractor1");
65  
66          assertExpectedValueExtractor(valueExtractorTransformer);
67      }
68  
69      @Test
70      public void testDefaultExpression() throws Exception
71      {
72          expectedSource = "#[payload:]";
73          expectedTemplates.add(template1);
74  
75          ValueExtractorTransformer valueExtractorTransformer = getValueExtractor("valueExtractor2");
76  
77          assertExpectedValueExtractor(valueExtractorTransformer);
78      }
79  
80      private ValueExtractorTransformer getValueExtractor(String valueExtractor)
81      {
82          Transformer transformer = muleContext.getRegistry().lookupTransformer(valueExtractor);
83          assertTrue(transformer instanceof ValueExtractorTransformer);
84          return (ValueExtractorTransformer) transformer;
85      }
86  
87      private void assertEqualTemplateList(List<ValueExtractorTransformer.ValueExtractorTemplate> templates, List<ValueExtractorTransformer.ValueExtractorTemplate> actualExtractorTemplates)
88      {
89          assertEquals(templates.size(), actualExtractorTemplates.size());
90  
91          int i = 0;
92          for (ValueExtractorTransformer.ValueExtractorTemplate expectedTemplate: templates)
93          {
94              ValueExtractorTransformer.ValueExtractorTemplate actualTemplate =  actualExtractorTemplates.get(i++);
95  
96              assertEquals(expectedTemplate.getPattern(), actualTemplate.getPattern());
97              assertEquals(expectedTemplate.getTarget(), actualTemplate.getTarget());
98              assertEquals(expectedTemplate.isFailIfNoMatch(), actualTemplate.isFailIfNoMatch());
99              assertEquals(expectedTemplate.getDefaultValue(), actualTemplate.getDefaultValue());
100         }
101     }
102 
103     private void assertExpectedValueExtractor(ValueExtractorTransformer valueExtractorTransformer)
104     {
105         assertEquals(expectedSource, valueExtractorTransformer.getSource());
106         assertEqualTemplateList(expectedTemplates, valueExtractorTransformer.getValueExtractorTemplates());
107     }
108 
109 }