/*******************************************************************************
* Copyright (c) 2012 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:
* Holger Staudacher - initial API and implementation
******************************************************************************/
package com.eclipsesource.jaxrs.consumer;
import static com.eclipsesource.jaxrs.consumer.test.TestUtil.createResource;
import static com.github.restdriver.clientdriver.ClientDriverRequest.Method.DELETE;
import static com.github.restdriver.clientdriver.ClientDriverRequest.Method.GET;
import static com.github.restdriver.clientdriver.ClientDriverRequest.Method.HEAD;
import static com.github.restdriver.clientdriver.ClientDriverRequest.Method.OPTIONS;
import static com.github.restdriver.clientdriver.ClientDriverRequest.Method.POST;
import static com.github.restdriver.clientdriver.ClientDriverRequest.Method.PUT;
import static com.github.restdriver.clientdriver.RestClientDriver.giveEmptyResponse;
import static com.github.restdriver.clientdriver.RestClientDriver.giveResponse;
import static com.github.restdriver.clientdriver.RestClientDriver.onRequestTo;
import static org.junit.Assert.assertEquals;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.HEAD;
import javax.ws.rs.OPTIONS;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.core.MediaType;
import org.glassfish.jersey.client.ClientConfig;
import org.junit.Rule;
import org.junit.Test;
import com.github.restdriver.clientdriver.ClientDriverRule;
public class SimpleRequestsTest {
@Rule
public ClientDriverRule driver = new ClientDriverRule();
@Path( "/test" )
private interface FakeResource {
@GET
String getContent();
@POST
String postContent();
@POST
String postContent( String content );
@PUT
String putContent( String content );
@DELETE
String deleteContent();
@HEAD
void head();
@OPTIONS
void options();
}
@Test
public void testSimpleGet() {
driver.addExpectation( onRequestTo( "/test" ).withMethod( GET ),
giveResponse( "get", "text/plain" ).withStatus( 200 ) );
FakeResource resource = createResource( FakeResource.class, driver.getBaseUrl() );
assertEquals( "get", resource.getContent() );
}
@Test
public void testSimpleGetWithConfiguration() {
driver.addExpectation( onRequestTo( "/test" ).withMethod( GET ),
giveResponse( "get", "text/plain" ).withStatus( 200 ) );
FakeResource resource = ConsumerFactory.createConsumer( driver.getBaseUrl(),
new ClientConfig(),
FakeResource.class );
assertEquals( "get", resource.getContent() );
}
@Test( expected = IllegalStateException.class )
public void testSimpleGetWith500() {
driver.addExpectation( onRequestTo( "/test" ).withMethod( GET ), giveEmptyResponse().withStatus( 500 ) );
FakeResource resource = createResource( FakeResource.class, driver.getBaseUrl() );
resource.getContent();
}
@Test( expected = IllegalStateException.class )
public void testSimpleGetWith404() {
driver.addExpectation( onRequestTo( "/test" ).withMethod( GET ), giveEmptyResponse().withStatus( 404 ) );
FakeResource resource = createResource( FakeResource.class, driver.getBaseUrl() );
resource.getContent();
}
@Test
public void testSimplePost() {
driver.addExpectation( onRequestTo( "/test" ).withMethod( POST ),
giveResponse( "post", "text/plain" ) );
FakeResource resource = createResource( FakeResource.class, driver.getBaseUrl() );
assertEquals( "post", resource.postContent() );
}
@Test( expected = IllegalStateException.class )
public void testSimplePostWith500() {
driver.addExpectation( onRequestTo( "/test" ).withMethod( POST ),
giveEmptyResponse().withStatus( 500 ) );
FakeResource resource = createResource( FakeResource.class, driver.getBaseUrl() );
resource.postContent();
}
@Test( expected = IllegalStateException.class )
public void testSimplePostWith404() {
driver.addExpectation( onRequestTo( "/test" ).withMethod( POST ),
giveEmptyResponse().withStatus( 404 ) );
FakeResource resource = createResource( FakeResource.class, driver.getBaseUrl() );
resource.postContent();
}
@Test
public void testSimplePostWithContent() {
driver.addExpectation( onRequestTo( "/test" )
.withMethod( POST )
.withBody( "test", MediaType.TEXT_PLAIN ), giveResponse( "postWithBody", "text/plain" ) );
FakeResource resource = createResource( FakeResource.class, driver.getBaseUrl() );
assertEquals( "postWithBody", resource.postContent( "test" ) );
}
@Test( expected = IllegalStateException.class )
public void testSimplePostWithContentWith500() {
driver.addExpectation( onRequestTo( "/test" )
.withMethod( POST )
.withBody( "test", MediaType.TEXT_PLAIN ), giveEmptyResponse().withStatus( 500 ) );
FakeResource resource = createResource( FakeResource.class, driver.getBaseUrl() );
resource.postContent( "test" );
}
@Test( expected = IllegalStateException.class )
public void testSimplePostWithContentWith404() {
driver.addExpectation( onRequestTo( "/test" )
.withMethod( POST )
.withBody( "test", MediaType.TEXT_PLAIN ), giveEmptyResponse().withStatus( 404 ) );
FakeResource resource = createResource( FakeResource.class, driver.getBaseUrl() );
resource.postContent( "test" );
}
@Test
public void testSimplePut() {
driver.addExpectation( onRequestTo( "/test" )
.withMethod( PUT )
.withBody( "test", MediaType.TEXT_PLAIN ), giveResponse( "put", "text/plain" ) );
FakeResource resource = createResource( FakeResource.class, driver.getBaseUrl() );
assertEquals( "put", resource.putContent( "test" ) );
}
@Test( expected = IllegalStateException.class )
public void testSimplePutWith500() {
driver.addExpectation( onRequestTo( "/test" )
.withMethod( PUT )
.withBody( "test", MediaType.TEXT_PLAIN ), giveEmptyResponse().withStatus( 500 ) );
FakeResource resource = createResource( FakeResource.class, driver.getBaseUrl() );
resource.putContent( "test" );
}
@Test( expected = IllegalStateException.class )
public void testSimplePutWith404() {
driver.addExpectation( onRequestTo( "/test" )
.withMethod( PUT )
.withBody( "test", MediaType.TEXT_PLAIN ), giveEmptyResponse().withStatus( 404 ) );
FakeResource resource = createResource( FakeResource.class, driver.getBaseUrl() );
resource.putContent( "test" );
}
@Test
public void testSimpleDelete() {
driver.addExpectation( onRequestTo( "/test" ).withMethod( DELETE ), giveResponse( "delete", "text/plain" ) );
FakeResource resource = createResource( FakeResource.class, driver.getBaseUrl() );
assertEquals( "delete", resource.deleteContent() );
}
@Test( expected = IllegalStateException.class )
public void testSimpleDeleteWith500() {
driver.addExpectation( onRequestTo( "/test" ).withMethod( DELETE ), giveEmptyResponse().withStatus( 500 ) );
FakeResource resource = createResource( FakeResource.class, driver.getBaseUrl() );
resource.deleteContent();
}
@Test( expected = IllegalStateException.class )
public void testSimpleDeleteWith404() {
driver.addExpectation( onRequestTo( "/test" ).withMethod( DELETE ), giveEmptyResponse().withStatus( 404 ) );
FakeResource resource = createResource( FakeResource.class, driver.getBaseUrl() );
resource.deleteContent();
}
@Test
public void testSimpleHead() {
driver.addExpectation( onRequestTo( "/test" ).withMethod( HEAD ), giveEmptyResponse() );
FakeResource resource = createResource( FakeResource.class, driver.getBaseUrl() );
resource.head();
}
@Test( expected = IllegalStateException.class )
public void testSimpleHeadWith500() {
driver.addExpectation( onRequestTo( "/test" ).withMethod( HEAD ), giveEmptyResponse().withStatus( 500 ) );
FakeResource resource = createResource( FakeResource.class, driver.getBaseUrl() );
resource.head();
}
@Test( expected = IllegalStateException.class )
public void testSimpleHeadWith404() {
driver.addExpectation( onRequestTo( "/test" ).withMethod( HEAD ), giveEmptyResponse().withStatus( 404 ) );
FakeResource resource = createResource( FakeResource.class, driver.getBaseUrl() );
resource.head();
}
@Test
public void testSimpleOptions() {
driver.addExpectation( onRequestTo( "/test" ).withMethod( OPTIONS ), giveEmptyResponse() );
FakeResource resource = createResource( FakeResource.class, driver.getBaseUrl() );
resource.options();
}
@Test( expected = IllegalStateException.class )
public void testSimpleOptionsWith500() {
driver.addExpectation( onRequestTo( "/test" ).withMethod( OPTIONS ), giveEmptyResponse().withStatus( 500 ) );
FakeResource resource = createResource( FakeResource.class, driver.getBaseUrl() );
resource.options();
}
@Test( expected = IllegalStateException.class )
public void testSimpleOptionsWith404() {
driver.addExpectation( onRequestTo( "/test" ).withMethod( OPTIONS ), giveEmptyResponse().withStatus( 404 ) );
FakeResource resource = createResource( FakeResource.class, driver.getBaseUrl() );
resource.options();
}
}