Java tutorial
/******************************************************************************* * Copyright (c) 2009 EclipseSource and others. All rights reserved. This * program and the accompanying materials are made available under the terms of * the Eclipse Public License v1.0 which accompanies this distribution, and is * available at http://www.eclipse.org/legal/epl-v10.html * * Contributors: * EclipseSource - initial API and implementation *******************************************************************************/ package org.eclipse.ecf.tests.remoteservice.rest.service; import java.io.IOException; import junit.framework.TestCase; import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.HttpException; import org.apache.commons.httpclient.HttpMethod; import org.apache.commons.httpclient.HttpMethodBase; import org.apache.commons.httpclient.HttpStatus; import org.apache.commons.httpclient.NoHttpResponseException; import org.apache.commons.httpclient.server.SimpleHttpServer; public class RestServiceTest extends TestCase { private SimpleRestService service; protected void setUp() throws Exception { if (service == null) { service = new SimpleRestService(); } } protected void tearDown() throws Exception { service.shutdown(); } public void testServerCreation() { assertNotNull(service); SimpleHttpServer server = service.getServer(); assertNotNull(server); assertTrue(server.isRunning()); } public void testStart() { SimpleHttpServer server = service.getServer(); assertNotNull(server); service.run(); assertTrue(server.isRunning()); } public void testStop() { SimpleHttpServer server = service.getServer(); assertNotNull(server); service.shutdown(); server = service.getServer(); assertNull(server); } public void testServerUrl() { String url = service.getServerUrl(); assertEquals("http://localhost:" + service.getServer().getLocalPort(), url); } public void testSimpleRequest() { String serverUrl = service.getServerUrl(); HttpClient client = new HttpClient(); HttpMethod method = new HttpMethodBase(serverUrl + "/getTest") { public String getName() { return "GET"; } }; int responseCode = 0; try { responseCode = client.executeMethod(method); } catch (HttpException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } assertEquals(HttpStatus.SC_OK, responseCode); } public void testXMLRequest() { String serverUrl = service.getServerUrl(); HttpClient client = new HttpClient(); HttpMethod method = new HttpMethodBase(serverUrl + "/test.xml") { public String getName() { return "GET"; } }; int responseCode = 0; try { responseCode = client.executeMethod(method); } catch (HttpException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } assertEquals(HttpStatus.SC_OK, responseCode); try { String body = method.getResponseBodyAsString(); assertEquals(SimpleRestService.XML_RESPONSE, body); } catch (IOException e) { e.printStackTrace(); fail("body was not set correctly"); } } public void testJsonResponse() { String serverUrl = service.getServerUrl(); HttpClient client = new HttpClient(); HttpMethod method = new HttpMethodBase(serverUrl + "/test.json") { public String getName() { return "GET"; } }; int responseCode = 0; try { responseCode = client.executeMethod(method); } catch (HttpException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } assertEquals(HttpStatus.SC_OK, responseCode); try { String body = method.getResponseBodyAsString(); assertEquals(SimpleRestService.JSON_RESPONSE, body); } catch (IOException e) { e.printStackTrace(); fail("body was not set correctly"); } } public void testPost() { String serverUrl = service.getServerUrl(); HttpClient client = new HttpClient(); HttpMethod method = new HttpMethodBase(serverUrl + "/test.json") { public String getName() { return "POST"; } }; try { client.executeMethod(method); } catch (HttpException e) { e.printStackTrace(); fail(); } catch (IOException e) { assertTrue(e instanceof NoHttpResponseException); } } }