View Javadoc
1   package com.atlassian.sal.core.permission;
2   
3   import com.atlassian.sal.api.permission.AuthorisationException;
4   import com.atlassian.sal.api.permission.NotAuthenticatedException;
5   import com.atlassian.sal.api.user.UserKey;
6   import com.atlassian.sal.api.user.UserManager;
7   import org.junit.Before;
8   import org.junit.Rule;
9   import org.junit.Test;
10  import org.junit.rules.ExpectedException;
11  import org.junit.runner.RunWith;
12  import org.mockito.Mock;
13  import org.mockito.junit.MockitoJUnitRunner;
14  
15  import static org.hamcrest.CoreMatchers.isA;
16  import static org.hamcrest.CoreMatchers.not;
17  import static org.junit.Assert.assertFalse;
18  import static org.junit.Assert.assertTrue;
19  import static org.mockito.Mockito.verify;
20  import static org.mockito.Mockito.when;
21  
22  @RunWith(MockitoJUnitRunner.class)
23  public class DefaultPermissionEnforcerTest {
24  
25      @Rule
26      public ExpectedException thrown = ExpectedException.none();
27  
28      private UserKey userKey;
29      @Mock
30      private UserManager userManager;
31      private DefaultPermissionEnforcer permissionEnforcer;
32  
33      @Before
34      public void setup() {
35          permissionEnforcer = new DefaultPermissionEnforcer(userManager);
36          userKey = new UserKey("1234");
37      }
38  
39      @Test
40      public void testEnforceAdminWithAdminPermission() {
41          when(userManager.getRemoteUserKey()).thenReturn(userKey);
42          when(userManager.isAdmin(userKey)).thenReturn(true);
43  
44          permissionEnforcer.enforceAdmin();
45          verify(userManager).isAdmin(userKey);
46      }
47  
48      @Test
49      public void testEnforceAdminThrowsIfNotAdmin() {
50          thrown.expect(AuthorisationException.class);
51          thrown.expect(not(isA(NotAuthenticatedException.class)));
52          when(userManager.getRemoteUserKey()).thenReturn(userKey);
53  
54          permissionEnforcer.enforceAdmin();
55      }
56  
57      @Test
58      public void testEnforceAdminThrowsIfNotAuthenticated() {
59          thrown.expect(NotAuthenticatedException.class);
60  
61          permissionEnforcer.enforceAdmin();
62      }
63  
64      @Test
65      public void testEnforceAuthenticatedWhenAuthenticated() {
66          when(userManager.getRemoteUserKey()).thenReturn(userKey);
67  
68          permissionEnforcer.enforceAuthenticated();
69          verify(userManager).getRemoteUserKey();
70      }
71  
72      @Test
73      public void testEnforceAuthenticatedThrowsIfNotAuthenticated() {
74          thrown.expect(AuthorisationException.class);
75  
76          permissionEnforcer.enforceAuthenticated();
77      }
78  
79      @Test
80      public void testEnforceSystemAdminWithSystemAdminPermission() {
81          when(userManager.getRemoteUserKey()).thenReturn(userKey);
82          when(userManager.isSystemAdmin(userKey)).thenReturn(true);
83  
84          permissionEnforcer.enforceSystemAdmin();
85          verify(userManager).isSystemAdmin(userKey);
86      }
87  
88      @Test
89      public void testEnforceSystemAdminThrowsIfNotSystemAdmin() {
90          thrown.expect(AuthorisationException.class);
91          thrown.expect(not(isA(NotAuthenticatedException.class)));
92          when(userManager.getRemoteUserKey()).thenReturn(userKey);
93  
94          permissionEnforcer.enforceSystemAdmin();
95      }
96  
97      @Test
98      public void testEnforceSystemAdminThrowsIfNotAuthenticated() {
99          thrown.expect(NotAuthenticatedException.class);
100 
101         permissionEnforcer.enforceSystemAdmin();
102     }
103 
104     @Test
105     public void testIsAdminWithAdminPermission() {
106         when(userManager.getRemoteUserKey()).thenReturn(userKey);
107         when(userManager.isAdmin(userKey)).thenReturn(true);
108 
109         assertTrue(permissionEnforcer.isAdmin());
110     }
111 
112     @Test
113     public void testIsAdminIfNotAdmin() {
114         when(userManager.getRemoteUserKey()).thenReturn(userKey);
115 
116         assertFalse(permissionEnforcer.isAdmin());
117     }
118 
119     @Test
120     public void testIsAdminIfNotAuthenticated() {
121         assertFalse(permissionEnforcer.isAdmin());
122     }
123 
124     @Test
125     public void testIsAuthenticatedWhenAuthenticated() {
126         when(userManager.getRemoteUserKey()).thenReturn(userKey);
127 
128         assertTrue(permissionEnforcer.isAuthenticated());
129     }
130 
131     @Test
132     public void testIsAuthenticatedWhenNotAuthenticated() {
133         assertFalse(permissionEnforcer.isAuthenticated());
134     }
135 
136     @Test
137     public void testIsSystemAdminWithSystemAdminPermission() {
138         when(userManager.getRemoteUserKey()).thenReturn(userKey);
139         when(userManager.isSystemAdmin(userKey)).thenReturn(true);
140 
141         assertTrue(permissionEnforcer.isSystemAdmin());
142     }
143 
144     @Test
145     public void testIsSystemAdminIfNotAdmin() {
146         when(userManager.getRemoteUserKey()).thenReturn(userKey);
147 
148         assertFalse(permissionEnforcer.isSystemAdmin());
149     }
150 
151     @Test
152     public void testIsSystemAdminIfNotAuthenticated() {
153         assertFalse(permissionEnforcer.isSystemAdmin());
154     }
155 }