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 testConvert("single-list-item-json");
34 testConvertThrows("empty-json", XMLStreamException.class);
37 private void testConvert(String fileName) throws XMLStreamException, IOException {
38 System.out.println("---------------------------------------------------------");
39 System.out.println("Converting JSON to XML: " + fileName);
40 System.out.println("---------------------------------------------------------");
42 ClassLoader classLoader = getClass().getClassLoader();
43 File jsonFile = new File(classLoader.getResource(FILE_PATH + fileName + ".json").getFile());
44 File xmlFile = new File(classLoader.getResource(FILE_PATH + fileName + ".xml").getFile());
46 FileInputStream in = new FileInputStream(jsonFile);
47 ByteArrayOutputStream out = new ByteArrayOutputStream();
49 JsonToXmlStreamConverter converter = new JsonToXmlStreamConverter(in, out);
52 System.out.println(out.toString("UTF-8"));
54 Diff diff = DiffBuilder
55 .compare(Input.fromStream(out.toInputStream()))
56 .withTest(Input.fromFile(xmlFile))
61 System.out.println(diff.toString());
63 assertFalse(diff.hasDifferences());
66 private void testConvertThrows(String fileName, Class<?> exceptionClass) throws XMLStreamException, IOException {
67 boolean caught = false;
70 testConvert(fileName);
72 catch(XMLStreamException|IOException e) {
73 if (e.getClass().isAssignableFrom(exceptionClass)) {
76 System.out.println(e.toString());