Skip to content

Commit ca4b620

Browse files
JonCookEugen
authored andcommitted
BAEL-2268 - Guide to JerseyTest (eugenp#5443)
* BAEL-2268 - Guide to JerseyTest - second attempt without formatting changes * BAEL-2268 - Guide to JerseyTest - Add line break to end of file
1 parent f61d503 commit ca4b620

4 files changed

Lines changed: 77 additions & 0 deletions

File tree

jersey/src/main/java/com/baeldung/jersey/server/model/Fruit.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,4 +54,9 @@ public String getSerial() {
5454
public void setSerial(String serial) {
5555
this.serial = serial;
5656
}
57+
58+
@Override
59+
public String toString() {
60+
return "Fruit [name: " + getName() + " colour: " + getColour() + "]";
61+
}
5762
}

jersey/src/main/java/com/baeldung/jersey/server/rest/FruitResource.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616
import javax.ws.rs.PathParam;
1717
import javax.ws.rs.Produces;
1818
import javax.ws.rs.core.MediaType;
19+
import javax.ws.rs.core.Response;
20+
import javax.ws.rs.core.Response.Status;
1921

2022
import org.glassfish.jersey.server.mvc.ErrorTemplate;
2123
import org.glassfish.jersey.server.mvc.Template;
@@ -86,6 +88,16 @@ public void updateFruit(@SerialNumber @FormParam("serial") String serial) {
8688
public void createFruit(@Valid Fruit fruit) {
8789
SimpleStorageService.storeFruit(fruit);
8890
}
91+
92+
@POST
93+
@Path("/created")
94+
@Consumes(MediaType.APPLICATION_JSON)
95+
public Response createNewFruit(@Valid Fruit fruit) {
96+
String result = "Fruit saved : " + fruit;
97+
return Response.status(Status.CREATED.getStatusCode())
98+
.entity(result)
99+
.build();
100+
}
89101

90102
@GET
91103
@Valid
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package com.baeldung.jersey.server;
2+
3+
import static org.junit.Assert.assertEquals;
4+
5+
import javax.ws.rs.core.Application;
6+
import javax.ws.rs.core.HttpHeaders;
7+
import javax.ws.rs.core.MediaType;
8+
import javax.ws.rs.core.Response;
9+
import javax.ws.rs.core.Response.Status;
10+
11+
import org.glassfish.jersey.server.ResourceConfig;
12+
import org.glassfish.jersey.test.JerseyTest;
13+
import org.junit.Test;
14+
15+
public class GreetingsResourceIntegrationTest extends JerseyTest {
16+
17+
@Override
18+
protected Application configure() {
19+
return new ResourceConfig(Greetings.class);
20+
}
21+
22+
@Test
23+
public void givenGetHiGreeting_whenCorrectRequest_thenResponseIsOkAndContainsHi() {
24+
Response response = target("/greetings/hi").request()
25+
.get();
26+
27+
assertEquals("Http Response should be 200: ", Status.OK.getStatusCode(), response.getStatus());
28+
assertEquals("Http Content-Type should be: ", MediaType.TEXT_HTML, response.getHeaderString(HttpHeaders.CONTENT_TYPE));
29+
30+
String content = response.readEntity(String.class);
31+
assertEquals("Content of ressponse is: ", "hi", content);
32+
}
33+
}

jersey/src/test/java/com/baeldung/jersey/server/rest/FruitResourceIntegrationTest.java

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import javax.ws.rs.core.Form;
1111
import javax.ws.rs.core.MediaType;
1212
import javax.ws.rs.core.Response;
13+
import javax.ws.rs.core.Response.Status;
1314

1415
import org.glassfish.jersey.test.JerseyTest;
1516
import org.glassfish.jersey.test.TestProperties;
@@ -63,6 +64,15 @@ public void givenCreateFruit_whenFormContainsNullParam_thenResponseCodeIsBadRequ
6364
assertEquals("Http Response should be 400 ", 400, response.getStatus());
6465
assertThat(response.readEntity(String.class), containsString("Fruit colour must not be null"));
6566
}
67+
68+
@Test
69+
public void givenCreateFruit_whenJsonIsCorrect_thenResponseCodeIsCreated() {
70+
Response response = target("fruit/created").request()
71+
.post(Entity.json("{\"name\":\"strawberry\",\"weight\":20}"));
72+
73+
assertEquals("Http Response should be 201 ", Status.CREATED.getStatusCode(), response.getStatus());
74+
assertThat(response.readEntity(String.class), containsString("Fruit saved : Fruit [name: strawberry colour: null]"));
75+
}
6676

6777
@Test
6878
public void givenUpdateFruit_whenFormContainsBadSerialParam_thenResponseCodeIsBadRequest() {
@@ -102,6 +112,23 @@ public void givenFruitExists_whenSearching_thenResponseContainsFruit() {
102112
.get(String.class);
103113
assertThat(json, containsString("{\"name\":\"strawberry\",\"weight\":20}"));
104114
}
115+
116+
@Test
117+
public void givenFruitExists_whenSearching_thenResponseContainsFruitEntity() {
118+
Fruit fruit = new Fruit();
119+
fruit.setName("strawberry");
120+
fruit.setWeight(20);
121+
Response response = target("fruit/create").request(MediaType.APPLICATION_JSON_TYPE)
122+
.post(Entity.entity(fruit, MediaType.APPLICATION_JSON_TYPE));
123+
124+
assertEquals("Http Response should be 204 ", 204, response.getStatus());
125+
126+
final Fruit entity = target("fruit/search/strawberry").request()
127+
.get(Fruit.class);
128+
129+
assertEquals("Fruit name: ", "strawberry", entity.getName());
130+
assertEquals("Fruit weight: ", Integer.valueOf(20), entity.getWeight());
131+
}
105132

106133
@Test
107134
public void givenFruit_whenFruitIsInvalid_thenReponseContainsCustomExceptions() {

0 commit comments

Comments
 (0)