177 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			177 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| /***********************************************************************
 | |
|  * 
 | |
|  *  Copyright (C) 2005-2006 Novell, Inc. All Rights Reserved.
 | |
|  *
 | |
|  *  This library is free software; you can redistribute it and/or
 | |
|  *  modify it under the terms of the GNU Lesser General Public
 | |
|  *  License as published by the Free Software Foundation; version 2.1
 | |
|  *  of the License.
 | |
|  *
 | |
|  *  This library is distributed in the hope that it will be useful,
 | |
|  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 | |
|  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 | |
|  *  Library Lesser General Public License for more details.
 | |
|  *
 | |
|  *  You should have received a copy of the GNU Lesser General Public
 | |
|  *  License along with this library; if not, Novell, Inc.
 | |
|  * 
 | |
|  *  To contact Novell about this file by physical or electronic mail, 
 | |
|  *  you may find current contact information at www.novell.com.
 | |
|  * 
 | |
|  ***********************************************************************/
 | |
| 
 | |
| #if DEBUG
 | |
| using System;
 | |
| using System.Text;
 | |
| using System.Collections;
 | |
| //using System.InvalidOperationException;
 | |
| 
 | |
| using NUnit.Framework;
 | |
| 
 | |
| using sscs.common;
 | |
| using sscs.cache;
 | |
| 
 | |
| namespace sscs.common
 | |
| {
 | |
| 
 | |
| [TestFixture]
 | |
| public class TestSessionManager
 | |
| {	
 | |
| 
 | |
|  	User theuser = null;
 | |
|  	UnixUserIdentifier UserId = null;
 | |
|  	UnixUserIdentifier root = null;
 | |
|       SecretStore mysec = null;
 | |
|       SecretStore anothersec  = null;
 | |
|       KeyChain mykc1 = null;
 | |
|       KeyChain mykc2 = null;
 | |
|       byte[] secbyte1 = null;
 | |
|       byte[] secbyte2 = null;
 | |
|       Secret mysecret1 = null;
 | |
|       Secret mysecret2 = null;
 | |
|       SessionManager sesman ;
 | |
| 
 | |
|      [SetUp]
 | |
|      public void Init()
 | |
|      {
 | |
| 
 | |
|           sesman =  SessionManager.GetSessionManager;
 | |
|       		    	
 | |
|           mykc1 = new KeyChain("k1");
 | |
|           mykc2 = new KeyChain("k2");
 | |
|                    
 | |
|  	   
 | |
|           mysecret1 = new Secret(); 
 | |
|           mysecret2 = new Secret(); 
 | |
|           
 | |
|           mysecret1.SetKey("key1"); 
 | |
|           mysecret2.SetKey("key2"); 
 | |
|           secbyte1 = Encoding.ASCII.GetBytes("NOVELL");
 | |
|           secbyte2 = Encoding.ASCII.GetBytes("IBM");
 | |
|           	
 | |
|           mysecret1.SetValue(secbyte1);     
 | |
|           mysecret2.SetValue(secbyte2);     
 | |
| 
 | |
| 	    mykc1.AddSecret(mysecret1);
 | |
|           mykc2.AddSecret(mysecret2);
 | |
|           
 | |
|        
 | |
|           UserId = new UnixUserIdentifier(420);
 | |
|           root = new UnixUserIdentifier(0);
 | |
|           
 | |
|           //theuser = new UnixUser(UserId);
 | |
| 
 | |
|        
 | |
| 
 | |
|      	 
 | |
|      }
 | |
|      
 | |
|  	
 | |
| 	[Test]	
 | |
| 	public void TestCreateUserSession()
 | |
| 	{
 | |
| 
 | |
| 	      anothersec =  SessionManager.CreateUserSession(root);
 | |
| 	      	mysec = SessionManager.CreateUserSession(UserId);
 | |
| 		
 | |
| 		//Assert.AreEqual(1, mysec.getRefCount());
 | |
| 		//Assert.AreEqual(1, anothersec.getRefCount());
 | |
| 
 | |
| 	      Assert.AreEqual(true, SessionManager.CheckIfUserSessionExists(UserId));
 | |
| 	      Assert.AreEqual(true, SessionManager.CheckIfUserSessionExists(root));
 | |
| 
 | |
| 	     
 | |
| 	
 | |
| 	}
 | |
| 
 | |
| 	
 | |
| 	[Test]
 | |
| 	public void TestAddtoSession()
 | |
| 	{
 | |
| 	       SecretStore s1  =  SessionManager.GetUserSecretStore(UserId);
 | |
| 	       SecretStore s2  =  SessionManager.GetUserSecretStore(root);
 | |
| 
 | |
| 	       s1.AddKeyChain(mykc1);
 | |
| 	       s2.AddKeyChain(mykc2);
 | |
| 
 | |
| 	       s1  =  SessionManager.GetUserSecretStore(UserId);
 | |
| 	       s2  =  SessionManager.GetUserSecretStore(root);
 | |
| 
 | |
| 	       KeyChain returnK1 = s1.GetKeyChain("k1");
 | |
| 	       Secret returnS1 = returnK1.GetSecret("key1");
 | |
| 	       
 | |
| 	       KeyChain returnK2 = s2.GetKeyChain("k2");
 | |
| 	       Secret returnS2 = returnK2.GetSecret("key2");
 | |
| 
 | |
|              Assert.AreEqual("NOVELL", Encoding.ASCII.GetString(returnS1.GetValue()));
 | |
|              Assert.AreEqual("IBM",Encoding.ASCII.GetString(returnS2.GetValue()) );
 | |
| 
 | |
| 	     
 | |
| 	
 | |
| 	}
 | |
| 
 | |
| 
 | |
| 	[Test] 
 | |
|       [ExpectedException(typeof(KeyChainDoesNotExistException))]
 | |
| 	public void TestInvalidAccess()
 | |
| 	{
 | |
| 	       SecretStore s1  =  SessionManager.GetUserSecretStore(UserId);
 | |
| 	       //SecretStore s2  =  SessionManager.GetUserSecretStore(root);
 | |
| 
 | |
| 	       s1.GetKeyChain("k2");
 | |
| 	       
 | |
| 	
 | |
| 	}
 | |
| 
 | |
| 	
 | |
| 
 | |
| 	[Test] 
 | |
| 	public void TestRemoveUserSession()
 | |
| 	{
 | |
| 	     SessionManager.RemoveUserSession(UserId, true);
 | |
|              Assert.AreEqual(false, SessionManager.CheckIfUserSessionExists(UserId)); 
 | |
| 	     
 | |
| 	     //TBD :Make the ref count more than one and delete call remove sesison once.
 | |
| 	     //The call it once more.. only second time it should remove the session entry.
 | |
| 	
 | |
| 	}
 | |
| 
 | |
| 
 | |
| 
 | |
|      
 | |
| 
 | |
|       
 | |
| 		
 | |
| 	
 | |
| }
 | |
| 
 | |
| }
 | |
| #endif
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 |