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
45
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 }