package org.fcrepo.server.validation.ecm;
import junit.framework.TestCase;
import org.fcrepo.server.storage.MockRepositoryReader;
import org.fcrepo.server.storage.RepositoryReader;
import org.fcrepo.server.storage.types.Validation;
import org.fcrepo.utilities.DateUtility;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import java.util.Date;
import java.util.List;
import java.util.Map;
import static org.fcrepo.server.utilities.StreamUtility.enc;
public class EcmTest extends TestCase {
RepositoryReader reader;
/**
* @throws java.lang.Exception
*/
@Before
public void setUp() throws Exception {
MockRepositoryReader mockRepositoryReader = new MockRepositoryReader();
mockRepositoryReader.putObject(ObjectConstructor.produceContentModel1());
mockRepositoryReader.putObject(ObjectConstructor.produceContentModel2());
mockRepositoryReader.putObject(ObjectConstructor.produceContentModel3());
mockRepositoryReader.putObject(ObjectConstructor.produceContentModel30());
mockRepositoryReader.putObject(ObjectConstructor.producefedoraObject30());
mockRepositoryReader.putObject(ObjectConstructor.produceDataObject1());
mockRepositoryReader.putObject(ObjectConstructor.produceDataObject2());
mockRepositoryReader.putObject(ObjectConstructor.produceDataObject3());
mockRepositoryReader.putObject(ObjectConstructor.produceDataObject5());
mockRepositoryReader.putObject(ObjectConstructor.produceDataObject6());
mockRepositoryReader.putObject(ObjectConstructor.produceDataObject7());
mockRepositoryReader.putObject(ObjectConstructor.produceDataObject8());
reader = mockRepositoryReader;
}
/**
* @throws java.lang.Exception
*/
@After
public void tearDown() throws Exception {
}
@Test
public void testEcm1() throws Exception {
EcmValidator ecm = new EcmValidator(reader,null);
Validation validation1 = ecm.validate(null, "demo:dataObject1", null);
assertTrue("Dataobject1 failed validation: " + objectValidationToXml(validation1), validation1.isValid());
}
@Test
public void testEcm2() throws Exception {
EcmValidator ecm = new EcmValidator(reader,null);
Validation validation2 = ecm.validate(null, "demo:dataObject2", null);
assertTrue("Dataobject2 failed validation: " + objectValidationToXml(validation2), validation2.isValid());
}
@Test
public void testEcm3() throws Exception {
EcmValidator ecm = new EcmValidator(reader,null);
Validation validation = ecm.validate(null, "demo:contentModel1", null);
assertTrue("contentmodel1 failed validation: " + objectValidationToXml(validation), validation.isValid());
}
@Test
public void testEcm4() throws Exception {
EcmValidator ecm = new EcmValidator(reader,null);
Validation validation = ecm.validate(null, "demo:dataObject3", null);
assertFalse("DataObject3 succeeded validation: " + objectValidationToXml(validation), validation.isValid());
}
@Test
public void testEcm5() throws Exception {
EcmValidator ecm = new EcmValidator(reader,null);
Validation validation = ecm.validate(null, "demo:dataObject5", null);
assertFalse("DataObject5 succeeded validation: " + objectValidationToXml(validation), validation.isValid());
}
@Test
public void testEcm6() throws Exception {
EcmValidator ecm = new EcmValidator(reader,null);
Validation validation = ecm.validate(null, "demo:dataObject6", null);
assertFalse("DataObject6 succeeded validation: " + objectValidationToXml(validation), validation.isValid());
}
@Test
public void testEcm7() throws Exception {
EcmValidator ecm = new EcmValidator(reader,null);
Validation validation = ecm.validate(null, "demo:dataObject7", null);
assertFalse("DataObject7 succeeded validation: " + objectValidationToXml(validation), validation.isValid());
}
@Test
public void testEcm8() throws Exception {
EcmValidator ecm = new EcmValidator(reader,null);
Validation validation = ecm.validate(null, "demo:dataObject8", null);
assertFalse("DataObject8 succeeded validation: " + objectValidationToXml(validation), validation.isValid());
}
public String objectValidationToXml(Validation validation) {
StringBuilder buffer = new StringBuilder();
String pid = validation.getPid();
Date date = validation.getAsOfDateTime();
String dateString = "";
boolean valid = validation.isValid();
if (date != null) {
dateString = DateUtility.convertDateToString(date);
}
buffer.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
buffer.append("<validation "
+ "pid=\"" + enc(pid) + "\" " +
"valid=\"" + valid + "\">\n");
buffer.append(" <asOfDateTime>" + dateString + "</asOfDateTime>\n");
buffer.append(" <contentModels>\n");
for (String model : validation.getContentModels()) {
buffer.append(" <model>");
buffer.append(enc(model));
buffer.append("</model>\n");
}
buffer.append(" </contentModels>\n");
buffer.append(" <problems>\n");
for (String problem : validation.getObjectProblems()) {
buffer.append(" <problem>");
buffer.append(problem);
buffer.append("</problem>\n");
}
buffer.append(" </problems>\n");
buffer.append(" <datastreamProblems>\n");
Map<String, List<String>> dsprobs = validation.getDatastreamProblems();
for (String ds : dsprobs.keySet()) {
List<String> problems = dsprobs.get(ds);
buffer.append(" <datastream");
buffer.append(" datastreamID=\"");
buffer.append(ds);
buffer.append("\">\n");
for (String problem : problems) {
buffer.append(" <problem>");
buffer.append(problem);
buffer.append("</problem>\n");
}
buffer.append(" </datastream>");
}
buffer.append(" </datastreamProblems>\n");
buffer.append("</validation>");
return buffer.toString();
}
}