package org.cagrid.gts.service.impl; import junit.framework.TestCase; import org.cagrid.gts.model.TrustLevel; import org.cagrid.gts.service.exception.GTSInternalException; import org.cagrid.gts.service.exception.IllegalTrustLevelException; import org.cagrid.gts.service.impl.db.DBManager; import org.cagrid.gts.service.impl.db.TrustLevelTable; import org.cagrid.gts.service.impl.test.Utils; /** * @author <A href="mailto:langella@bmi.osu.edu">Stephen Langella </A> * @author <A href="mailto:oster@bmi.osu.edu">Scott Oster </A> * @author <A href="mailto:hastings@bmi.osu.edu">Shannon Hastings </A> * @version $Id: ArgumentManagerTable.java,v 1.2 2004/10/15 16:35:16 langella * Exp $ */ public class TestTrustLevelManager extends TestCase implements TrustedAuthorityLevelRemover { private DBManager db; private TrustLevel ref; private final static String GTS_URI = "localhost"; public TestTrustLevelManager() { ref = new TrustLevel(); ref.setName("REF"); } public void testCreateAndDestroy() { TrustLevelManager trust = new TrustLevelManager(GTS_URI, this, db); try { trust.clearDatabase(); trust.buildDatabase(); assertTrue(db.getDatabase().tableExists(TrustLevelTable.TABLE_NAME)); trust.clearDatabase(); } catch (Exception e) { e.printStackTrace(); assertTrue(false); } finally { try { trust.clearDatabase(); } catch (Exception e) { e.printStackTrace(); } } } public void testAddRemoveTrustLevel() { TrustLevelManager trust = new TrustLevelManager(GTS_URI, this, db); try { TrustLevel level = new TrustLevel(); level.setName("One"); level.setDescription("Trust Level One"); trust.addTrustLevel(level); assertEquals(1, trust.getTrustLevels().length); assertEquals(true, trust.doesTrustLevelExist(level.getName())); assertEquals(level, trust.getTrustLevel(level.getName())); trust.removeTrustLevel(level.getName()); assertEquals(0, trust.getTrustLevels().length); assertEquals(false, trust.doesTrustLevelExist(level.getName())); } catch (Exception e) { e.printStackTrace(); fail(e.getMessage()); } finally { try { trust.clearDatabase(); } catch (Exception e) { e.printStackTrace(); } } } public void testAddUpdateRemoveExternalTrustLevel() { TrustLevelManager trust = new TrustLevelManager(GTS_URI, this, db); try { TrustLevel level = new TrustLevel(); level.setName("One"); level.setDescription("Trust Level One"); level.setIsAuthority(Boolean.FALSE); level.setAuthorityGTS("somehost"); level.setSourceGTS("somehost"); trust.addTrustLevel(level, false); assertEquals(1, trust.getTrustLevels().length); assertEquals(true, trust.doesTrustLevelExist(level.getName())); assertEquals(level, trust.getTrustLevel(level.getName())); level.setAuthorityGTS("someotherhost"); level.setSourceGTS("someotherhost"); trust.updateTrustLevel(level, false); assertEquals(1, trust.getTrustLevels().length); assertEquals(true, trust.doesTrustLevelExist(level.getName())); assertEquals(level, trust.getTrustLevel(level.getName())); trust.removeTrustLevel(level.getName()); assertEquals(0, trust.getTrustLevels().length); assertEquals(false, trust.doesTrustLevelExist(level.getName())); } catch (Exception e) { e.printStackTrace(); fail(e.getMessage()); } finally { try { trust.clearDatabase(); } catch (Exception e) { e.printStackTrace(); } } } public void testAddIllegalTrustLevel() { TrustLevelManager trust = new TrustLevelManager(GTS_URI, this, db); try { TrustLevel level = new TrustLevel(); level.setName("One"); level.setDescription("Trust Level One"); trust.addTrustLevel(level); assertEquals(1, trust.getTrustLevels().length); assertEquals(true, trust.doesTrustLevelExist(level.getName())); assertEquals(level, trust.getTrustLevel(level.getName())); try { trust.addTrustLevel(level); fail("Trust Level should not be able to be added when it already exists!!!"); } catch (IllegalTrustLevelException f) { } assertEquals(1, trust.getTrustLevels().length); assertEquals(true, trust.doesTrustLevelExist(level.getName())); assertEquals(level, trust.getTrustLevel(level.getName())); try { trust.addTrustLevel(new TrustLevel()); fail("Trust Level should not be able to be added without an name!!!"); } catch (IllegalTrustLevelException f) { } assertEquals(1, trust.getTrustLevels().length); assertEquals(true, trust.doesTrustLevelExist(level.getName())); assertEquals(level, trust.getTrustLevel(level.getName())); trust.removeTrustLevel(level.getName()); assertEquals(0, trust.getTrustLevels().length); assertEquals(false, trust.doesTrustLevelExist(level.getName())); } catch (Exception e) { e.printStackTrace(); fail(e.getMessage()); } finally { try { trust.clearDatabase(); } catch (Exception e) { e.printStackTrace(); } } } public void testAddIllegalExternalTrustLevel() { TrustLevelManager trust = new TrustLevelManager(GTS_URI, this, db); try { TrustLevel level = new TrustLevel(); level.setName("One"); level.setDescription("Trust Level One"); level.setIsAuthority(Boolean.FALSE); level.setAuthorityGTS("somehost"); level.setSourceGTS("somehost"); trust.addTrustLevel(level, false); assertEquals(1, trust.getTrustLevels().length); assertEquals(true, trust.doesTrustLevelExist(level.getName())); assertEquals(level, trust.getTrustLevel(level.getName())); try { trust.addTrustLevel(level, false); fail("Trust Level should not be able to be added when it already exists!!!"); } catch (IllegalTrustLevelException f) { } assertEquals(1, trust.getTrustLevels().length); assertEquals(true, trust.doesTrustLevelExist(level.getName())); assertEquals(level, trust.getTrustLevel(level.getName())); trust.removeTrustLevel(level.getName()); assertEquals(0, trust.getTrustLevels().length); assertEquals(false, trust.doesTrustLevelExist(level.getName())); try { trust.addTrustLevel(new TrustLevel(), false); fail("Trust Level should not be able to be added without an name!!!"); } catch (IllegalTrustLevelException f) { } assertEquals(0, trust.getTrustLevels().length); // Test Adding without authority try { TrustLevel tl = new TrustLevel(); tl.setName("One"); tl.setDescription("Trust Level One"); tl.setAuthorityGTS("somehost"); tl.setSourceGTS("somehost"); trust.addTrustLevel(tl, false); fail("Trust Level should not be able to be added!!!"); } catch (IllegalTrustLevelException f) { } assertEquals(0, trust.getTrustLevels().length); // Test Adding without Authority Trust Service try { TrustLevel tl = new TrustLevel(); tl.setName("One"); tl.setDescription("Trust Level One"); tl.setIsAuthority(Boolean.FALSE); tl.setSourceGTS("somehost"); trust.addTrustLevel(tl, false); fail("Trust Level should not be able to be added!!!"); } catch (IllegalTrustLevelException f) { } assertEquals(0, trust.getTrustLevels().length); // Test Adding without source trust service try { TrustLevel tl = new TrustLevel(); tl.setName("One"); tl.setDescription("Trust Level One"); tl.setIsAuthority(Boolean.FALSE); tl.setAuthorityGTS("somehost"); trust.addTrustLevel(tl, false); fail("Trust Level should not be able to be added!!!"); } catch (IllegalTrustLevelException f) { } assertEquals(0, trust.getTrustLevels().length); TrustLevel level2 = new TrustLevel(); level2.setName("One"); level2.setDescription("Trust Level One"); level2.setIsAuthority(Boolean.TRUE); level2.setAuthorityGTS("someotherhost"); level2.setSourceGTS("someotherhost"); try { trust.addTrustLevel(level2, false); fail("Trust Level should not be able to be added without an name!!!"); } catch (IllegalTrustLevelException f) { } } catch (Exception e) { e.printStackTrace(); fail(e.getMessage()); } finally { try { trust.clearDatabase(); } catch (Exception e) { e.printStackTrace(); } } } public void testUpdateIllegalTrustLevel() { TrustLevelManager trust = new TrustLevelManager(GTS_URI, this, db); try { TrustLevel level = new TrustLevel(); level.setName("One"); level.setDescription("Trust Level One"); level.setIsAuthority(Boolean.TRUE); level.setAuthorityGTS(GTS_URI); level.setSourceGTS(GTS_URI); trust.addTrustLevel(level, false); assertEquals(1, trust.getTrustLevels().length); assertEquals(true, trust.doesTrustLevelExist(level.getName())); assertEquals(level, trust.getTrustLevel(level.getName())); // Test changing the authority TrustLevel tl = trust.getTrustLevel(level.getName()); try { tl.setIsAuthority(Boolean.FALSE); trust.updateTrustLevel(tl); fail("Trust Level should not be able to be updated!!!"); } catch (IllegalTrustLevelException f) { } assertEquals(1, trust.getTrustLevels().length); tl = trust.getTrustLevel(level.getName()); try { tl.setAuthorityGTS("someotherhost"); trust.updateTrustLevel(tl); fail("Trust Level should not be able to be updated!!!"); } catch (IllegalTrustLevelException f) { } assertEquals(1, trust.getTrustLevels().length); tl = trust.getTrustLevel(level.getName()); try { tl.setSourceGTS("someotherhost"); trust.updateTrustLevel(tl); fail("Trust Level should not be able to be updated!!!"); } catch (IllegalTrustLevelException f) { } assertEquals(1, trust.getTrustLevels().length); TrustLevel level2 = new TrustLevel(); level2.setName("Two"); level2.setDescription("Trust Level Two"); level2.setIsAuthority(Boolean.FALSE); level2.setAuthorityGTS("some other host"); level2.setSourceGTS("some other host"); trust.addTrustLevel(level2, false); assertEquals(2, trust.getTrustLevels().length); assertEquals(true, trust.doesTrustLevelExist(level2.getName())); assertEquals(level2, trust.getTrustLevel(level2.getName())); tl = trust.getTrustLevel(level2.getName()); try { tl.setDescription("new description"); trust.updateTrustLevel(tl); fail("Trust Level should not be able to be updated!!!"); } catch (IllegalTrustLevelException f) { } } catch (Exception e) { e.printStackTrace(); fail(e.getMessage()); } finally { try { trust.clearDatabase(); } catch (Exception e) { e.printStackTrace(); } } } public void testUpdateIllegalExternalTrustLevel() { TrustLevelManager trust = new TrustLevelManager(GTS_URI, this, db); try { TrustLevel level = new TrustLevel(); level.setName("One"); level.setDescription("Trust Level One"); trust.addTrustLevel(level); assertEquals(1, trust.getTrustLevels().length); assertEquals(true, trust.doesTrustLevelExist(level.getName())); assertEquals(level, trust.getTrustLevel(level.getName())); // Test changing the authority TrustLevel tl = trust.getTrustLevel(level.getName()); try { tl.setIsAuthority(Boolean.FALSE); trust.updateTrustLevel(tl, false); fail("Trust Level should not be able to be updated!!!"); } catch (IllegalTrustLevelException f) { } assertEquals(1, trust.getTrustLevels().length); tl = trust.getTrustLevel(level.getName()); try { tl.setAuthorityGTS("someotherhost"); trust.updateTrustLevel(tl, false); fail("Trust Level should not be able to be updated!!!"); } catch (IllegalTrustLevelException f) { } assertEquals(1, trust.getTrustLevels().length); } catch (Exception e) { e.printStackTrace(); fail(e.getMessage()); } finally { try { trust.clearDatabase(); } catch (Exception e) { e.printStackTrace(); } } } public void testAddGetUpdateRemoveTrustLevels() { TrustLevelManager trust = new TrustLevelManager(GTS_URI, this, db); try { int size = 5; TrustLevel[] level = new TrustLevel[size]; for (int i = 0; i < size; i++) { level[i] = new TrustLevel(); level[i].setName("Level " + i); level[i].setDescription("Trust Level " + i); trust.addTrustLevel(level[i]); assertEquals((i + 1), trust.getTrustLevels().length); assertEquals(true, trust.doesTrustLevelExist(level[i].getName())); assertEquals(level[i], trust.getTrustLevel(level[i].getName())); level[i].setDescription("Updated Trust Level " + i); trust.updateTrustLevel(level[i]); assertEquals((i + 1), trust.getTrustLevels().length); assertEquals(true, trust.doesTrustLevelExist(level[i].getName())); assertEquals(level[i], trust.getTrustLevel(level[i].getName())); } int count = size; for (int i = 0; i < size; i++) { trust.removeTrustLevel(level[i].getName()); count = count - 1; assertEquals(count, trust.getTrustLevels().length); assertEquals(false, trust.doesTrustLevelExist(level[i].getName())); } assertEquals(0, trust.getTrustLevels().length); } catch (Exception e) { e.printStackTrace(); fail(e.getMessage()); } finally { try { trust.clearDatabase(); } catch (Exception e) { e.printStackTrace(); } } } public void removeAssociatedTrustedAuthorities(String trustLevel) throws GTSInternalException { // TODO Auto-generated method stub } protected void setUp() throws Exception { super.setUp(); try { db = Utils.getDBManager(); assertEquals(0, db.getDatabase().getUsedConnectionCount()); } catch (Exception e) { e.printStackTrace(); assertTrue(false); } } protected void tearDown() throws Exception { super.tearDown(); try { assertEquals(0, db.getDatabase().getUsedConnectionCount()); } catch (Exception e) { e.printStackTrace(); assertTrue(false); } } }