View Javadoc
1   /*
2    * Copyright (c) MuleSoft, Inc.  All rights reserved.  http://www.mulesoft.com
3    * The software in this package is published under the terms of the CPAL v1.0
4    * license, a copy of which has been included with this distribution in the
5    * LICENSE.txt file.
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 }