]> git.aero2k.de Git - tmp/jakarta-migration.git/blob
154b80216cf5defbbe7c1a6ee7e83dce9db9766a
[tmp/jakarta-migration.git] /
1 package org.collectionspace.services.common.xmljson.test;
2
3 import static org.testng.Assert.*;
4
5 import java.io.File;
6 import java.io.FileInputStream;
7 import java.io.IOException;
8
9 import javax.xml.stream.XMLStreamException;
10
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;
17
18 import com.fasterxml.jackson.core.JsonParseException;
19
20 public class JsonToXmlStreamConverterTest {
21     public final String FILE_PATH = "test-data/xmljson/";
22     
23     @Test
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);
34     }
35     
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("---------------------------------------------------------");
40
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());
44         
45         FileInputStream in = new FileInputStream(jsonFile);
46         ByteArrayOutputStream out = new ByteArrayOutputStream();
47         
48         JsonToXmlStreamConverter converter = new JsonToXmlStreamConverter(in, out);
49         converter.convert();
50         
51         System.out.println(out.toString("UTF-8"));
52         
53         Diff diff = DiffBuilder
54                 .compare(Input.fromStream(out.toInputStream()))
55                 .withTest(Input.fromFile(xmlFile))
56                 .ignoreComments()
57                 .ignoreWhitespace()
58                 .build();
59         
60         System.out.println(diff.toString());
61         
62         assertFalse(diff.hasDifferences());
63     }
64     
65     private void testConvertThrows(String fileName, Class<?> exceptionClass) throws XMLStreamException, IOException {
66         boolean caught = false;
67         
68         try {
69             testConvert(fileName);
70         }
71         catch(XMLStreamException|IOException e) {
72             if (e.getClass().isAssignableFrom(exceptionClass)) {
73                 caught = true;
74                 
75                 System.out.println(e.toString());
76             }
77             else {
78                 throw e;
79             }
80         }
81         
82         assertTrue(caught);
83     }
84 }