package de.rub.syssec.saaf.db.persistence;
import static org.junit.Assert.assertTrue;
import java.sql.Connection;
import java.util.ArrayList;
import java.util.List;
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.application.manifest.permissions.Permission;
import de.rub.syssec.saaf.application.manifest.permissions.PermissionRequest;
import de.rub.syssec.saaf.db.DatabaseHelper;
import de.rub.syssec.saaf.db.persistence.sql.PermissionRequestEntityManager;
import de.rub.syssec.saaf.misc.config.Config;
import de.rub.syssec.saaf.model.application.PermissionInterface;
import de.rub.syssec.saaf.model.application.manifest.PermissionRequestInterface;
public class PermissionRequestEntityManagerTest {
@BeforeClass
public static void setupBeforeClass() throws Exception{
PropertyConfigurator.configure("conf/log4j.properties");
}
private DatabaseHelper helper;
private Connection connection;
private PermissionRequestEntityManager manager;
private MockApplication mockApplication;
private MockAnalysis mockAnalysis;
@Before
public void setUp() throws Exception {
helper = new DatabaseHelper(Config.getInstance());
helper.createDatabaseSchema();
connection = helper.getConnection();
mockApplication = new MockApplication();
// perisist the application it is the root
mockAnalysis = new MockAnalysis();
mockAnalysis.setApp(mockApplication);
manager = new PermissionRequestEntityManager(connection);
}
@After
public void tearDown() throws Exception {
helper.dropTables();
connection.close();
}
@Test
public void testSave() throws Exception {
PermissionInterface perm = new Permission("android.permission.SEND_SMS");
PermissionRequestInterface request = new PermissionRequest(perm);
request.setAnalysis(mockAnalysis);
assertTrue(manager.save(request));
assertTrue(request.getId() > 0);
assertTrue(perm.getId() > 0);
assertTrue(mockAnalysis.getId()>0);
assertTrue(mockApplication.getId()>0);
}
@Test
public void testDelete() throws Exception {
PermissionInterface perm = new Permission("android.permission.SEND_SMS");
PermissionRequestInterface request = new PermissionRequest(perm);
request.setAnalysis(mockAnalysis);
assertTrue(manager.save(request));
assertTrue(manager.delete(request));
}
@Test
public void testValidate() throws Exception {
PermissionInterface perm= new Permission("android.permission.SEND_SMS");
PermissionRequestInterface request = new PermissionRequest(perm);
request.setAnalysis(mockAnalysis);
assertTrue(manager.validate(request));
}
@Test
public void testSaveAll() throws Exception {
PermissionInterface perm= new Permission("android.permission.SEND_SMS");
PermissionRequestInterface request = new PermissionRequest(perm);
request.setAnalysis(mockAnalysis);
PermissionRequestInterface request2 = new PermissionRequest(perm);
request2.setAnalysis(mockAnalysis);
List<PermissionRequestInterface> all = new ArrayList<PermissionRequestInterface>();
all.add(request);
all.add(request2);
assertTrue(manager.saveAll(all));
}
}