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
9 import static org.mockito.Mockito.when;
10 import static org.mockito.Mockito.verify;
11 import static org.mockito.MockitoAnnotations.initMocks;
12
13 import org.junit.Before;
14 import org.junit.Test;
15
16 import static org.junit.Assert.assertSame;
17
18 public class TestSysadminOnlyResourceFilter {
19 private SysadminOnlyResourceFilter sysadminOnlyResourceFilter;
20 @Mock
21 private UserManager mockUserManager;
22 @Mock
23 private ContainerRequest containerRequest;
24
25 @Before
26 public void setUp() {
27 initMocks(this);
28 sysadminOnlyResourceFilter = new SysadminOnlyResourceFilter(mockUserManager);
29 }
30
31 @Test
32 public void filterPassed() {
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 sysadminOnlyResourceFilter.getRequestFilter().filter(containerRequest);
42 }
43
44
45 @Test(expected = AuthorisationException.class)
46 public void filterRejectedNotAdmin() {
47 when(mockUserManager.getRemoteUsername()).thenReturn("dusan");
48 sysadminOnlyResourceFilter.getRequestFilter().filter(containerRequest);
49 verify(mockUserManager).isSystemAdmin("dusan");
50 }
51
52 }