View Javadoc

1   package com.atlassian.plugins.rest.module.jersey;
2   
3   import static org.junit.Assert.assertEquals;
4   import static org.mockito.Matchers.anyObject;
5   import static org.mockito.Matchers.eq;
6   import static org.mockito.Mockito.when;
7   
8   import java.lang.annotation.Annotation;
9   import java.nio.charset.Charset;
10  
11  import javax.validation.constraints.NotNull;
12  import javax.ws.rs.core.MediaType;
13  import javax.ws.rs.ext.ContextResolver;
14  import javax.ws.rs.ext.MessageBodyWriter;
15  import javax.ws.rs.ext.Providers;
16  import javax.xml.bind.annotation.XmlRootElement;
17  import javax.xml.parsers.SAXParserFactory;
18  
19  import org.junit.Test;
20  import org.junit.runner.RunWith;
21  import org.mockito.Mock;
22  import org.mockito.runners.MockitoJUnitRunner;
23  
24  import com.atlassian.plugins.rest.module.ResourceConfigManager;
25  import com.sun.jersey.core.impl.provider.entity.XMLRootElementProvider.App;
26  import com.sun.jersey.core.spi.factory.MessageBodyFactory;
27  import com.sun.jersey.spi.inject.Injectable;
28  
29  @RunWith(value = MockitoJUnitRunner.class)
30  public class JerseyEntityHandlerTest {
31  
32      @Mock
33      MessageBodyFactory messageBodyFactory;
34      @Mock
35      ResourceConfigManager resourceConfigManager;
36      @Mock
37      Injectable<SAXParserFactory> injectableSAXParserFactory;
38      @Mock
39      Providers providers;
40      @Mock
41      ContextResolver resolver;
42  
43      /**
44       * @throws Exception
45       * @see REST-172
46       */
47      @Test
48      public void testMarshall() throws Exception {
49          MessageBodyWriter writer = new App(injectableSAXParserFactory, providers);
50  
51          when(messageBodyFactory.getMessageBodyWriter(eq(AnEntity.class), eq(AnEntity.class),
52                  (Annotation[]) anyObject(), eq(MediaType.APPLICATION_XML_TYPE)))
53                  .thenReturn(writer);
54  
55          JerseyEntityHandler handler = new JerseyEntityHandler(messageBodyFactory, resourceConfigManager);
56  
57          final String text = "Some \n\ntext";
58  
59          AnEntity entity = new AnEntity();
60          entity.setText(text);
61  
62          String marshalledEntity = handler.marshall(entity, MediaType.APPLICATION_XML_TYPE, Charset.forName("UTF-8"));
63  
64          assertEquals("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><anEntity><text>"
65                          + text + "</text></anEntity>",
66                  marshalledEntity);
67      }
68  
69  
70      @XmlRootElement
71      public static class AnEntity {
72          @NotNull
73          private String text;
74  
75          public String getText() {
76              return text;
77          }
78  
79          public void setText(String text) {
80              this.text = text;
81          }
82      }
83  }