package com.flexmls.flexmls_api;
import static junit.framework.Assert.assertEquals;
import static junit.framework.Assert.assertTrue;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import org.apache.http.HttpHost;
import org.apache.http.HttpRequest;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.conn.scheme.Scheme;
import org.apache.http.conn.ssl.SSLSocketFactory;
import org.apache.http.impl.client.DefaultHttpClient;
import org.junit.Ignore;
import org.junit.Test;
import com.flexmls.flexmls_api.ConnectionApacheHttps;
@Ignore
public class HttpClientTest {
@Test
public void testGet() throws IOException{
HttpClient c = new DefaultHttpClient();
HttpHost h = new HttpHost("frink.fbsdata.com");
HttpRequest r = new HttpGet("/~wade/");
HttpResponse rs = c.execute(h,r);
assertEquals(200, rs.getStatusLine().getStatusCode());
assertTrue(readString(rs.getEntity().getContent()).contains("KaPOW!"));
}
@Test
public void testSSL() throws Exception {
SSLContext sslContext = SSLContext.getInstance("TLS");
sslContext.init(null,new TrustManager[]{new ConnectionApacheHttps.FullTrustManager()},null);
HttpClient c = new DefaultHttpClient();
SSLSocketFactory sf = new SSLSocketFactory(sslContext,SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
Scheme https = new Scheme("https", 443, sf);
c.getConnectionManager().getSchemeRegistry().register(https);
HttpHost h = new HttpHost("api.flexmls.com", 443, "https");
HttpRequest r = new HttpGet("/v1/");
HttpResponse rs = c.execute(h,r);
assertEquals(404, rs.getStatusLine().getStatusCode());
String s = readString(rs.getEntity().getContent());
assertEquals(s, "{\"D\":{\"Success\":false,\"Code\":404,\"Message\":\"Not Found\"}}");
}
private String readString(InputStream is) throws IOException{
StringBuffer fileData = new StringBuffer(1000);
BufferedReader reader = new BufferedReader(
new InputStreamReader(is));
char[] buf = new char[1024];
int numRead=0;
while((numRead=reader.read(buf)) != -1){
String readData = String.valueOf(buf, 0, numRead);
fileData.append(readData);
buf = new char[1024];
}
reader.close();
return fileData.toString();
}
}