/******************************************************************************* * 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); } } }