1   /*
2    * $Id: ExceptionTest.java 387116 2006-03-20 02:32:31Z niallp $
3    * $Rev: 387116 $
4    * $Date: 2006-03-20 02:32:31 +0000 (Mon, 20 Mar 2006) $
5    *
6    * ====================================================================
7    * Copyright  2004-2005 The Apache Software Foundation
8    *
9    * Licensed under the Apache License, Version 2.0 (the "License");
10   * you may not use this file except in compliance with the License.
11   * You may obtain a copy of the License at
12   *
13   *     http://www.apache.org/licenses/LICENSE-2.0
14   *
15   * Unless required by applicable law or agreed to in writing, software
16   * distributed under the License is distributed on an "AS IS" BASIS,
17   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18   * See the License for the specific language governing permissions and
19   * limitations under the License.
20   */
21  
22  package org.apache.commons.validator;
23  
24  import java.io.IOException;
25  
26  import org.xml.sax.SAXException;
27  
28  /***                                                       
29   * Performs Validation Test for exception handling.
30   */
31  public class ExceptionTest extends TestCommon {
32  
33      /***
34       * The key used to retrieve the set of validation 
35       * rules from the xml file.
36       */
37      protected static String FORM_KEY = "exceptionForm";
38  
39      /***
40       * The key used to retrieve the validator action.
41       */
42      protected static String ACTION = "raiseException";
43  
44      public ExceptionTest(String name) {
45          super(name);
46      }
47  
48      /***
49       * Load <code>ValidatorResources</code> from 
50       * validator-exception.xml.
51       */
52      protected void setUp() throws IOException, SAXException {
53          loadResources("ExceptionTest-config.xml");
54      }
55  
56      /***
57       * Tests handling of checked exceptions - should become 
58       * ValidatorExceptions.
59       */
60      public void testValidatorException() {
61          // Create bean to run test on.
62          ValueBean info = new ValueBean();
63          info.setValue("VALIDATOR");
64  
65          // Construct validator based on the loaded resources 
66          // and the form key
67          Validator validator = new Validator(resources, FORM_KEY);
68          // add the name bean to the validator as a resource 
69          // for the validations to be performed on.
70          validator.setParameter(Validator.BEAN_PARAM, info);
71  
72          // Get results of the validation which can throw ValidatorException
73          try {
74              validator.validate();
75              fail("ValidatorException should occur here!");
76          } catch (ValidatorException expected) {
77              assertTrue("VALIDATOR-EXCEPTION".equals(expected.getMessage()));
78          }
79      }
80  
81      /***
82       * Tests handling of runtime exceptions.
83       *
84       * N.B. This test has been removed (renamed) as it currently
85       *      serves no purpose. If/When exception handling
86       *      is changed in Validator 2.0 it can be reconsidered
87       *      then.
88       */
89      public void XtestRuntimeException() throws ValidatorException {
90          // Create bean to run test on.
91          ValueBean info = new ValueBean();
92          info.setValue("RUNTIME");
93  
94          // Construct validator based on the loaded resources 
95          // and the form key
96          Validator validator = new Validator(resources, FORM_KEY);
97          // add the name bean to the validator as a resource 
98          // for the validations to be performed on.
99          validator.setParameter(Validator.BEAN_PARAM, info);
100 
101         // Get results of the validation which can throw ValidatorException
102         try {
103             validator.validate();
104             //fail("RuntimeException should occur here!");
105         } catch (RuntimeException expected) {
106             fail("RuntimeExceptions should be treated as validation failures in Validator 1.x.");
107             // This will be true in Validator 2.0
108             //assertTrue("RUNTIME-EXCEPTION".equals(expected.getMessage()));
109         }
110     }
111 
112     /***
113      * Tests handling of checked exceptions - should become 
114      * ValidatorExceptions.
115      *
116      * N.B. This test has been removed (renamed) as it currently
117      *      serves no purpose. If/When exception handling
118      *      is changed in Validator 2.0 it can be reconsidered
119      *      then.
120      */
121     public void XtestCheckedException() {
122         // Create bean to run test on.
123         ValueBean info = new ValueBean();
124         info.setValue("CHECKED");
125 
126         // Construct validator based on the loaded resources 
127         // and the form key
128         Validator validator = new Validator(resources, FORM_KEY);
129         // add the name bean to the validator as a resource 
130         // for the validations to be performed on.
131         validator.setParameter(Validator.BEAN_PARAM, info);
132 
133         // Get results of the validation which can throw ValidatorException
134         
135         // Tests Validator 1.x exception handling
136         try {
137             validator.validate();
138         } catch (ValidatorException expected) {
139             fail("Checked exceptions are not wrapped in ValidatorException in Validator 1.x.");
140         } catch (Exception e) {
141             assertTrue("CHECKED-EXCEPTION".equals(e.getMessage()));
142         }
143         
144         // This will be true in Validator 2.0
145 //        try {
146 //            validator.validate();
147 //            fail("ValidatorException should occur here!");
148 //        } catch (ValidatorException expected) {
149 //            assertTrue("CHECKED-EXCEPTION".equals(expected.getMessage()));
150 //        }
151     }
152 }