-
Notifications
You must be signed in to change notification settings - Fork 188
/
TestPrismParsingXml.java
107 lines (84 loc) · 3.1 KB
/
TestPrismParsingXml.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
/*
* Copyright (c) 2010-2020 Evolveum and contributors
*
* This work is dual-licensed under the Apache License 2.0
* and European Union Public License. See LICENSE file for details.
*/
package com.evolveum.midpoint.prism;
import com.evolveum.midpoint.prism.foo.UserType;
import com.evolveum.midpoint.util.DOMUtil;
import org.testng.AssertJUnit;
import org.testng.annotations.Test;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.xml.sax.SAXException;
import java.io.IOException;
import static com.evolveum.midpoint.prism.PrismInternalTestUtil.*;
import static org.testng.AssertJUnit.assertNotNull;
import static org.testng.AssertJUnit.assertTrue;
public class TestPrismParsingXml extends TestPrismParsing {
public static final String USER_JACK_XXE_BASENAME = "user-jack-xxe";
@Override
protected String getSubdirName() {
return "xml";
}
@Override
protected String getFilenameSuffix() {
return "xml";
}
@Override
protected String getOutputFormat() {
return PrismContext.LANG_XML;
}
@Test
public void testPrismParseDom() throws Exception {
// GIVEN
Document document = DOMUtil.parseFile(getFile(USER_JACK_FILE_BASENAME));
Element userElement = DOMUtil.getFirstChildElement(document);
PrismContext prismContext = constructInitializedPrismContext();
// WHEN
PrismObject<UserType> user = prismContext.parserFor(userElement).parse();
// THEN
System.out.println("User:");
System.out.println(user.debugDump());
assertNotNull(user);
assertUserJack(user, true, true);
}
@Test
public void testPrismParseDomAdhoc() throws Exception {
// GIVEN
Document document = DOMUtil.parseFile(getFile(USER_JACK_ADHOC_BASENAME));
Element userElement = DOMUtil.getFirstChildElement(document);
PrismContext prismContext = constructInitializedPrismContext();
// WHEN
PrismObject<UserType> user = prismContext.parserFor(userElement).parse();
// THEN
System.out.println("User:");
System.out.println(user.debugDump());
assertNotNull(user);
assertUserAdhoc(user, true, false);
}
@Test
public void testPrismParseXxe() throws Exception {
PrismContext prismContext = constructInitializedPrismContext();
try {
// WHEN
prismContext.parseObject(getFile(USER_JACK_XXE_BASENAME));
AssertJUnit.fail("Unexpected success");
} catch (IllegalStateException e) {
displayExpectedException(e);
assertTrue("Unexpected exception message: "+e.getMessage(), e.getMessage().contains("DOCTYPE"));
}
}
@Test
public void testPrismParseDomXxe() {
try {
// WHEN
DOMUtil.parseFile(getFile(USER_JACK_XXE_BASENAME));
AssertJUnit.fail("Unexpected success");
} catch (IllegalStateException e) {
displayExpectedException(e);
assertTrue("Unexpected exception message: "+e.getMessage(), e.getMessage().contains("DOCTYPE"));
}
}
}