/**********************************************************************************
* $URL: https://source.sakaiproject.org/svn/kernel/trunk/api/src/test/java/org/sakaiproject/util/TrustedLoginTokenTest.java $
* $Id: TrustedLoginTokenTest.java 105077 2012-02-24 22:54:29Z ottenhoff@longsight.com $
***********************************************************************************
*
* Copyright (c) 2003, 2004, 2005, 2006, 2007, 2008 Sakai Foundation
*
* Licensed under the Educational Community License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.opensource.org/licenses/ECL-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
**********************************************************************************/
package org.sakaiproject.util;
import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Random;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import junit.framework.TestCase;
/**
* @author ieb
*/
public class TrustedLoginTokenTest extends TestCase
{
private static final Log log = LogFactory.getLog(TrustedLoginTokenTest.class);
public TrustedLoginTokenTest(String name)
{
super(name);
}
/**
* @throws java.lang.Exception
*/
protected void setUp() throws Exception
{
}
/**
* @throws java.lang.Exception
*/
protected void tearDown() throws Exception
{
}
public void testDecode() throws Exception
{
String user = "usersid";
String secret = "HowManyBottlesAreThereOnTheWall";
TrustedLoginFilter tlf = new TrustedLoginFilter();
tlf.setSharedSecret(secret);
Random ran = new Random();
String data = user + ";" + ran.nextLong();
String hash = tlf.byteArrayToHexStr(MessageDigest.getInstance("SHA1").digest(
(secret + ";" + data).getBytes("UTF-8")));
String token = hash + ";" + data;
long start = System.currentTimeMillis();
for (int i = 0; i < 1000; i++)
{
String decodedUser = tlf.decodeToken(token);
assertEquals("Users dont match ", user, decodedUser);
}
long end = System.currentTimeMillis();
double t = 1.0*(end - start) / 1000.0;
log.info("Per call " + t + " ms");
}
}