Added testCase for all Services

This commit is contained in:
Giuseppe Bueti 2016-01-31 11:05:11 +01:00
parent 663def8e2c
commit b39ec7d76e
6 changed files with 206 additions and 137 deletions

View File

@ -99,21 +99,6 @@
<version>2.4</version> <version>2.4</version>
</dependency> </dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.7.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.7.0</version>
</dependency>
</dependencies> </dependencies>

View File

@ -17,6 +17,12 @@ public interface ServicesInterface {
Movie movieByImdbID(@QueryParam("imdbID") String imdbID); Movie movieByImdbID(@QueryParam("imdbID") String imdbID);
@GET
@Path("/listmovies")
@Produces({"application/json"})
List<Movie> listMovies();
@POST @POST
@Path("/addmovie") @Path("/addmovie")
@Consumes({MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML}) @Consumes({MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML})
@ -34,9 +40,5 @@ public interface ServicesInterface {
Response deleteMovie(@QueryParam("imdbID") String imdbID); Response deleteMovie(@QueryParam("imdbID") String imdbID);
@GET
@Path("/listmovies")
@Produces({"application/json"})
List<Movie> listMovies();
} }

View File

@ -18,18 +18,21 @@ public class MovieCrudService {
private Map<String,Movie> inventory = new HashMap<String, Movie>(); private Map<String,Movie> inventory = new HashMap<String, Movie>();
@GET @GET
@Path("/getinfo") @Path("/getinfo")
@Produces({MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML}) @Produces({MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML})
public Movie movieByImdbID(@QueryParam("imdbID") String imdbID){ public Movie movieByImdbID(@QueryParam("imdbID") String imdbID){
System.out.println("*** Calling getinfo ***"); System.out.println("*** Calling getinfo for a given ImdbID***");
if(inventory.containsKey(imdbID)){
return inventory.get(imdbID);
}else return null;
Movie movie=new Movie();
movie.setImdbID(imdbID);
return movie;
} }
@POST @POST
@Path("/addmovie") @Path("/addmovie")
@Consumes({MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML}) @Consumes({MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML})
@ -41,6 +44,7 @@ public class MovieCrudService {
return Response.status(Response.Status.NOT_MODIFIED) return Response.status(Response.Status.NOT_MODIFIED)
.entity("Movie is Already in the database.").build(); .entity("Movie is Already in the database.").build();
} }
inventory.put(movie.getImdbID(),movie); inventory.put(movie.getImdbID(),movie);
return Response.status(Response.Status.CREATED).build(); return Response.status(Response.Status.CREATED).build();
@ -54,7 +58,7 @@ public class MovieCrudService {
System.out.println("*** Calling updateMovie ***"); System.out.println("*** Calling updateMovie ***");
if (null!=inventory.get(movie.getImdbID())){ if (null==inventory.get(movie.getImdbID())){
return Response.status(Response.Status.NOT_MODIFIED) return Response.status(Response.Status.NOT_MODIFIED)
.entity("Movie is not in the database.\nUnable to Update").build(); .entity("Movie is not in the database.\nUnable to Update").build();
} }
@ -79,6 +83,7 @@ public class MovieCrudService {
return Response.status(Response.Status.OK).build(); return Response.status(Response.Status.OK).build();
} }
@GET @GET
@Path("/listmovies") @Path("/listmovies")
@Produces({"application/json"}) @Produces({"application/json"})

View File

@ -33,7 +33,7 @@
</servlet-class> </servlet-class>
<init-param> <init-param>
<param-name>javax.ws.rs.Application</param-name> <param-name>javax.ws.rs.Application</param-name>
<param-value>com.baeldung.server.service.RestEasyServices</param-value> <param-value>com.baeldung.server.RestEasyServices</param-value>
</init-param> </init-param>
</servlet> </servlet>

View File

