package de.rub.syssec.saaf.db.persistence; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import java.sql.Connection; import java.util.LinkedList; 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.analysis.steps.slicing.BTPattern; import de.rub.syssec.saaf.analysis.steps.slicing.BTResult; import de.rub.syssec.saaf.application.MockApplication; import de.rub.syssec.saaf.application.MockClass; import de.rub.syssec.saaf.application.MockCodeLine; import de.rub.syssec.saaf.application.MockMethod; import de.rub.syssec.saaf.application.heuristic.MockConstant; import de.rub.syssec.saaf.db.DatabaseHelper; import de.rub.syssec.saaf.db.dao.mysql.MockPackge; import de.rub.syssec.saaf.db.dao.mysql.MySQLBTPatternDAO; import de.rub.syssec.saaf.db.persistence.sql.BTResultEntityManager; import de.rub.syssec.saaf.misc.config.Config; import de.rub.syssec.saaf.model.analysis.BTResultInterface; import de.rub.syssec.saaf.model.application.CodeLineInterface; import de.rub.syssec.saaf.model.application.ConstantInterface; public class BTResultEntityManagerTest { private Connection connection; private BTResultEntityManager manager; private BTPattern mockPattern; private MockApplication mockApplication; private MockPackge mockPackage; private MockClass mockClass; private MockCodeLine mockCodeline; private MockConstant mockConstant; private LinkedList<CodeLineInterface> lines; private MockMethod mockMethod; private MockAnalysis mockAnalysis; private MySQLBTPatternDAO btpatternDAO; private DatabaseHelper helper; @BeforeClass public static void setupBeforeClass() throws Exception{ PropertyConfigurator.configure("conf/log4j.properties"); } @Before public void setUp() throws Exception { helper = new DatabaseHelper(Config.getInstance()); helper.createDatabaseSchema(); connection = helper.getConnection(); manager = new BTResultEntityManager(connection); mockPattern = new BTPattern("com/test/Tester", "test", "String", 0, "test"); mockApplication = new MockApplication(); mockPackage = new MockPackge("Testpackage", "fuzzyhash", mockApplication); mockPackage.setApplication(mockApplication); mockClass = new MockClass("TestClass", mockPackage); byte[] bytes = {}; mockCodeline = new MockCodeLine(bytes, 0, mockClass); mockConstant = new MockConstant("just testing", 0, ConstantInterface.Type.STRING, ConstantInterface.VariableType.INTERNAL_BYTECODE_OP, "something", "other thing", mockCodeline, 0, false, "some/thing", false, 0); lines = new LinkedList<CodeLineInterface>(); lines.add(mockCodeline); mockMethod = new MockMethod("test", mockClass, lines); mockCodeline.setMethod(mockMethod); mockAnalysis = new MockAnalysis(); mockAnalysis.setApp(mockApplication); // persist pattern first (it is independent from the other objects) btpatternDAO = new MySQLBTPatternDAO(connection); mockPattern.setId(btpatternDAO.create(mockPattern)); } @After public void tearDown() throws Exception { helper.dropTables(); connection.close(); } @Test public void testSave() throws Exception { BTResultInterface testResult = new BTResult(mockAnalysis, mockPattern, mockConstant, 0); assertTrue(manager.save(testResult)); assertTrue(testResult.getId() > 0); } @Test public void testDelete() throws Exception { BTResultInterface testResult = new BTResult(mockAnalysis, mockPattern, mockConstant, 0); assertTrue(manager.save(testResult)); assertTrue(manager.delete(testResult)); } @Test public void testValidate() throws Exception { assertFalse(manager.validate(null)); } }