/* * Copyright 2001-2008 Geert Bevin (gbevin[remove] at uwyn dot com) and * Steven Grimm <koreth[remove] at midwinter dot com> * Licensed under the Apache License, Version 2.0 (the "License") * $Id: TestDatabaseRemember.java 3918 2008-04-14 17:35:35Z gbevin $ */ package com.uwyn.rife.authentication.remembermanagers; import com.uwyn.rife.authentication.exceptions.RememberManagerException; import com.uwyn.rife.database.Datasource; import com.uwyn.rife.ioc.HierarchicalProperties; import com.uwyn.rife.tools.ExceptionUtils; import java.util.ArrayList; import junit.framework.TestCase; public class TestDatabaseRemember extends TestCase { private Datasource mDatasource = null; private HierarchicalProperties mProperties = null; public TestDatabaseRemember(Datasource datasource, String datasourceName, String name) { super(name); mDatasource = datasource; mProperties = new HierarchicalProperties(); mProperties.put("datasource", mDatasource); } public void testInstantiation() { DatabaseRemember manager = new DatabaseRememberFactory().getRememberManager(mProperties); assertNotNull(manager); } public void testInstall() { DatabaseRemember remember = new DatabaseRememberFactory().getRememberManager(mProperties); try { assertTrue(true == remember.install()); } catch (RememberManagerException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } } public void testRemove() { DatabaseRemember remember = new DatabaseRememberFactory().getRememberManager(mProperties); try { assertTrue(true == remember.remove()); } catch (RememberManagerException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } } public void testCreateRememberId() { DatabaseRemember remember = new DatabaseRememberFactory().getRememberManager(mProperties); int user_id = 143; String remember_id = null; try { remember.install(); remember_id = remember.createRememberId(user_id, "123.98.23.3"); assertNotNull(remember_id); assertTrue(remember_id.length() > 0); assertEquals(user_id, remember.getRememberedUserId(remember_id)); } catch (RememberManagerException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } finally { try { remember.remove(); } catch (RememberManagerException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } } } public void testGetRememberedUserId() { DatabaseRemember remember = new DatabaseRememberFactory().getRememberManager(mProperties); try { remember.install(); ArrayList<String> remember_ids1 = new ArrayList<String>(); ArrayList<String> remember_ids2 = new ArrayList<String>(); ArrayList<String> remember_ids3 = new ArrayList<String>(); remember_ids1.add(remember.createRememberId(232, "123.98.23.3")); remember_ids1.add(remember.createRememberId(232, "123.98.23.32")); remember_ids2.add(remember.createRememberId(23, "123.98.23.3")); remember_ids3.add(remember.createRememberId(53, "123.98.23.3")); remember_ids3.add(remember.createRememberId(53, "123.98.23.3")); remember_ids1.add(remember.createRememberId(232, "123.98.23.34")); remember_ids2.add(remember.createRememberId(23, "123.98.23.3")); for (String remember_id : remember_ids1) { assertEquals(232, remember.getRememberedUserId(remember_id)); } for (String remember_id : remember_ids2) { assertEquals(23, remember.getRememberedUserId(remember_id)); } for (String remember_id : remember_ids3) { assertEquals(53, remember.getRememberedUserId(remember_id)); } } catch (RememberManagerException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } finally { try { remember.remove(); } catch (RememberManagerException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } } } public void testEraseRememberId() { DatabaseRemember remember = new DatabaseRememberFactory().getRememberManager(mProperties); int user_id = 93; try { remember.install(); String remember_id = null; remember_id = remember.createRememberId(user_id, "123.98.23.3"); assertEquals(user_id, remember.getRememberedUserId(remember_id)); assertTrue(remember.eraseRememberId(remember_id)); assertEquals(-1, remember.getRememberedUserId(remember_id)); } catch (RememberManagerException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } finally { try { remember.remove(); } catch (RememberManagerException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } } } public void testEraseUnknownSession() { DatabaseRemember remember = new DatabaseRememberFactory().getRememberManager(mProperties); String remember_id = "unknown"; try { remember.install(); assertTrue(false == remember.eraseRememberId(remember_id)); } catch (RememberManagerException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } finally { try { remember.remove(); } catch (RememberManagerException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } } } public void testEraseAllRememberIds() { DatabaseRemember remember = new DatabaseRememberFactory().getRememberManager(mProperties); try { remember.install(); ArrayList<String> remember_ids = new ArrayList<String>(); remember_ids.add(remember.createRememberId(232, "123.98.23.3")); remember_ids.add(remember.createRememberId(232, "123.98.23.34")); remember_ids.add(remember.createRememberId(23, "123.98.23.3")); remember_ids.add(remember.createRememberId(53, "123.98.23.3")); remember_ids.add(remember.createRememberId(53, "123.98.23.3")); remember_ids.add(remember.createRememberId(232, "123.98.23.31")); remember_ids.add(remember.createRememberId(23, "123.98.23.3")); for (String remember_id : remember_ids) { assertTrue(remember.getRememberedUserId(remember_id) != -1); } remember.eraseAllRememberIds(); for (String remember_id : remember_ids) { assertEquals(-1, remember.getRememberedUserId(remember_id)); } } catch (RememberManagerException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } finally { try { remember.remove(); } catch (RememberManagerException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } } } public void testEraseUserRememberIds() { DatabaseRemember remember = new DatabaseRememberFactory().getRememberManager(mProperties); try { remember.install(); ArrayList<String> remember_ids = new ArrayList<String>(); remember_ids.add(remember.createRememberId(8433, "123.98.23.3")); remember_ids.add(remember.createRememberId(8433, "123.98.23.33")); remember_ids.add(remember.createRememberId(8432, "123.98.23.31")); remember_ids.add(remember.createRememberId(8431, "123.98.23.3")); for (String remember_id : remember_ids) { assertTrue(remember.getRememberedUserId(remember_id) != -1); } assertTrue(remember.eraseUserRememberIds(8433)); assertTrue(remember.getRememberedUserId(remember_ids.get(0)) == -1); assertTrue(remember.getRememberedUserId(remember_ids.get(1)) == -1); assertTrue(remember.getRememberedUserId(remember_ids.get(2)) != -1); assertTrue(remember.getRememberedUserId(remember_ids.get(3)) != -1); } catch (RememberManagerException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } finally { try { remember.remove(); } catch (RememberManagerException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } } } public void testEraseUnkownUserRememberIds() { DatabaseRemember remember = new DatabaseRememberFactory().getRememberManager(mProperties); try { remember.install(); ArrayList<String> remember_ids = new ArrayList<String>(); remember_ids.add(remember.createRememberId(8432, "123.98.23.3")); remember_ids.add(remember.createRememberId(8431, "123.98.23.3")); for (String remember_id : remember_ids) { assertTrue(remember.getRememberedUserId(remember_id) != -1); } assertFalse(remember.eraseUserRememberIds(8433)); for (String remember_id : remember_ids) { assertTrue(remember.getRememberedUserId(remember_id) != -1); } } catch (RememberManagerException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } finally { try { remember.remove(); } catch (RememberManagerException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } } } public void testPurgeRememberIds() { DatabaseRemember remember = new DatabaseRememberFactory().getRememberManager(mProperties); remember.setRememberDuration(2000); int user_id = 9478; try { remember.install(); remember.eraseAllRememberIds(); String remember_id = remember.createRememberId(user_id, "123.98.23.3"); remember.purgeRememberIds(); assertEquals(remember.getRememberedUserId(remember_id), user_id); Thread.sleep(2010); remember.purgeRememberIds(); assertEquals(remember.getRememberedUserId(remember_id), -1); } catch (InterruptedException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } catch (RememberManagerException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } finally { try { remember.remove(); } catch (RememberManagerException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } } } }