| /* |
| Licensed to the Apache Software Foundation (ASF) under one |
| or more contributor license agreements. See the NOTICE file |
| distributed with this work for additional information |
| regarding copyright ownership. The ASF licenses this file |
| to you under the Apache License, Version 2.0 (the |
| "License"); you may not use this file except in compliance |
| with the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, |
| software distributed under the License is distributed on an |
| "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| KIND, either express or implied. See the License for the |
| specific language governing permissions and limitations |
| under the License. |
| */ |
| |
| package org.apache.ofbiz.widget.test; |
| |
| import java.io.InputStream; |
| |
| import org.apache.ofbiz.base.start.Start; |
| import org.apache.ofbiz.base.util.HttpClient; |
| import org.apache.ofbiz.base.util.HttpClientException; |
| import org.apache.ofbiz.base.util.SSLUtil; |
| import org.apache.ofbiz.service.testtools.OFBizTestCase; |
| import org.apache.tika.metadata.Metadata; |
| import org.apache.tika.parser.ParseContext; |
| import org.apache.tika.parser.pdf.PDFParser; |
| import org.apache.tika.sax.BodyContentHandler; |
| |
| |
| public class WidgetMacroLibraryTests extends OFBizTestCase { |
| |
| protected String screenUrl = "https://localhost:8443/webtools/control/WebtoolsLayoutDemo" ; //use existing screen to present most of layout use case |
| protected final String authentificationQuery = "?USERNAME=admin&PASSWORD=ofbiz"; |
| |
| public WidgetMacroLibraryTests(String name) { |
| super(name); |
| } |
| |
| /* |
| * Prepare the http client to call the demo layou screen |
| */ |
| public HttpClient initHttpClient() throws HttpClientException { |
| HttpClient http = new HttpClient(); |
| http.followRedirects(true); |
| http.setAllowUntrusted(true); |
| http.setHostVerificationLevel(SSLUtil.getHostCertNoCheck()); |
| return http; |
| } |
| |
| public void testHtmlMacroLibrary() throws Exception { |
| HttpClient http = initHttpClient(); |
| if (Start.getInstance().getConfig().portOffset != 0) { |
| Integer port = 8443 + Start.getInstance().getConfig().portOffset; |
| screenUrl = screenUrl.replace("8443", port.toString()); |
| } |
| http.setUrl(screenUrl.concat(authentificationQuery)); |
| String screenOutString = http.post(); |
| assertNotNull("Response failed from ofbiz", screenOutString); |
| assertEquals("Response contentType isn't good : " + http.getResponseContentType(), "text/html;charset=UTF-8", http.getResponseContentType()); |
| |
| //Test if a ftl macro error is present |
| assertFalse("Html Screen contains Macro on error : see " + screenUrl + " for more detail", screenOutString.contains("FreeMarker template error:")); |
| } |
| |
| public void testTextMacroLibrary() throws Exception { |
| String screentextUrl = screenUrl.concat("Text"); |
| HttpClient http = initHttpClient(); |
| http.setUrl(screentextUrl.concat(authentificationQuery)); |
| String screenOutString = http.post(); |
| assertNotNull("Response failed from ofbiz", screenOutString); |
| assertEquals("Response contentType isn't good : " + http.getResponseContentType(), "text/html;charset=UTF-8", http.getResponseContentType()); |
| |
| //Test if a ftl macro error is present |
| assertFalse("Text Screen contains Macro on error : see " + screentextUrl + " for more detail", screenOutString.contains("FreeMarker template error:")); |
| } |
| |
| public void testXmlMacroLibrary() throws Exception { |
| String screenxmlUrl = screenUrl.concat("Xml"); |
| HttpClient http = initHttpClient(); |
| http.setUrl(screenxmlUrl.concat(authentificationQuery)); |
| String screenOutString = http.post(); |
| assertNotNull("Response failed from ofbiz", screenOutString); |
| assertEquals("Response contentType isn't good : " + http.getResponseContentType(), "text/xml;charset=UTF-8", http.getResponseContentType()); |
| |
| //Test if a ftl macro error is present |
| assertFalse("Xml Screen contains Macro on error : see " + screenxmlUrl + " for more detail", screenOutString.contains("FreeMarker template error:")); |
| } |
| |
| public void testCsvMacroLibrary() throws Exception { |
| String screencsvUrl = screenUrl.concat("Csv"); |
| HttpClient http = initHttpClient(); |
| http.setUrl(screencsvUrl.concat(authentificationQuery)); |
| String screenOutString = http.post(); |
| assertNotNull("Response failed from ofbiz", screenOutString); |
| assertEquals("Response contentType isn't good : " + http.getResponseContentType(), "text/csv;charset=UTF-8", http.getResponseContentType()); |
| |
| //Test if a ftl macro error is present |
| assertFalse("Csv Screen contains Macro on error : see " + screencsvUrl + " for more detail", screenOutString.contains("FreeMarker template error:")); |
| } |
| |
| public void testXlsMacroLibrary() throws Exception { |
| String screenxlsUrl = screenUrl.concat("Xls"); |
| HttpClient http = initHttpClient(); |
| http.setUrl(screenxlsUrl.concat(authentificationQuery)); |
| String screenOutString = http.post(); |
| assertNotNull("Response failed from ofbiz", screenOutString); |
| assertEquals("Response contentType isn't good : " + http.getResponseContentType(), "application/vnd.ms-excel;charset=UTF-8", http.getResponseContentType()); |
| |
| //Test if a ftl macro error is present |
| assertFalse("Csv Screen contains Macro on error : see " + screenxlsUrl + " for more detail", screenOutString.contains("FreeMarker template error:")); |
| } |
| |
| public void testFopMacroLibrary() throws Exception { |
| String screentextUrl = screenUrl.concat("Fop"); |
| HttpClient http = initHttpClient(); |
| http.setUrl(screentextUrl.concat(authentificationQuery)); |
| //FIXME need to check if the stream is an application-pdf that don't contains ftl stack trace |
| InputStream screenInputStream = (InputStream) http.postStream(); |
| assertNotNull("Response failed from ofbiz", screenInputStream); |
| assertEquals("Response contentType isn't good : " + http.getResponseContentType(), "application/pdf;charset=UTF-8", http.getResponseContentType()); |
| |
| String screenOutString = ""; |
| try { |
| BodyContentHandler handler = new BodyContentHandler(Integer.MAX_VALUE); |
| Metadata metadata = new Metadata(); |
| new PDFParser().parse(screenInputStream, handler, metadata, new ParseContext()); |
| screenOutString = handler.toString(); |
| } finally { |
| screenInputStream.close(); |
| } |
| //Test if a ftl macro error is present |
| assertFalse("Fop Screen contains Macro on error : see " + screentextUrl + " for more detail", screenOutString.contains("FreeMarker template error:")); |
| } |
| } |