]> git.aero2k.de Git - tmp/jakarta-migration.git/blob
fc5c4c378a853aaa4f4714a6b9db22eaebcd98de
[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         testConvert("single-list-item-json");
34         testConvertThrows("empty-json", XMLStreamException.class);
35     }
36     
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("---------------------------------------------------------");
41
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());
45         
46         FileInputStream in = new FileInputStream(jsonFile);
47         ByteArrayOutputStream out = new ByteArrayOutputStream();
48         
49         JsonToXmlStreamConverter converter = new JsonToXmlStreamConverter(in, out);
50         converter.convert();
51         
52         System.out.println(out.toString("UTF-8"));
53         
54         Diff diff = DiffBuilder
55                 .compare(Input.fromStream(out.toInputStream()))
56                 .withTest(Input.fromFile(xmlFile))
57                 .ignoreComments()
58                 .ignoreWhitespace()
59                 .build();
60         
61         System.out.println(diff.toString());
62         
63         assertFalse(diff.hasDifferences());
64     }
65     
66     private void testConvertThrows(String fileName, Class<?> exceptionClass) throws XMLStreamException, IOException {
67         boolean caught = false;
68         
69         try {
70             testConvert(fileName);
71         }
72         catch(XMLStreamException|IOException e) {
73             if (e.getClass().isAssignableFrom(exceptionClass)) {
74                 caught = true;
75                 
76                 System.out.println(e.toString());
77             }
78             else {
79                 throw e;
80             }
81         }
82         
83         assertTrue(caught);
84     }
85 }