1 23 24 package com.rift.coad.lib.security.sudo; 26 27 import java.util.Set ; 29 import java.util.HashSet ; 30 31 import junit.framework.*; 33 34 import org.apache.log4j.Logger; 36 37 import com.rift.coad.lib.security.AuthorizationException; 39 import com.rift.coad.lib.security.UserSession; 40 import com.rift.coad.lib.security.RoleManager; 41 import com.rift.coad.lib.security.SessionManager; 42 import com.rift.coad.lib.security.ThreadPermissionSession; 43 import com.rift.coad.lib.security.ThreadsPermissionContainer; 44 import com.rift.coad.lib.security.ThreadsPermissionContainerAccessor; 45 import com.rift.coad.lib.security.login.LoginManager; 46 import com.rift.coad.lib.security.login.handlers.PasswordInfoHandler; 47 import com.rift.coad.lib.security.login.SessionLogin; 48 import com.rift.coad.lib.security.user.UserSessionManager; 49 import com.rift.coad.lib.security.user.UserSessionManagerAccessor; 50 import com.rift.coad.lib.security.user.UserStoreManager; 51 import com.rift.coad.lib.security.user.UserStoreManagerAccessor; 52 import com.rift.coad.lib.thread.BasicThread; 53 import com.rift.coad.lib.thread.CoadunationThreadGroup; 54 55 60 public class SudoTest extends TestCase implements SudoCallbackHandler { 61 62 65 public class SudoByUserTest extends BasicThread { 66 67 private SudoCallbackHandler handler = null; 68 69 72 public SudoByUserTest (SudoCallbackHandler handler) throws Exception { 73 this.handler = handler; 74 } 75 76 77 80 public void process() { 81 try { 82 Sudo.sudoThreadByUser("test", handler); 83 } catch (Exception ex) { 84 System.out.println("Failed to process : " + ex.getMessage()); 85 ex.printStackTrace(System.out); 86 } 87 } 88 } 89 90 91 94 public class SudoBySessionIdTest extends BasicThread { 95 96 private String sessionId = null; 97 private SudoCallbackHandler handler = null; 98 99 102 public SudoBySessionIdTest (String sessionId, 103 SudoCallbackHandler handler) throws Exception { 104 this.sessionId = sessionId; 105 this.handler = handler; 106 } 107 108 109 112 public void process() { 113 try { 114 Sudo.sudoThreadBySessionId(sessionId, handler); 115 } catch (Exception ex) { 116 System.out.println("Failed to process : " + ex.getMessage()); 117 ex.printStackTrace(System.out); 118 } 119 } 120 } 121 122 123 private boolean called = false; 125 126 public SudoTest(String testName) { 127 super(testName); 128 } 129 130 protected void setUp() throws Exception { 131 } 132 133 protected void tearDown() throws Exception { 134 } 135 136 public static Test suite() { 137 TestSuite suite = new TestSuite(SudoTest.class); 138 139 return suite; 140 } 141 142 145 public void testSudo() throws Exception { 146 System.out.println("testSudo"); 147 148 ThreadsPermissionContainer permissions = new ThreadsPermissionContainer(); 149 ThreadsPermissionContainerAccessor.init(permissions); 150 SessionManager.init(permissions); 151 UserStoreManager userStoreManager = new UserStoreManager(); 152 UserStoreManagerAccessor.init(userStoreManager); 153 UserSessionManager sessionManager = new UserSessionManager(permissions, 154 userStoreManager); 155 UserSessionManagerAccessor.init(sessionManager); 156 LoginManager.init(sessionManager,userStoreManager); 157 158 RoleManager.getInstance(); 160 161 CoadunationThreadGroup threadGroup = new CoadunationThreadGroup(sessionManager, 163 userStoreManager); 164 165 called = false; 167 SudoByUserTest sudoByUserTest = new SudoByUserTest(this); 168 threadGroup.addThread(sudoByUserTest,"test1"); 169 sudoByUserTest.start(); 170 sudoByUserTest.join(); 171 if (called == false) { 172 fail("Failed to call as user test1"); 173 } 174 175 SessionLogin sessionLogin = new SessionLogin( 177 new PasswordInfoHandler("test","112233")); 178 sessionLogin.login(); 179 180 called = false; 181 SudoBySessionIdTest sudoBySessionIdTest = new SudoBySessionIdTest( 182 sessionLogin.getUser().getSessionId(),this); 183 threadGroup.addThread(sudoBySessionIdTest,"test1"); 184 sudoBySessionIdTest.start(); 185 sudoBySessionIdTest.join(); 186 if (called == false) { 187 fail("Failed to sudo the user to the session id"); 188 } 189 190 191 called = false; 192 193 Set set = new HashSet (); 195 set.add("test"); 196 set.add("test1"); 197 set.add("test2"); 198 set.add("test3"); 199 UserSession user = new UserSession("test", set); 200 ThreadPermissionSession currentSession = new ThreadPermissionSession( 201 new Long (Thread.currentThread().getId()),user); 202 permissions.putSession(new Long (Thread.currentThread().getId()), 203 currentSession); 204 205 Sudo.sudoThreadByUser("test2", this); 206 207 if (called == false) { 208 fail("Failed to sudo the user to the session id"); 209 } 210 211 if (currentSession != permissions.getSession( 212 new Long (Thread.currentThread().getId()))) { 213 fail("Failed permission were not reset properly"); 214 } 215 216 called = false; 217 Sudo.sudoThreadBySessionId(sessionLogin.getUser().getSessionId(),this); 218 219 220 if (called == false) { 221 fail("Failed to sudo the user to the session id"); 222 } 223 224 if (currentSession != permissions.getSession( 225 new Long (Thread.currentThread().getId()))) { 226 fail("Failed permission were not reset properly"); 227 } 228 229 } 230 231 232 235 public void process() { 236 called = true; 237 } 238 } 239 | Popular Tags |