package dk.kb.yggdrasil.db; import static org.junit.Assert.*; import java.io.File; import java.io.IOException; import java.util.UUID; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; import dk.kb.yggdrasil.exceptions.ArgumentCheck; import dk.kb.yggdrasil.exceptions.YggdrasilException; import dk.kb.yggdrasil.json.preservation.PreservationRequest; import dk.kb.yggdrasil.preservation.PreservationState; @RunWith(JUnit4.class) public class PreservationRequestStateTest { @Test public void testConstructor() { PreservationRequest pr = new PreservationRequest(); String uuid = UUID.randomUUID().toString(); PreservationState preservationState = PreservationState.PRESERVATION_REQUEST_RECEIVED; PreservationRequestState prs = new PreservationRequestState(pr, preservationState, uuid); assertTrue(pr.equals(prs.getRequest())); assertTrue(preservationState.equals(prs.getState())); assertTrue(uuid.equals(prs.getUUID())); } @Test public void testSetState() throws YggdrasilException { PreservationRequest pr = new PreservationRequest(); String uuid = UUID.randomUUID().toString(); PreservationState preservationState = PreservationState.PRESERVATION_REQUEST_RECEIVED; PreservationRequestState prs = new PreservationRequestState(pr, preservationState, uuid); assertTrue(preservationState.equals(prs.getState())); prs.setState(PreservationState.PRESERVATION_METADATA_PACKAGED_SUCCESSFULLY); assertTrue(PreservationState.PRESERVATION_METADATA_PACKAGED_SUCCESSFULLY.equals( prs.getState())); } @Test public void testSetAndGetFileMethods() throws YggdrasilException, IOException { PreservationRequest pr = new PreservationRequest(); String uuid = UUID.randomUUID().toString(); PreservationState preservationState = PreservationState.PRESERVATION_REQUEST_RECEIVED; PreservationRequestState prs = new PreservationRequestState(pr, preservationState, uuid); assertTrue(preservationState.equals(prs.getState())); assertFalse(prs.getContentPayload()!= null); assertFalse(prs.getMetadataPayload()!= null); assertFalse(prs.getWarcId() != null); File nonexistingFile = new File(UUID.randomUUID().toString()); assertFalse(nonexistingFile.exists()); try { prs.setContentPayload(nonexistingFile); fail("Should have thrown ArgumentCheck exception on nonexisting file"); } catch (ArgumentCheck e) { // Expected } try { prs.setMetadataPayload(nonexistingFile); fail("Should have thrown ArgumentCheck exception on nonexisting file"); } catch (ArgumentCheck e) { // Expected } try { prs.setMetadataWarcFile(nonexistingFile); fail("Should have thrown ArgumentCheck exception on nonexisting file"); } catch (ArgumentCheck e) { // Expected } File existingFileOne = new File(UUID.randomUUID().toString()); File existingFileTwo = new File(UUID.randomUUID().toString()); File existingFileThree = new File(UUID.randomUUID().toString()); try { existingFileOne.createNewFile(); existingFileTwo.createNewFile(); existingFileThree.createNewFile(); assertTrue(existingFileOne.exists()); assertTrue(existingFileTwo.exists()); assertTrue(existingFileThree.exists()); prs.setContentPayload(existingFileOne); prs.setMetadataPayload(existingFileTwo); prs.setMetadataWarcFile(existingFileThree); assertTrue(existingFileOne.equals(prs.getContentPayload())); assertTrue(existingFileTwo.equals(prs.getMetadataPayload())); assertTrue(existingFileThree.getName().equals(prs.getWarcId())); } finally { existingFileOne.delete(); existingFileTwo.delete(); existingFileThree.delete(); } } @Test public void testCleanupWhenNoFiles() throws Exception { PreservationRequest pr = new PreservationRequest(); String uuid = UUID.randomUUID().toString(); PreservationState preservationState = PreservationState.PRESERVATION_REQUEST_RECEIVED; PreservationRequestState prs = new PreservationRequestState(pr, preservationState, uuid); prs.cleanup(); } @Test public void testCleanupOfBothFiles() throws Exception { PreservationRequest pr = new PreservationRequest(); String uuid = UUID.randomUUID().toString(); PreservationState preservationState = PreservationState.PRESERVATION_REQUEST_RECEIVED; PreservationRequestState prs = new PreservationRequestState(pr, preservationState, uuid); File contentFile = File.createTempFile("contentFile", null); File metadataFile = File.createTempFile("metadataFile", null); assertTrue(contentFile.exists()); assertTrue(metadataFile.exists()); prs.setContentPayload(contentFile); prs.setMetadataPayload(metadataFile); prs.cleanup(); assertFalse(contentFile.exists()); assertFalse(metadataFile.exists()); } @Test public void testCleanupWhenFilesAreAlreadyRemoved() throws Exception { PreservationRequest pr = new PreservationRequest(); String uuid = UUID.randomUUID().toString(); PreservationState preservationState = PreservationState.PRESERVATION_REQUEST_RECEIVED; PreservationRequestState prs = new PreservationRequestState(pr, preservationState, uuid); File contentFile = File.createTempFile("contentFile", null); File metadataFile = File.createTempFile("metadataFile", null); assertTrue(contentFile.exists()); assertTrue(metadataFile.exists()); prs.setContentPayload(contentFile); prs.setMetadataPayload(metadataFile); assertTrue(contentFile.delete()); assertTrue(metadataFile.delete()); prs.cleanup(); prs.cleanup(); assertFalse(contentFile.exists()); assertFalse(metadataFile.exists()); } @Test public void testCleanupOfDirectories() throws Exception { PreservationRequest pr = new PreservationRequest(); String uuid = UUID.randomUUID().toString(); PreservationState preservationState = PreservationState.PRESERVATION_REQUEST_RECEIVED; PreservationRequestState prs = new PreservationRequestState(pr, preservationState, uuid); File contentFile = File.createTempFile("contentFile", null); File metadataFile = File.createTempFile("metadataFile", null); assertTrue(contentFile.exists()); assertTrue(metadataFile.exists()); prs.setContentPayload(contentFile); prs.setMetadataPayload(metadataFile); assertTrue(contentFile.delete()); assertTrue(contentFile.mkdir()); File.createTempFile("OddSubFolderFile", null, contentFile); assertTrue(metadataFile.delete()); assertTrue(metadataFile.mkdir()); File.createTempFile("OddSubFolderFile", null, metadataFile); assertTrue(contentFile.exists()); assertTrue(metadataFile.exists()); prs.cleanup(); assertTrue(contentFile.exists()); assertTrue(metadataFile.exists()); } }