1 package com.atlassian.plugins.rest.common.security.jersey;
2
3 import com.atlassian.plugins.rest.common.security.AuthorisationException;
4 import com.atlassian.plugins.rest.common.security.AuthenticationRequiredException;
5 import com.atlassian.sal.api.user.UserManager;
6 import com.sun.jersey.spi.container.ContainerRequest;
7 import org.mockito.Mock;
8 import static org.mockito.Mockito.when;
9 import static org.mockito.Mockito.verify;
10 import static org.mockito.MockitoAnnotations.initMocks;
11 import org.junit.Before;
12 import org.junit.Test;
13 import static org.junit.Assert.assertSame;
14
15 public class TestSysadminOnlyResourceFilter
16 {
17 private SysadminOnlyResourceFilter sysadminOnlyResourceFilter;
18 @Mock
19 private UserManager mockUserManager;
20 @Mock
21 private ContainerRequest containerRequest;
22
23 @Before
24 public void setUp()
25 {
26 initMocks(this);
27 sysadminOnlyResourceFilter = new SysadminOnlyResourceFilter(mockUserManager);
28 }
29
30 @Test
31 public void filterPassed()
32 {
33 when(mockUserManager.getRemoteUsername()).thenReturn("dusan");
34 when(mockUserManager.isSystemAdmin("dusan")).thenReturn(true);
35 assertSame(containerRequest, sysadminOnlyResourceFilter.getRequestFilter().filter(containerRequest));
36 verify(mockUserManager).isSystemAdmin("dusan");
37 }
38
39 @Test(expected = AuthenticationRequiredException.class)
40 public void filterRejectedNoLogin()
41 {
42 sysadminOnlyResourceFilter.getRequestFilter().filter(containerRequest);
43 }
44
45
46 @Test(expected = AuthorisationException.class)
47 public void filterRejectedNotAdmin()
48 {
49 when(mockUserManager.getRemoteUsername()).thenReturn("dusan");
50 sysadminOnlyResourceFilter.getRequestFilter().filter(containerRequest);
51 verify(mockUserManager).isSystemAdmin("dusan");
52 }
53
54 }