/*
* EuroCarbDB, a framework for carbohydrate bioinformatics
*
* Copyright (c) 2006-2009, Eurocarb project, or third-party contributors as
* indicated by the @author tags or express copyright attribution
* statements applied by the authors.
*
* This copyrighted material is made available to anyone wishing to use, modify,
* copy, or redistribute it subject to the terms and conditions of the GNU
* Lesser General Public License, as published by the Free Software Foundation.
* A copy of this license accompanies this distribution in the file LICENSE.txt.
*
* This program 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 Lesser General Public License
* for more details.
*
* Last commit: $Rev: 1549 $ by $Author: glycoslave $ on $Date:: 2009-07-19 #$
*/
/**
* Tranche Test Suite
* EUROCarbDB Project
*/
package test.eurocarbdb.tranche;
import org.testng.annotations.*;
import java.io.File;
import java.net.URI;
import java.net.URL;
import org.eurocarbdb.tranche.TrancheAdmin;
import org.eurocarbdb.tranche.TrancheUtility;
import org.apache.commons.configuration.CompositeConfiguration;
import org.apache.commons.configuration.Configuration;
import org.apache.commons.configuration.PropertiesConfiguration;
import org.eurocarbdb.dataaccess.Eurocarb;
import org.hibernate.SessionFactory;
//
import static org.eurocarbdb.dataaccess.Eurocarb.getEntityManager;
/**
* Base class for all Action-based test suites. Inheriting from this class will
* initialise the database and webwork configuration
*
* @author hirenj
*/
public class UploadDownloadTestSuite
{
// private SessionFactory sf;
@BeforeSuite
public void initialise() throws Exception
{
// sf = HibernateUtil.getSessionFactory();
// sf.getCurrentSession().beginTransaction();
getEntityManager().beginUnitOfWork();
Eurocarb.getConfiguration().addConfiguration(
new PropertiesConfiguration("eurocarbdb-application.properties") );
TrancheAdmin.StartServer();
}
@AfterSuite
public void teardown() throws Exception
{
// sf.getCurrentSession().getTransaction().commit();
getEntityManager().endUnitOfWork();
}
@Test
public void testUploadDownload() throws Exception
{
TrancheUtility tu = new TrancheUtility();
URL inputurl = Object.class.getResource("/test/BasicTestFile.test.xml");
File inputFile = new File(inputurl.getFile());
URI url = tu.uploadFile(inputFile);
File outputFile = tu.downloadFile(url);
assert inputFile.length() == outputFile.length();
}
@Test
public void testDownloadBadHash() throws Exception
{
TrancheUtility tu = new TrancheUtility();
try
{
File outputFile = tu.downloadFile("tranche://IAMABADHASH");
}
catch (RuntimeException e)
{
assert true;
return;
}
assert false;
}
@Test
public void testDownloadUnknownHash() throws Exception
{
TrancheUtility tu = new TrancheUtility();
try
{
File outputFile = tu.downloadFile("mGNNW+dCIIk0hEqUFOgM4QBi15TYjGX3I1I6V7uo9JDKHJu8Ks8kx+hwKhumqFu6XXjCy1D7IqP3/hZjLnqW0MbR2YsAAAAAABdZew==");
}
catch (Exception e)
{
assert true;
return;
}
assert false;
}
@Test
public void testMultipleUpload() throws Exception
{
TrancheUtility tu = new TrancheUtility();
URL inputurl = Object.class.getResource("/test/BasicTestFile.test.xml");
File inputFile = new File(inputurl.getFile());
URI url = tu.uploadFile(inputFile);
URI url2 = tu.uploadFile(inputFile);
// We should have the same hash for uploading the same file twice.
assert url.equals(url2);
}
@Test
public void testCheckForFile() throws Exception
{
TrancheUtility tu = new TrancheUtility();
URL inputurl = Object.class.getResource("/test/BasicTestFile.test.xml");
File inputFile = new File(inputurl.getFile());
URI url = tu.uploadFile(inputFile);
assert tu.fileExists(inputFile);
}
}