/** * */ package de.rub.syssec.saaf.db.dao.mysql; import static org.junit.Assert.assertTrue; import java.sql.Connection; import org.apache.log4j.Logger; import org.apache.log4j.PropertyConfigurator; import org.junit.After; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; import de.rub.syssec.saaf.analysis.MockAnalysis; import de.rub.syssec.saaf.application.MockApplication; import de.rub.syssec.saaf.db.DatabaseHelper; import de.rub.syssec.saaf.db.dao.exceptions.DAOException; import de.rub.syssec.saaf.db.dao.exceptions.DuplicateEntityException; import de.rub.syssec.saaf.db.dao.exceptions.NoSuchEntityException; import de.rub.syssec.saaf.db.dao.mysql.MySQLAnalysisDAO; import de.rub.syssec.saaf.db.dao.mysql.MySQLApplicaitonDAO; import de.rub.syssec.saaf.db.dao.mysql.MySQLExcpetionDAO; import de.rub.syssec.saaf.misc.config.Config; import de.rub.syssec.saaf.model.SAAFException; import de.rub.syssec.saaf.model.analysis.AnalysisInterface; import de.rub.syssec.saaf.model.application.ApplicationInterface; /** * @author Tilman Bender <tilman.bender@rub.de> * */ public class MySQLExcpetionDAOTest { @BeforeClass public static void setupBeforeClass() throws Exception{ PropertyConfigurator.configure("conf/log4j.properties"); } private DatabaseHelper helper; private Connection connection; private Logger logger=Logger.getLogger(getClass()); private MySQLExcpetionDAO dao; private AnalysisInterface mockanalysis; private MySQLAnalysisDAO analysisDAO; private ApplicationInterface mockapplication; private MySQLApplicaitonDAO applicationDAO; private MockAnalysis mockanalysis2; /** * @throws java.lang.Exception */ @Before public void setUp() throws Exception { try { helper = new DatabaseHelper(Config.getInstance()); helper.createDatabaseSchema(); connection = helper.getConnection(); //create the dao under test dao = new MySQLExcpetionDAO(connection); mockapplication = new MockApplication(); applicationDAO = new MySQLApplicaitonDAO(connection); mockanalysis = new MockAnalysis(); mockanalysis.setApp(mockapplication); //make a second one so we can test update later (attach exception to different analysis) mockanalysis2 = new MockAnalysis(); mockanalysis2.setApp(mockapplication); analysisDAO = new MySQLAnalysisDAO(connection); mockapplication.setId(applicationDAO.create(mockapplication)); mockanalysis.setId(analysisDAO.create(mockanalysis)); mockanalysis2.setId(analysisDAO.create(mockanalysis2)); } catch (Exception e) { logger.error("Unable to connect to DB!",e); } } @After public void tearDown() throws Exception { helper.dropTables(); connection.close(); } /** * Test method for {@link de.rub.syssec.saaf.saaf.db.dao.mysql.MySQLExcpetionDAO#create(de.rub.syssec.saaf.saaf.model.SAAFException)}. * @throws DuplicateEntityException * @throws DAOException */ @Test public void testCreate() throws DAOException, DuplicateEntityException { SAAFException exception = new SAAFException("Error in analysis"); exception.setAnalysis(mockanalysis); int id = dao.create(exception); assertTrue("The id returned by MySQLBTPatternDAO.create must be a positive integer",id>0); } /** * Test method for {@link de.rub.syssec.saaf.saaf.db.dao.mysql.MySQLExcpetionDAO#read(int)}. * @throws DAOException */ @Test(expected=UnsupportedOperationException.class) public void testRead() throws DAOException { dao.read(1); } /** * Test method for {@link de.rub.syssec.saaf.saaf.db.dao.mysql.MySQLExcpetionDAO#update(de.rub.syssec.saaf.saaf.model.SAAFException)}. * @throws Exception * @throws DAOException */ @Test public void testUpdate() throws DAOException, Exception { SAAFException exception = new SAAFException("Error in analysis"); exception.setAnalysis(mockanalysis); exception.setId(dao.create(exception)); assertTrue(mockanalysis.getId()!=mockanalysis2.getId()); exception.setAnalysis(mockanalysis2); assertTrue(dao.update(exception)); } /** * Test method for {@link de.rub.syssec.saaf.saaf.db.dao.mysql.MySQLExcpetionDAO#delete(de.rub.syssec.saaf.saaf.model.SAAFException)}. * @throws DuplicateEntityException * @throws DAOException * @throws NoSuchEntityException */ @Test public void testDelete() throws DAOException, DuplicateEntityException, NoSuchEntityException { SAAFException exception = new SAAFException("Error in analysis"); exception.setAnalysis(mockanalysis); exception.setId(dao.create(exception)); assertTrue(dao.delete(exception)); } /** * Test method for {@link de.rub.syssec.saaf.saaf.db.dao.mysql.MySQLExcpetionDAO#readAll()}. */ @Test(expected=UnsupportedOperationException.class) public void testReadAll() { dao.readAll(); } /** * Test method for {@link de.rub.syssec.saaf.saaf.db.dao.mysql.MySQLExcpetionDAO#deleteAll()}. * @throws DuplicateEntityException * @throws DAOException */ @Test public void testDeleteAll() throws DAOException, DuplicateEntityException { SAAFException exception = new SAAFException("Error in analysis"); exception.setAnalysis(mockanalysis); SAAFException exception2 = new SAAFException("Yet another error in analysis"); exception2.setAnalysis(mockanalysis); exception.setId((dao.create(exception))); exception2.setId((dao.create(exception2))); assertTrue(dao.deleteAll()==2); } /** * Test method for {@link de.rub.syssec.saaf.saaf.db.dao.mysql.MySQLExcpetionDAO#findId(de.rub.syssec.saaf.saaf.model.SAAFException)}. * @throws Exception */ @Test(expected=UnsupportedOperationException.class) public void testFindId() throws Exception { SAAFException exception = new SAAFException("Error in analysis"); exception.setAnalysis(mockanalysis); dao.findId(exception); } }