org.eclipse.ecf.tests.remoteservice.rest.service.RestServiceTest.java Source code

Java tutorial

Introduction

Here is the source code for org.eclipse.ecf.tests.remoteservice.rest.service.RestServiceTest.java

Source

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

}