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