fop4apex/src/test/java/de/pdv/apex/PdfServletTest.java
2022-09-09 23:02:22 +02:00

87 lines
3.2 KiB
Java

package de.pdv.apex;
import org.apache.commons.io.IOUtils;
import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.MockitoAnnotations;
import org.mockito.Spy;
import javax.servlet.ServletConfig;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.InputStream;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.nio.charset.StandardCharsets;
class PdfServletTest extends Mockito {
@Spy private PdfServlet servlet;
@Mock private ServletConfig servletConfig;
@Mock private HttpServletRequest request;
@Mock private HttpServletResponse response;
@Mock private ServletOutputStream outputStream;
@BeforeEach
public void setUp() {
MockitoAnnotations.openMocks(this);
}
@Test
void assertThatNoMethodHasBeenCalled() {
when(servlet.getServletConfig()).thenReturn(servletConfig);
Mockito.verifyNoInteractions(servlet);
}
@Test
void doGet() throws Exception {
when(servlet.getServletConfig()).thenReturn(servletConfig);
when(response.getOutputStream()).thenReturn(outputStream);
when(response.getWriter()).thenReturn(new PrintWriter(new StringWriter()));
servlet.doGet(request, response);
System.out.println("Check for header %PDF-1.4%...");
byte[] b = {0x25,0x50,0x44,0x46,0x2D,0x31,0x2E,0x34,0x0A}; //
verify(outputStream, atLeastOnce()).write(b);
System.out.println("Success!");
}
@Test
void doPost() throws Exception {
PdfServletTest app = new PdfServletTest();
InputStream xsltFile = app.getClass().getClassLoader().getResourceAsStream("samples/kostenblatt_2014.xsl");
assert xsltFile != null;
String xsltFileContent = IOUtils.toString(xsltFile, StandardCharsets.UTF_8);
InputStream xmlFile = app.getClass().getClassLoader().getResourceAsStream("samples/kostenblatt_2014.xml");
assert xmlFile != null;
String xmlFileContent = IOUtils.toString(xmlFile, StandardCharsets.UTF_8);
when(servlet.getServletConfig()).thenReturn(servletConfig);
when(response.getOutputStream()).thenReturn(outputStream);
when(request.getParameter("template")).thenReturn(xsltFileContent);
when(request.getParameter("xml")).thenReturn(xmlFileContent);
when(response.getWriter()).thenReturn(new PrintWriter(new StringWriter()));
servlet.doPost(request, response);
System.out.println("Check for header %PDF-1.4%...");
byte[] b = {0x25,0x50,0x44,0x46,0x2D,0x31,0x2E,0x34,0x0A}; //
verify(outputStream, atLeastOnce()).write(b);
System.out.println("Success!");
}
@Test
void init() {
when(servlet.getServletConfig()).thenReturn(servletConfig);
assertNotNull(servlet);
servlet.init();
assertDoesNotThrow( () -> servlet.init());
}
@Test
void getServletInfo() {
when(servlet.getServletConfig()).thenReturn(servletConfig);
String s = servlet.getServletInfo();
assertEquals("APEX FOP Server",s);
}
}