package gov.loc.repository.bagit.conformance.profile; import java.util.Arrays; import java.util.HashMap; import java.util.Map; import org.junit.Assert; import org.junit.Before; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.module.SimpleModule; public abstract class AbstractBagitProfileTest extends Assert { protected ObjectMapper mapper; @Before public void setup(){ mapper = new ObjectMapper(); SimpleModule module = new SimpleModule(); module.addDeserializer(BagitProfile.class, new BagitProfileDeserializer()); mapper.registerModule(module); } protected BagitProfile createExpectedProfile(){ BagitProfile expectedProfile = new BagitProfile(); expectedProfile.setBagitProfileIdentifier("http://canadiana.org/standards/bagit/tdr_ingest.json"); expectedProfile.setContactEmail("tdr@canadiana.com"); expectedProfile.setContactName("William Wueppelmann"); expectedProfile.setExternalDescription("BagIt profile for ingesting content into the C.O. TDR loading dock."); expectedProfile.setSourceOrganization("Candiana.org"); expectedProfile.setVersion("1.2"); expectedProfile.setBagInfoRequirements(createBagInfo()); expectedProfile.setManifestTypesRequired(Arrays.asList("md5")); expectedProfile.setFetchFileAllowed(false); expectedProfile.setSerialization(Serialization.forbidden); expectedProfile.setAcceptableMIMESerializationTypes(Arrays.asList("application/zip")); expectedProfile.setAcceptableBagitVersions(Arrays.asList("0.96")); expectedProfile.setTagManifestTypesRequired(Arrays.asList("md5")); expectedProfile.setTagFilesRequired(Arrays.asList("DPN/dpnFirstNode.txt", "DPN/dpnRegistry")); return expectedProfile; } protected Map<String, BagInfoRequirement> createBagInfo(){ Map<String, BagInfoRequirement> info = new HashMap<>(); info.put("Source-Organization", new BagInfoRequirement(true, Arrays.asList("Simon Fraser University", "York University"))); info.put("Organization-Address", new BagInfoRequirement(true, Arrays.asList("8888 University Drive Burnaby, B.C. V5A 1S6 Canada", "4700 Keele Street Toronto, Ontario M3J 1P3 Canada"))); info.put("Contact-Name", new BagInfoRequirement(true, Arrays.asList("Mark Jordan", "Nick Ruest"))); info.put("Contact-Phone", new BagInfoRequirement(false, Arrays.asList())); info.put("Contact-Email", new BagInfoRequirement(true, Arrays.asList())); info.put("External-Description", new BagInfoRequirement(true, Arrays.asList())); info.put("External-Identifier", new BagInfoRequirement(false, Arrays.asList())); info.put("Bag-Size", new BagInfoRequirement(true, Arrays.asList())); info.put("Bag-Group-Identifier", new BagInfoRequirement(false, Arrays.asList())); info.put("Bag-Count", new BagInfoRequirement(true, Arrays.asList())); info.put("Internal-Sender-Identifier", new BagInfoRequirement(false, Arrays.asList())); info.put("Internal-Sender-Description", new BagInfoRequirement(false, Arrays.asList())); info.put("Bagging-Date", new BagInfoRequirement(true, Arrays.asList())); info.put("Payload-Oxum", new BagInfoRequirement(true, Arrays.asList())); return info; } }