package com.gisgraphy.rest;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import org.junit.Assert;
import org.junit.Test;
import org.mortbay.jetty.testing.ServletTester;
import com.gisgraphy.serializer.OutputFormat;
import com.gisgraphy.serializer.UniversalSerializer;
import com.gisgraphy.serializer.testdata.BeanForTest;
import com.gisgraphy.serializer.testdata.TestUtils;
public class RestClientTest {
BeanForTest beanForTest = TestUtils.createBeanForTest();
@Test
public void getToObjectWithStatusOK() throws Exception {
ServletTester servletTester = new ServletTester();
String url = servletTester.createSocketConnector(true);
System.out.println(url);
servletTester.addServlet(MockServlet.class, "/*");
servletTester.start();
RestClient restClient = new RestClient();
BeanForTest beanForTestActual = restClient.get(url+"/test",BeanForTest.class, OutputFormat.JSON);
Assert.assertEquals(beanForTest, beanForTestActual);
}
@Test
public void getToObjectWithNullURL() throws Exception {
RestClient restClient = new RestClient();
try {
restClient.get(null,BeanForTest.class, OutputFormat.JSON);
Assert.fail();
} catch (RestClientException e) {
}
}
@Test
public void getToOutputStreamWithNullURL() throws Exception {
RestClient restClient = new RestClient();
try {
restClient.get(null,new ByteArrayOutputStream(), OutputFormat.JSON);
Assert.fail();
} catch (RestClientException e) {
}
}
@Test
public void getInOutputStreamWithStatusOK() throws Exception {
ServletTester servletTester = new ServletTester();
String url = servletTester.createSocketConnector(true);
System.out.println(url);
servletTester.addServlet(MockServlet.class, "/*");
servletTester.start();
RestClient restClient = new RestClient();
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
restClient.get(url+"/test",byteArrayOutputStream, OutputFormat.JSON);
String resultString = byteArrayOutputStream.toString();
Assert.assertEquals(beanForTest,UniversalSerializer.getInstance().read(new ByteArrayInputStream(resultString.getBytes()), BeanForTest.class, OutputFormat.JSON));
}
@Test(expected=RuntimeException.class)
public void constructorDoesNotAcceptNullMultithreadedConnectionManager(){
new RestClient(null);
}
}