@ -1,112 +0,0 @@
package com.baeldung.server;
import com.baeldung.model.Movie;
import com.baeldung.client.ServicesInterface;
import org.apache.commons.io.IOUtils;
import org.codehaus.jackson.map.DeserializationConfig;
import org.codehaus.jackson.map.ObjectMapper;
import org.jboss.resteasy.client.jaxrs.ResteasyClient;
import org.jboss.resteasy.client.jaxrs.ResteasyClientBuilder;
import org.jboss.resteasy.client.jaxrs.ResteasyWebTarget;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import javax.naming.NamingException;
import javax.ws.rs.core.Link;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriBuilder;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.InputStream;
import java.nio.charset.StandardCharsets;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.List;
import java.util.Locale;
public class RestEasyClient {
Movie transformerMovie=null;
Movie batmanMovie=null;
ObjectMapper jsonMapper=null;
@BeforeClass
public static void loadMovieInventory(){
}
@Before
public void setup() throws ClassNotFoundException, IllegalAccessException, InstantiationException, NamingException {
jsonMapper=new ObjectMapper().configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);
jsonMapper.configure(DeserializationConfig.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true);
SimpleDateFormat sdf = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss zzz", Locale.ENGLISH);
jsonMapper.setDateFormat(sdf);
try (InputStream inputStream = new RestEasyClient().getClass().getResourceAsStream("./movies/transformer.json")) {
String transformerMovieAsString = String.format(IOUtils.toString(inputStream, StandardCharsets.UTF_8));
transformerMovie = jsonMapper.readValue(transformerMovieAsString, Movie.class);
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException("Test is going to die ...", e);
}
try (InputStream inputStream = new RestEasyClient().getClass().getResourceAsStream("./movies/batman.json")) {
String batmanMovieAsString = String.format(IOUtils.toString(inputStream, StandardCharsets.UTF_8));
batmanMovie = jsonMapper.readValue(batmanMovieAsString, Movie.class);
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException("Test is going to die ...", e);
}
}
@Test
public void testListAllMovies() {
try {
ResteasyClient client = new ResteasyClientBuilder().build();
ResteasyWebTarget target = client.target(UriBuilder.fromPath("http://localhost:8080/RestEasyTutorial/rest"));
ServicesInterface simple = target.proxy(ServicesInterface.class);
final List<Movie> movies = simple.listMovies();
System.out.println(movies);
} catch (Exception e) {
e.printStackTrace();
}
}
@Test
public void testAddMovie() {
try {
ResteasyClient client = new ResteasyClientBuilder().build();
ResteasyWebTarget target = client.target(UriBuilder.fromPath("http://localhost:8080/RestEasyTutorial/rest"));
ServicesInterface simple = target.proxy(ServicesInterface.class);
final Response moviesResponse = simple.addMovie(batmanMovie);
if (moviesResponse.getStatus() != 201) {
System.out.println(moviesResponse.readEntity(String.class));
throw new RuntimeException("Failed : HTTP error code : "
+ moviesResponse.getStatus());
}
moviesResponse.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}

View File

@ -0,0 +1,189 @@
package com.baeldung.server;
import com.baeldung.model.Movie;
import com.baeldung.client.ServicesInterface;
import org.apache.commons.io.IOUtils;
import org.codehaus.jackson.map.DeserializationConfig;
import org.codehaus.jackson.map.ObjectMapper;
import org.jboss.resteasy.client.jaxrs.ResteasyClient;
import org.jboss.resteasy.client.jaxrs.ResteasyClientBuilder;
import org.jboss.resteasy.client.jaxrs.ResteasyWebTarget;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import javax.naming.NamingException;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriBuilder;
import java.io.InputStream;
import java.nio.charset.StandardCharsets;
import java.text.SimpleDateFormat;
import java.util.List;
import java.util.Locale;
public class RestEasyClientTest {
Movie transformerMovie=null;
Movie batmanMovie=null;
ObjectMapper jsonMapper=null;
@BeforeClass
public static void loadMovieInventory(){
}
@Before
public void setup() throws ClassNotFoundException, IllegalAccessException, InstantiationException, NamingException {
jsonMapper=new ObjectMapper().configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);
jsonMapper.configure(DeserializationConfig.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true);
SimpleDateFormat sdf = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss zzz", Locale.ENGLISH);
jsonMapper.setDateFormat(sdf);
try (InputStream inputStream = new RestEasyClientTest().getClass().getResourceAsStream("./movies/transformer.json")) {
String transformerMovieAsString = String.format(IOUtils.toString(inputStream, StandardCharsets.UTF_8));
transformerMovie = jsonMapper.readValue(transformerMovieAsString, Movie.class);
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException("Test is going to die ...", e);
}
try (InputStream inputStream = new RestEasyClientTest().getClass().getResourceAsStream("./movies/batman.json")) {
String batmanMovieAsString = String.format(IOUtils.toString(inputStream, StandardCharsets.UTF_8));
batmanMovie = jsonMapper.readValue(batmanMovieAsString, Movie.class);
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException("Test is going to die ...", e);
}
}
@Test
public void testListAllMovies() {
try {
ResteasyClient client = new ResteasyClientBuilder().build();
ResteasyWebTarget target = client.target(UriBuilder.fromPath("http://localhost:8080/RestEasyTutorial/rest"));
ServicesInterface simple = target.proxy(ServicesInterface.class);
Response moviesResponse = simple.addMovie(transformerMovie);
moviesResponse.close();
moviesResponse = simple.addMovie(batmanMovie);
moviesResponse.close();
final List<Movie> movies = simple.listMovies();
System.out.println(movies);
} catch (Exception e) {
e.printStackTrace();
}
}
@Test
public void testMovieByImdbID() {
String transformerImdbId="tt0418279";
try {
ResteasyClient client = new ResteasyClientBuilder().build();
ResteasyWebTarget target = client.target(UriBuilder.fromPath("http://localhost:8080/RestEasyTutorial/rest"));
ServicesInterface simple = target.proxy(ServicesInterface.class);
Response moviesResponse = simple.addMovie(transformerMovie);
moviesResponse.close();
final Movie movies = simple.movieByImdbID(transformerImdbId);
System.out.println(movies);
} catch (Exception e) {
e.printStackTrace();
}
}
@Test
public void testAddMovie() {
try {
ResteasyClient client = new ResteasyClientBuilder().build();
ResteasyWebTarget target = client.target(UriBuilder.fromPath("http://localhost:8080/RestEasyTutorial/rest"));
ServicesInterface simple = target.proxy(ServicesInterface.class);
Response moviesResponse = simple.addMovie(batmanMovie);
moviesResponse.close();
moviesResponse = simple.addMovie(transformerMovie);
if (moviesResponse.getStatus() != Response.Status.CREATED.getStatusCode()) {
//System.out.println(moviesResponse.readEntity(String.class));
System.out.println("Failed : HTTP error code : " + moviesResponse.getStatus());
}
moviesResponse.close();
} catch (Exception e) {
e.printStackTrace();
}
}
@Test
public void testDeleteMovie() {
String transformerImdbId="tt0418279";
try {
ResteasyClient client = new ResteasyClientBuilder().build();
ResteasyWebTarget target = client.target(UriBuilder.fromPath("http://localhost:8080/RestEasyTutorial/rest"));
ServicesInterface simple = target.proxy(ServicesInterface.class);
Response moviesResponse = simple.addMovie(batmanMovie);
moviesResponse.close();
moviesResponse = simple.deleteMovie(transformerImdbId);
moviesResponse.close();
if (moviesResponse.getStatus() != Response.Status.OK.getStatusCode()) {
System.out.println(moviesResponse.readEntity(String.class));
throw new RuntimeException("Failed : HTTP error code : " + moviesResponse.getStatus());
}
moviesResponse.close();
} catch (Exception e) {
e.printStackTrace();
}
}
@Test
public void testUpdateMovie() {
try {
ResteasyClient client = new ResteasyClientBuilder().build();
ResteasyWebTarget target = client.target(UriBuilder.fromPath("http://localhost:8080/RestEasyTutorial/rest"));
ServicesInterface simple = target.proxy(ServicesInterface.class);
Response moviesResponse = simple.addMovie(batmanMovie);
moviesResponse.close();
batmanMovie.setImdbVotes("300,000");
moviesResponse = simple.updateMovie(batmanMovie);
if (moviesResponse.getStatus() != Response.Status.OK.getStatusCode()) {
//System.out.println(moviesResponse.readEntity(String.class));
System.out.println("Failed : HTTP error code : " + moviesResponse.getStatus());
}
moviesResponse.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}