1 /*
2  * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4  *
5  * This code is free software; you can redistribute it and/or modify it
6  * under the terms of the GNU General Public License version 2 only, as
7  * published by the Free Software Foundation.
8  *
9  * This code is distributed in the hope that it will be useful, but WITHOUT
10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
12  * version 2 for more details (a copy is included in the LICENSE file that
13  * accompanied this code).
14  *
15  * You should have received a copy of the GNU General Public License version
16  * 2 along with this work; if not, write to the Free Software Foundation,
17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18  *
19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20  * or visit www.oracle.com if you need additional information or have any
21  * questions.
22  */
23 
24 package validation;
25 
26 import java.io.File;
27 
28 import javax.xml.XMLConstants;
29 import javax.xml.validation.Schema;
30 import javax.xml.validation.SchemaFactory;
31 import javax.xml.validation.Validator;
32 
33 import org.testng.Assert;
34 import org.testng.annotations.Listeners;
35 import org.testng.annotations.Test;
36 
37 /*
38  * @test
39  * @library /javax/xml/jaxp/libs /javax/xml/jaxp/unittest
40  * @run testng/othervm -DrunSecMngr=true validation.LargeMaxOccursTest
41  * @run testng/othervm validation.LargeMaxOccursTest
42  * @summary Test Validator shall report error for maxOccurs > 5000 when FEATURE_SECURE_PROCESSING is on, except the schema can be applied for constant-space algorithm.
43  */
44 @Listeners({jaxp.library.FilePolicy.class})
45 public class LargeMaxOccursTest {
46 
47     @Test
testParticlesR005()48     public void testParticlesR005() {
49         try {
50             SchemaFactory sf = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
51             String xsdFile = "particlesR005.xsd";
52             Schema schema = sf.newSchema(new File(getClass().getResource(xsdFile).toURI()));
53             Validator validator = schema.newValidator();
54         } catch (Exception ex) {
55             return; // expected
56         }
57         Assert.fail("Parser configuration error expected since maxOccurs > 5000 " + "and constant-space optimization does not apply");
58     }
59 
60     @Test
testParticlesIe003()61     public void testParticlesIe003() {
62         try {
63             SchemaFactory sf = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
64             String xsdFile = "particlesIe003.xsd";
65             Schema schema = sf.newSchema(new File(getClass().getResource(xsdFile).toURI()));
66             Validator validator = schema.newValidator();
67         } catch (Exception ex) {
68             return; // expected
69         }
70         Assert.fail("Parser configuration error expected since maxOccurs > 5000 " + "and constant-space optimization does not apply");
71     }
72 
73     @Test
testmgG014()74     public void testmgG014() {
75         try {
76             SchemaFactory sf = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
77             String xsdFile = "mgG014.xsd";
78             Schema schema = sf.newSchema(new File(getClass().getResource(xsdFile).toURI()));
79             Validator validator = schema.newValidator();
80         } catch (Exception ex) {
81             return; // expected
82         }
83         Assert.fail("Parser configuration error expected since maxOccurs > 5000 " + "and constant-space optimization does not apply");
84     }
85 
86     @Test
testmgJ014()87     public void testmgJ014() {
88         try {
89             SchemaFactory sf = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
90             String xsdFile = "mgJ014.xsd";
91             Schema schema = sf.newSchema(new File(getClass().getResource(xsdFile).toURI()));
92             Validator validator = schema.newValidator();
93         } catch (Exception ex) {
94             return; // expected
95         }
96         Assert.fail("Parser configuration error expected since maxOccurs > 5000 " + "and constant-space optimization does not apply");
97     }
98 
99     // particlesOptimize.xsd missing.
100     @Test
testParticlesOptimize()101     public void testParticlesOptimize() {
102         try {
103             SchemaFactory sf = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
104             String xsdFile = "particlesOptimize.xsd";
105             Schema schema = sf.newSchema(new File(getClass().getResource(xsdFile).toURI()));
106             Validator validator = schema.newValidator();
107         } catch (Exception ex) {
108             Assert.fail("Parser configuration error not expected since maxOccurs " + "> 5000 but constant-space optimization applies");
109         }
110     }
111 }
112