blob: 42100459074900e18613968cc2decbd842893cea [file] [log] [blame]
/*
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:"));
}
}