1
2
3
4
5
6
7 package org.mule.module.cxf.support;
8
9 import org.mule.tck.junit4.AbstractMuleTestCase;
10
11 import java.util.ArrayList;
12 import java.util.Arrays;
13 import java.util.List;
14
15 import javax.xml.namespace.QName;
16
17 import org.apache.cxf.message.MessageContentsList;
18 import org.apache.cxf.service.model.MessagePartInfo;
19 import org.junit.Before;
20 import org.junit.Test;
21
22 import static org.junit.Assert.assertEquals;
23 import static org.junit.Assert.assertSame;
24 import static org.junit.Assert.assertTrue;
25
26 public class OutputPayloadInterceptorTestCase extends AbstractMuleTestCase
27 {
28
29 private OutputPayloadInterceptor interceptor;
30
31 @Before
32 public void setUpInterceptor()
33 {
34 interceptor = new OutputPayloadInterceptor();
35 }
36
37 @Test
38 public void testCleanUpPayload_NotAnArray() throws Exception
39 {
40 final List<?> someList = new ArrayList<Object>();
41 assertSame(someList, interceptor.cleanUpPayload(someList));
42
43 final String someString = "Some String";
44 assertSame(someString, interceptor.cleanUpPayload(someString));
45 }
46
47 @Test
48 public void testCleanUpPayload_NonObjectArray() throws Exception
49 {
50 final String someString = "Some String";
51 assertSame(someString, interceptor.cleanUpPayload(new String[]{someString, null}));
52
53 final String[] arrayOf2Strings = {someString, "someOther String"};
54 assertSame(arrayOf2Strings, interceptor.cleanUpPayload(arrayOf2Strings));
55
56 final String[] arrayOf2Strings1Null = {someString, "someOther String", null};
57 assertTrue(Arrays.equals(new String[]{arrayOf2Strings1Null[0], arrayOf2Strings1Null[1]},
58 (Object[]) interceptor.cleanUpPayload(arrayOf2Strings1Null)));
59 }
60
61 @Test
62 public void testCleanUpPayload_ArrayOfObjects()
63 {
64 final Integer someInteger = Integer.valueOf(1);
65 assertSame(someInteger, interceptor.cleanUpPayload(new Object[]{someInteger, null}));
66
67 final Object[] arrayOf2Objects = {someInteger, new Object()};
68 assertSame(arrayOf2Objects, interceptor.cleanUpPayload(arrayOf2Objects));
69
70 final Object[] arrayOf2Objects1Null = {someInteger, null, new Object(),
71 MessageContentsList.REMOVED_MARKER};
72 assertTrue(Arrays.equals(new Object[]{arrayOf2Objects1Null[0], arrayOf2Objects1Null[2]},
73 (Object[]) interceptor.cleanUpPayload(arrayOf2Objects1Null)));
74 }
75
76 @Test
77 public void testAddsMissingPartContentOnHandleMessage() {
78 MessageContentsList messageContentsList = new MessageContentsList();
79 Object content1 = new Object();
80 messageContentsList.add(content1);
81
82 List<MessagePartInfo> parts = new ArrayList<MessagePartInfo>();
83
84 MessagePartInfo part1 = new MessagePartInfo(new QName("part1"), null);
85 part1.setIndex(1);
86 parts.add(part1);
87
88 interceptor.ensurePartIndexMatchListIndex(messageContentsList, parts);
89
90 assertEquals(2, messageContentsList.size());
91 assertEquals(null, messageContentsList.get(0));
92 assertEquals(content1, messageContentsList.get(1));
93 }
94
95 @Test
96 public void testAddsMissingPartContentWithUnsortedPartListOnHandleMessage() {
97 MessageContentsList messageContentsList = new MessageContentsList();
98 Object content1 = new Object();
99 messageContentsList.add(content1);
100 Object content2 = new Object();
101 messageContentsList.add(content2);
102
103 List<MessagePartInfo> parts = new ArrayList<MessagePartInfo>();
104
105 MessagePartInfo part2 = new MessagePartInfo(new QName("part2"), null);
106 part2.setIndex(3);
107 parts.add(part2);
108
109 MessagePartInfo part1 = new MessagePartInfo(new QName("part1"), null);
110 part1.setIndex(1);
111 parts.add(part1);
112
113 interceptor.ensurePartIndexMatchListIndex(messageContentsList, parts);
114
115 assertEquals(4, messageContentsList.size());
116 assertEquals(null, messageContentsList.get(0));
117 assertEquals(content1, messageContentsList.get(1));
118 assertEquals(null, messageContentsList.get(2));
119 assertEquals(content2, messageContentsList.get(3));
120 }
121 }