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 MessageBodyFactory messageBodyFactory;
33  	@Mock ResourceConfigManager resourceConfigManager;
34  	@Mock Injectable<SAXParserFactory> injectableSAXParserFactory;
35  	@Mock Providers providers;
36  	@Mock ContextResolver resolver;
37  	
38  	/**
39  	 * @see REST-172
40  	 * @throws Exception
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  }