Added Support for Union Type def resolving and bug fixes.
[controller.git] / opendaylight / usermanager / src / test / java / org / opendaylight / controller / usermanager / internal / UserManagerImplTest.java
1 /*
2  * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8
9 package org.opendaylight.controller.usermanager.internal;
10
11 import static org.junit.Assert.assertEquals;
12 import static org.junit.Assert.assertFalse;
13 import static org.junit.Assert.assertTrue;
14
15 import java.util.ArrayList;
16 import java.util.List;
17 import java.util.concurrent.ConcurrentHashMap;
18
19 import org.junit.Assert;
20 import org.junit.BeforeClass;
21 import org.junit.Test;
22 import org.opendaylight.controller.sal.authorization.AuthResultEnum;
23 import org.opendaylight.controller.sal.authorization.UserLevel;
24 import org.opendaylight.controller.sal.utils.ServiceHelper;
25 import org.opendaylight.controller.usermanager.AuthResponse;
26 import org.opendaylight.controller.usermanager.IAAAProvider;
27 import org.opendaylight.controller.usermanager.IUserManager;
28
29 /**
30  * Unit Tests for UserManagerImpl
31  */
32 public class UserManagerImplTest {
33
34     private static UserManagerImpl um;
35
36     /**
37      * @throws java.lang.Exception
38      */
39     @BeforeClass
40     public static void setUpBeforeClass() throws Exception {
41
42         IUserManager userManager = (IUserManager) ServiceHelper
43                 .getGlobalInstance(IUserManager.class, new Object());
44         if (userManager instanceof UserManagerImpl) {
45             um = (UserManagerImpl) userManager;
46         } else {
47             um = new UserManagerImpl();
48             um.setAuthProviders(new ConcurrentHashMap<String, IAAAProvider>());
49
50             // mock up a remote server list with a dummy server
51             um.setRemoteServerConfigList(new ConcurrentHashMap<String, ServerConfig>() {
52                 static final long serialVersionUID = 1L;
53                 {
54                     put("dummyServerConfig", new ServerConfig() {
55                         // Server config can't be empty
56                         static final long serialVersionUID = 8645L;
57
58                         public String getAddress() {
59                             return "1.1.1.1";
60                         }
61
62                         public String getSecret() {
63                             return "secret";
64                         }
65
66                         public String getProtocol() {
67                             return "IPv4";
68                         }
69                     });
70                 }
71             });
72
73             // mock up a localUserConfigList with an admin user
74             um.setLocalUserConfigList(new ConcurrentHashMap<String, UserConfig>() {
75                 static final long serialVersionUID = 2L;
76                 {
77                     List<String> roles = new ArrayList<String>(1);
78                     roles.add(UserLevel.SYSTEMADMIN.toString());
79                     put("admin", new UserConfig("admin",
80                             "7029,7455,8165,7029,7881", roles));
81                 }
82             });
83             // instantiate an empty activeUser collection
84             um.setActiveUsers(new ConcurrentHashMap<String, AuthenticatedUser>());
85
86         }
87
88     }
89
90     /**
91      * Test method for
92      * {@link org.opendaylight.controller.usermanager.internal.UserManagerImpl#addAAAProvider(org.opendaylight.controller.usermanager.IAAAProvider)}
93      * .
94      */
95     @Test
96     public void testAddAAAProvider() {
97         // instantiate an anonymous AAAProvider
98         IAAAProvider a3p = new IAAAProvider() {
99
100             public AuthResponse authService(String userName, String password,
101                     String server, String secretKey) {
102                 return new AuthResponse();
103             };
104
105             public String getName() {
106                 return "dummyAAAProvider";
107             }
108         };
109
110         um.addAAAProvider(a3p);
111         assertEquals(a3p, um.getAAAProvider("dummyAAAProvider"));
112
113     }
114
115     /**
116      * Test method for
117      * {@link org.opendaylight.controller.usermanager.internal.UserManagerImpl#removeAAAProvider(org.opendaylight.controller.usermanager.IAAAProvider)}
118      * and for for
119      * {@link org.opendaylight.controller.usermanager.internal.UserManagerImpl#getAAAProvider(java.lang.String)}
120      * .
121      */
122     @Test
123     public void testRemoveAAAProvider() {
124         um.removeAAAProvider(um.getAAAProvider("dummyAAAProvider"));
125         assertTrue(um.getAAAProviderNames().isEmpty());
126     }
127
128     /**
129      * Test method for
130      * {@link org.opendaylight.controller.usermanager.internal.UserManagerImpl#authenticate(java.lang.String, java.lang.String)}
131      * .
132      */
133     @Test
134     public void testAuthenticateStringString() {
135         List<String> roles = new ArrayList<String>(1);
136         roles.add(UserLevel.SYSTEMADMIN.toString());
137         UserConfig uc = new UserConfig("administrator", "admin", roles);
138         um.addLocalUser(uc);
139         AuthResultEnum authResult = um.authenticate("administrator", "admin");
140         assertEquals(authResult, AuthResultEnum.AUTH_ACCEPT_LOC);
141     }
142
143     /**
144      * Test method for
145      * {@link org.opendaylight.controller.usermanager.internal.UserManagerImpl#addRemoveLocalUser(org.opendaylight.controller.usermanager.internal.UserConfig, boolean)}
146      * .
147      */
148     @Test
149     public void testAddRemoveLocalUser() {
150         List<String> roles = new ArrayList<String>(1);
151         roles.add(UserLevel.SYSTEMADMIN.toString());
152         UserConfig uc = new UserConfig("sysadmin", "7029,7455,8165,7029,7881",
153                 roles);
154         um.addLocalUser(uc);
155         assertTrue(um.getLocalUserList().contains(uc));
156         um.removeLocalUser(uc);
157         assertFalse(um.getLocalUserList().contains(uc));
158     }
159
160     /**
161      * Test method for
162      * {@link org.opendaylight.controller.usermanager.internal.UserManagerImpl#changeLocalUserPassword(java.lang.String, java.lang.String, java.lang.String)}
163      * .
164      */
165     @Test
166     public void testChangeLocalUserPassword() {
167         // fail("Not yet implemented");
168     }
169
170     /**
171      * Test method for
172      * {@link org.opendaylight.controller.usermanager.internal.UserManagerImpl#userLogout(java.lang.String)}
173      * .
174      */
175     @Test
176     public void testUserLogout() {
177         // fail("Not yet implemented");
178     }
179
180     /**
181      * Test method for
182      * {@link org.opendaylight.controller.usermanager.internal.UserManagerImpl#userTimedOut(java.lang.String)}
183      * .
184      */
185     @Test
186     public void testUserTimedOut() {
187         // fail("Not yet implemented");
188     }
189
190     /**
191      * Test method for
192      * {@link org.opendaylight.controller.usermanager.internal.UserManagerImpl#authenticate(org.springframework.security.core.Authentication)}
193      * .
194      */
195     @Test
196     public void testAuthenticateAuthentication() {
197         // fail("Not yet implemented");
198     }
199
200     /**
201      * Test method for
202      * {@link org.opendaylight.controller.usermanager.internal.UserManagerImpl#saveLocalUserList()}
203      * .
204      */
205     @Test
206     public void testSaveLocalUserList() {
207         // fail("Not yet implemented");
208     }
209
210     /**
211      * Test method for
212      * {@link org.opendaylight.controller.usermanager.internal.UserManagerImpl#saveAAAServerList()}
213      * .
214      */
215     @Test
216     public void testSaveAAAServerList() {
217         // fail("Not yet implemented");
218     }
219
220     /**
221      * Test method for
222      * {@link org.opendaylight.controller.usermanager.internal.UserManagerImpl#saveAuthorizationList()}
223      * .
224      */
225     @Test
226     public void testSaveAuthorizationList() {
227         // fail("Not yet implemented");
228     }
229
230     /**
231      * Test method for
232      * {@link org.opendaylight.controller.usermanager.internal.UserManagerImpl#readObject(java.io.ObjectInputStream)}
233      * .
234      */
235     @Test
236     public void testReadObject() {
237         // fail("Not yet implemented");
238     }
239
240     @Test
241     public void testGetUserLevel() {
242         List<String> roles = new ArrayList<String>(2);
243         roles.add(UserLevel.SYSTEMADMIN.toString());
244         roles.add("App1_supervisor");
245         um.addLocalUser(new UserConfig("Jack", "password", roles));
246         um.authenticate("Jack", "password");
247
248         roles.clear();
249         roles.add("App2Admin");
250         roles.add(UserLevel.NETWORKOPERATOR.toString());
251         um.addLocalUser(new UserConfig("John", "password", roles));
252
253         // Run the check on authenticated user
254         Assert.assertTrue(um.getUserLevel("Jack") == UserLevel.SYSTEMADMIN);
255         // Run the check on configured users
256         Assert.assertTrue(um.getUserLevel("John") == UserLevel.NETWORKOPERATOR);
257         Assert.assertTrue(um.getUserLevel("Andrew") == UserLevel.NOUSER);
258     }
259 }