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 @Test
23 public void stackTraceIsNotNull() {
24 assertNotNull(new UncaughtExceptionEntity(new Throwable()).getStackTrace());
25 }
26
27 @Test
28 public void messagesAreTakenFromThrowables() {
29 assertNull(new UncaughtExceptionEntity(new Throwable()).getMessage());
30 assertEquals("Message",
31 new UncaughtExceptionEntity(new Throwable("Message")).getMessage());
32 }
33
34 @Test
35 public void defaultConstructorSucceeds() {
36 UncaughtExceptionEntity uee = new UncaughtExceptionEntity();
37 assertNull(uee.getMessage());
38 }
39
40 @Test
41 public void defaultIsXmlWithRealContainerRequestImplementation() {
42 WebApplication wa = mock(WebApplication.class);
43 InBoundHeaders headers = mock(InBoundHeaders.class);
44
45 Request req = new ContainerRequest(wa, null, null, null, headers, null);
46
47 MediaType mt = UncaughtExceptionEntity.variantFor(req);
48
49 assertEquals(MediaType.APPLICATION_XML_TYPE,
50 new MediaType(mt.getType(), mt.getSubtype()));
51 }
52
53 @Test
54 public void textPlainIncludeCharsetParameterWithRealContainerRequestImplementation() {
55 WebApplication wa = mock(WebApplication.class);
56 InBoundHeaders headers = mock(InBoundHeaders.class);
57
58 when(headers.get(HttpHeaders.ACCEPT)).thenReturn(ImmutableList.of("text/plain"));
59
60 Request req = new ContainerRequest(wa, null, null, null, headers, null);
61
62 MediaType mt = UncaughtExceptionEntity.variantFor(req);
63
64 assertEquals(MediaType.valueOf("text/plain; charset=utf-8"), mt);
65 }
66 }