1 package org.displaytag.jsptests; 2 3 import org.apache.log4j.Level; 4 import org.apache.log4j.Logger; 5 import org.displaytag.properties.MediaTypeEnum; 6 import org.displaytag.tags.TableTag; 7 import org.displaytag.tags.TableTagParameters; 8 import org.displaytag.tags.el.ELTableTag; 9 import org.displaytag.test.DisplaytagCase; 10 import org.displaytag.util.ParamEncoder; 11 12 import com.meterware.httpunit.GetMethodWebRequest; 13 import com.meterware.httpunit.HttpInternalErrorException; 14 import com.meterware.httpunit.WebRequest; 15 import com.meterware.httpunit.WebResponse; 16 17 18 /** 19 * Tests the ResponseOverrideFilter. 20 * @author Fabrizio Giustina 21 * @version $Revision: 707 $ ($Author: fgiust $) 22 */ 23 public class FilterTest extends DisplaytagCase 24 { 25 26 /** 27 * @see org.displaytag.test.DisplaytagCase#getJspName() 28 */ 29 public String getJspName() 30 { 31 return "filter.jsp"; 32 } 33 34 /** 35 * @see org.displaytag.test.DisplaytagCase#doTest(java.lang.String) 36 */ 37 public void doTest(String jspName) throws Exception 38 { 39 ParamEncoder encoder = new ParamEncoder("table"); 40 String mediaParameter = encoder.encodeParameterName(TableTagParameters.PARAMETER_EXPORTTYPE); 41 42 WebRequest request = new GetMethodWebRequest(jspName); 43 request.setParameter(mediaParameter, Integer.toString(MediaTypeEnum.XML.getCode())); 44 45 // save previous level, since we are expeting an excetion I don't want to fill logs 46 Level previousLevel = Logger.getLogger(TableTag.class).getLevel(); 47 Level previousLevelEL = Logger.getLogger(ELTableTag.class).getLevel(); 48 49 try 50 { 51 // disable log 52 Logger.getLogger(TableTag.class).setLevel(Level.OFF); 53 Logger.getLogger(ELTableTag.class).setLevel(Level.OFF); 54 55 // check if page need a filter (unfiltered request) 56 runner.getResponse(request); 57 fail("Request works also without a filter. Can't test it properly."); 58 } 59 catch (HttpInternalErrorException e) 60 { 61 // it's ok 62 } 63 64 // reset log 65 Logger.getLogger(TableTag.class).setLevel(previousLevel); 66 Logger.getLogger(ELTableTag.class).setLevel(previousLevelEL); 67 68 request = new GetMethodWebRequest(jspName); 69 request.setParameter(mediaParameter, Integer.toString(MediaTypeEnum.XML.getCode())); 70 71 // this enable the filter! 72 request.setParameter(TableTagParameters.PARAMETER_EXPORTING, "1"); 73 74 WebResponse response = runner.getResponse(request); 75 76 assertEquals("Expected a different content type.", "text/xml", response.getContentType()); 77 } 78 79 }