1 package com.atlassian.plugins.rest.common.error.jersey;
2
3 import javax.ws.rs.core.HttpHeaders;
4 import javax.ws.rs.core.MediaType;
5 import javax.ws.rs.core.Request;
6
7 import com.google.common.collect.ImmutableList;
8 import com.sun.jersey.core.header.InBoundHeaders;
9 import com.sun.jersey.spi.container.ContainerRequest;
10 import com.sun.jersey.spi.container.WebApplication;
11
12 import org.junit.Test;
13
14 import static org.mockito.Mockito.when;
15
16 import static org.junit.Assert.assertEquals;
17 import static org.junit.Assert.assertNotNull;
18 import static org.junit.Assert.assertNull;
19 import static org.mockito.Mockito.mock;
20
21 public class UncaughtExceptionEntityTest
22 {
23 @Test
24 public void stackTraceIsNotNull()
25 {
26 assertNotNull(new UncaughtExceptionEntity(new Throwable()).getStackTrace());
27 }
28
29 @Test
30 public void messagesAreTakenFromThrowables()
31 {
32 assertNull(new UncaughtExceptionEntity(new Throwable()).getMessage());
33 assertEquals("Message",
34 new UncaughtExceptionEntity(new Throwable("Message")).getMessage());
35 }
36
37 @Test
38 public void defaultConstructorSucceeds()
39 {
40 UncaughtExceptionEntity uee = new UncaughtExceptionEntity();
41 assertNull(uee.getMessage());
42 }
43
44 @Test
45 public void defaultIsXmlWithRealContainerRequestImplementation()
46 {
47 WebApplication wa = mock(WebApplication.class);
48 InBoundHeaders headers = mock(InBoundHeaders.class);
49
50 Request req = new ContainerRequest(wa, null, null, null, headers, null);
51
52 MediaType mt = UncaughtExceptionEntity.variantFor(req);
53
54 assertEquals(MediaType.APPLICATION_XML_TYPE,
55 new MediaType(mt.getType(), mt.getSubtype()));
56 }
57
58 @Test
59 public void textPlainIncludeCharsetParameterWithRealContainerRequestImplementation()
60 {
61 WebApplication wa = mock(WebApplication.class);
62 InBoundHeaders headers = mock(InBoundHeaders.class);
63
64 when(headers.get(HttpHeaders.ACCEPT)).thenReturn(ImmutableList.of("text/plain"));
65
66 Request req = new ContainerRequest(wa, null, null, null, headers, null);
67
68 MediaType mt = UncaughtExceptionEntity.variantFor(req);
69
70 assertEquals(MediaType.valueOf("text/plain; charset=utf-8"), mt);
71 }
72 }