package test.nvarghese.beowulf.common.scan.dao; import java.net.UnknownHostException; import java.util.ArrayList; import java.util.List; import junit.framework.Assert; import org.bson.types.ObjectId; import org.testng.annotations.AfterClass; import org.testng.annotations.BeforeClass; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; import com.google.code.morphia.Datastore; import com.google.code.morphia.Morphia; import com.mongodb.Mongo; import com.nvarghese.beowulf.common.scan.dao.WebScanDAO; import com.nvarghese.beowulf.common.scan.model.WebScanDocument; public class WebScanDAOTest { private Datastore ds; @BeforeClass public void initialize() throws UnknownHostException { Mongo mongo = new Mongo("localhost:10001"); ds = new Morphia().createDatastore(mongo, "webscantests"); } @Test(dataProvider = "feedWebScanDocuments") public void testCreateWebScanDocument(WebScanDocument webScanDocument) { WebScanDAO webScanDAO = new WebScanDAO(ds); ObjectId id = webScanDAO.createWebScanDocument(webScanDocument); Assert.assertNotNull(id); WebScanDocument loadedWebScanDocument = webScanDAO.getWebScanDocument(id); Assert.assertEquals(loadedWebScanDocument.getBaseUris().get(0), webScanDocument.getBaseUris().get(0)); } @Test(dependsOnMethods = { "testCreateWebScanDocument" }) public void testUpdateScanJobsInProgress() { WebScanDAO webScanDAO = new WebScanDAO(ds); WebScanDocument webScanDocument = webScanDAO.find().get(); boolean scanJobsInProgress = webScanDocument.isScanJobsInProgress(); // System.out.println("Initial job status: " + scanJobsInProgress); scanJobsInProgress = !scanJobsInProgress; // System.out.println("Toggled status: " + scanJobsInProgress); webScanDAO.updateScanJobsInProgress(webScanDocument.getId(), scanJobsInProgress); WebScanDocument loadedWebScanDocument = webScanDAO.getWebScanDocument(webScanDocument.getId()); Assert.assertEquals(loadedWebScanDocument.isScanJobsInProgress(), scanJobsInProgress); // System.out.println("loaded status: " + // loadedWebScanDocument.isScanJobsInProgress()); // System.out.println("initial web doc status: " + // webScanDocument.isScanJobsInProgress()); } @Test public void testNonExistingWebScanDocument() { WebScanDAO webScanDAO = new WebScanDAO(ds); ObjectId id = new ObjectId(); WebScanDocument webScanDocument = webScanDAO.getWebScanDocument(id); Assert.assertNull(webScanDocument); } @DataProvider(/* parallel=false */) public Object[][] feedWebScanDocuments() { return new Object[][] { { provideDummyWebScanDocument("http://dummysite.com") }, { provideDummyWebScanDocument("http://samplesite.com") }, { provideDummyWebScanDocument("http://demosite.com") }, }; } private WebScanDocument provideDummyWebScanDocument(String uri) { WebScanDocument webScanDocument = new WebScanDocument(); List<String> baseURIs = new ArrayList<String>(); baseURIs.add(uri); webScanDocument.setBaseUris(baseURIs); return webScanDocument; } @AfterClass public void cleanup() { ds.getDB().dropDatabase(); } }