1
2
3
4
5
6
7
8
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 }