1 package org.collectionspace.services.common.xmljson.test;
3 import static org.testng.Assert.*;
6 import java.io.FileInputStream;
7 import java.io.IOException;
9 import javax.xml.stream.XMLStreamException;
11 import org.apache.commons.io.output.ByteArrayOutputStream;
12 import org.collectionspace.services.common.xmljson.JsonToXmlStreamConverter;
13 import org.testng.annotations.Test;
14 import org.xmlunit.builder.DiffBuilder;
15 import org.xmlunit.builder.Input;
16 import org.xmlunit.diff.Diff;
18 import com.fasterxml.jackson.core.JsonParseException;
20 public class JsonToXmlStreamConverterTest {
21 public final String FILE_PATH = "test-data/xmljson/";
24 public void testConvert() throws XMLStreamException, JsonParseException, IOException {
25 testConvert("record");
26 testConvert("collectionobject");
27 testConvert("collectionobject-list");
28 testConvert("accountperms");
29 testConvert("permissions");
30 testConvert("vocabulary-items");
31 testConvert("numeric-json");
32 testConvert("boolean-json");
33 testConvertThrows("empty-json", XMLStreamException.class);
36 private void testConvert(String fileName) throws XMLStreamException, IOException {
37 System.out.println("---------------------------------------------------------");
38 System.out.println("Converting JSON to XML: " + fileName);
39 System.out.println("---------------------------------------------------------");
41 ClassLoader classLoader = getClass().getClassLoader();
42 File jsonFile = new File(classLoader.getResource(FILE_PATH + fileName + ".json").getFile());
43 File xmlFile = new File(classLoader.getResource(FILE_PATH + fileName + ".xml").getFile());
45 FileInputStream in = new FileInputStream(jsonFile);
46 ByteArrayOutputStream out = new ByteArrayOutputStream();
48 JsonToXmlStreamConverter converter = new JsonToXmlStreamConverter(in, out);
51 System.out.println(out.toString("UTF-8"));
53 Diff diff = DiffBuilder
54 .compare(Input.fromStream(out.toInputStream()))
55 .withTest(Input.fromFile(xmlFile))
60 System.out.println(diff.toString());
62 assertFalse(diff.hasDifferences());
65 private void testConvertThrows(String fileName, Class<?> exceptionClass) throws XMLStreamException, IOException {
66 boolean caught = false;
69 testConvert(fileName);
71 catch(XMLStreamException|IOException e) {
72 if (e.getClass().isAssignableFrom(exceptionClass)) {
75 System.out.println(e.toString());