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 MessageBodyFactory messageBodyFactory;
33 @Mock ResourceConfigManager resourceConfigManager;
34 @Mock Injectable<SAXParserFactory> injectableSAXParserFactory;
35 @Mock Providers providers;
36 @Mock ContextResolver resolver;
37
38
39
40
41
42 @Test
43 public void testMarshall() throws Exception
44 {
45 MessageBodyWriter writer = new App(injectableSAXParserFactory, providers);
46
47 when(messageBodyFactory.getMessageBodyWriter(eq(AnEntity.class), eq(AnEntity.class),
48 (Annotation[])anyObject(), eq(MediaType.APPLICATION_XML_TYPE)))
49 .thenReturn(writer);
50
51 JerseyEntityHandler handler = new JerseyEntityHandler(messageBodyFactory, resourceConfigManager);
52
53 final String text = "Some \n\ntext";
54
55 AnEntity entity = new AnEntity();
56 entity.setText(text);
57
58 String marshalledEntity = handler.marshall(entity, MediaType.APPLICATION_XML_TYPE, Charset.forName("UTF-8"));
59
60 assertEquals("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><anEntity><text>"
61 +text+"</text></anEntity>",
62 marshalledEntity);
63 }
64
65
66 @XmlRootElement
67 public static class AnEntity
68 {
69 @NotNull
70 private String text;
71
72 public String getText()
73 {
74 return text;
75 }
76
77 public void setText(String text)
78 {
79 this.text = text;
80 }
81 }
82 }