![JAR search and dependency download from the Maven repository](/logo.png)
org.languagetool.server.HTTPTestTools Maven / Gradle / Ivy
The newest version!
/* LanguageTool, a natural language style checker
* Copyright (C) 2012 Daniel Naber (http://www.danielnaber.de)
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
* USA
*/
package org.languagetool.server;
import org.languagetool.tools.StringTools;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.net.ConnectException;
import java.net.URL;
import java.net.URLConnection;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.security.cert.X509Certificate;
import java.sql.Date;
import java.util.HashMap;
import java.util.Map;
import static java.nio.charset.StandardCharsets.UTF_8;
public final class HTTPTestTools {
private HTTPTestTools() {
}
/**
* Get default port, but considering property {@code lt.default.port}.
*/
public static int getDefaultPort() {
String defaultPort = System.getProperty("lt.default.port");
return defaultPort != null ? Integer.parseInt(defaultPort) : 8081; // see HTTPServerConfig.DEFAULT_PORT
}
/**
* For testing, we disable all checks because we use a self-signed certificate on the server
* side and we want this test to run everywhere without importing the certificate into the JVM's trust store.
*
* See http://stackoverflow.com/questions/2893819/telling-java-to-accept-self-signed-ssl-certificate
*/
public static void disableCertChecks() throws NoSuchAlgorithmException, KeyManagementException {
TrustManager[] trustAllCerts = {
new X509TrustManager() {
@Override
public X509Certificate[] getAcceptedIssuers() {
return null;
}
@Override
public void checkClientTrusted(X509Certificate[] certs, String authType) {}
@Override
public void checkServerTrusted(X509Certificate[] certs, String authType) {}
}
};
SSLContext sc = SSLContext.getInstance("SSL");
sc.init(null, trustAllCerts, new SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
}
public static String checkAtUrl(URL url) throws IOException {
try {
InputStream stream = (InputStream)url.getContent();
return StringTools.streamToString(stream, "UTF-8");
} catch (ConnectException e) {
throw new RuntimeException("Could not connect to " + url, e);
}
}
public static String checkAtUrlByPost(URL url, String postData) throws IOException {
return checkAtUrlByPost(url, postData, new HashMap<>());
}
public static String checkAtUrlByPost(URL url, String postData, Map properties) throws IOException {
String keepAlive = System.getProperty("http.keepAlive");
try {
System.setProperty("http.keepAlive", "false"); // without this, there's an overhead of about 1 second - not sure why
URLConnection connection = url.openConnection();
for (Map.Entry entry : properties.entrySet()) {
connection.setRequestProperty(entry.getKey(), entry.getValue());
}
connection.setDoOutput(true);
try (Writer writer = new OutputStreamWriter(connection.getOutputStream(), UTF_8)) {
writer.write(postData);
writer.flush();
return StringTools.streamToString(connection.getInputStream(), "UTF-8");
}
} finally {
if (keepAlive != null) {
System.setProperty("http.keepAlive", keepAlive);
}
}
}
static class TestData {
public static final String TOKEN_V2_1 = "4472b043ce935018e1a5bf5ef4b8a21b";
public static final Long USER_GROUP_1 = 1L;
public static final String NAME1 = "One";
protected static final String USERNAME1 = "[email protected]";
protected static final String API_KEY1 = "foo";
protected static final long USER_ID1 = 1;
protected static final Date PREMIUM_FROM1 = Date.valueOf("1970-01-01");
protected static final String NAME2 = "Two";
protected static final String USERNAME2 = "[email protected]";
protected static final String API_KEY2 = "foo-two";
protected static final Date PREMIUM_FROM2 = Date.valueOf("2000-01-01");
protected static final long USER_ID2 = 2;
protected static final String USERNAME3 = "[email protected]";
protected static final String NAME3 = "Three";
protected static final String PASSWORD3 = "password";
protected static final long USER_ID3 = 3;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy