我有一个围绕httpServletRequest对象的自定义包装类。包装器的目的是在通过filterChain发送请求之前验证白名单的参数。
我遇到的问题是我已经覆盖了包装器中标准请求对象的getParameter方法;它检查参数是否在hashmap中,如果是,它将使用另一个类的实例对参数执行验证。我怎样才能对getParameter方法进行单元测试,考虑到我无法设置查询字符串或将参数设置到对象上?我已经为实际对象(使用Esapi.Validator()的类)创建了单元测试,它检查参数值是否是有效输入并将布尔值返回给包装器,所以它是否值得我花时间测试包装器? / p>
TestRequestWrapper.java
public class TestRequestWrapper extends HttpServletRequestWrapper{
private static HashMap<String, EsapiParameterValidator> validationMap = new HashMap<String, EsapiParameterValidator>();
static{
/* esapiParameterValidator takes the param name,
* name of regex in Esapi.properties, field length
* and boolean indicating if the parameter can be null
*/
validationMap.put("lob", new EsapiParameterValidator("lob", "REG.lob", 3, false));
// number of other entries
}
public TestRequestWrapper(HttpServletRequest request){
super(request);
}
public String getParameter(String parameter){
String value = super.getParameter(parameter);
if(validationMap.containsKey(parameter)){
EsapiParameterValidator epv = validationMap.get(parameter);
value = epv.getValidatedParam(value) ? value : "";
}
return value;
}