1 package org.displaytag.jsptests;
2
3 import java.io.InputStream;
4
5 import org.displaytag.export.ExportViewFactory;
6 import org.displaytag.properties.MediaTypeEnum;
7 import org.displaytag.tags.TableTagParameters;
8 import org.displaytag.test.DisplaytagCase;
9 import org.displaytag.util.ParamEncoder;
10
11 import com.lowagie.text.pdf.PdfReader;
12 import com.meterware.httpunit.GetMethodWebRequest;
13 import com.meterware.httpunit.WebRequest;
14 import com.meterware.httpunit.WebResponse;
15
16
17 /***
18 * Tests for pdf export.
19 * @author Fabrizio Giustina
20 * @version $Revision: 1.4 $ ($Author: fgiust $)
21 */
22 public class ExportPdfFilterTest extends DisplaytagCase
23 {
24
25 /***
26 * @see org.displaytag.test.DisplaytagCase#getJspName()
27 */
28 public String getJspName()
29 {
30 return "exportfull.jsp";
31 }
32
33 /***
34 * Test for content disposition and filename.
35 * @param jspName jsp name, with full path
36 * @throws Exception any axception thrown during test.
37 */
38 public void doTest(String jspName) throws Exception
39 {
40
41 ParamEncoder encoder = new ParamEncoder("table");
42 String mediaParameter = encoder.encodeParameterName(TableTagParameters.PARAMETER_EXPORTTYPE);
43 WebRequest request = new GetMethodWebRequest(jspName);
44
45
46 ExportViewFactory.getInstance();
47 MediaTypeEnum pdfMedia = MediaTypeEnum.fromName("pdf");
48 assertNotNull("Pdf export view not correctly registered.", pdfMedia);
49 request.setParameter(mediaParameter, Integer.toString(pdfMedia.getCode()));
50
51
52 request.setParameter(TableTagParameters.PARAMETER_EXPORTING, "1");
53
54 WebResponse response = runner.getResponse(request);
55
56
57 assertEquals("Expected a different content type.", "application/pdf", response.getContentType());
58
59 assertTrue("Content length should be set.", response.getContentLength() > -1);
60 InputStream stream = response.getInputStream();
61 byte[] result = new byte[response.getContentLength()];
62 stream.read(result);
63
64 PdfReader reader = new PdfReader(result);
65 assertEquals("Expected a valid pdf file with a single page", 1, reader.getNumberOfPages());
66
67 }
68
69 }