1 package info.ejava.examples.jaxrs.todos.client;
2
3 import static org.junit.Assert.assertEquals;
4 import static org.junit.Assert.assertNotEquals;
5
6 import java.net.URI;
7
8 import javax.naming.NamingException;
9 import javax.ws.rs.client.Client;
10 import javax.ws.rs.client.ClientBuilder;
11 import javax.ws.rs.client.WebTarget;
12 import javax.ws.rs.core.MediaType;
13 import javax.ws.rs.core.Response;
14 import javax.ws.rs.core.Response.Status;
15 import javax.ws.rs.core.UriBuilder;
16
17 import org.junit.Before;
18 import org.junit.Test;
19 import org.slf4j.Logger;
20 import org.slf4j.LoggerFactory;
21
22 public class GreetingsIT {
23 private static final Logger logger = LoggerFactory.getLogger(GreetingsIT.class);
24 private static final String baseHttpUrlString = TodoListsIT.getITProperty("url.base.http", "http://localhost:8080");
25
26 URI baseTodosUrl = UriBuilder.fromPath(baseHttpUrlString).path("ejavaTodos/api").build();
27 Client client;
28
29 @Before
30 public void setUp() throws NamingException {
31 client = ClientBuilder.newClient();
32 }
33
34 @Test
35 public void clientBasics() {
36
37 String baseHttpUrlString = TodoListsIT.getITProperty("url.base.http", "http://localhost:8080");
38
39 URI resourceUrl = javax.ws.rs.core.UriBuilder.fromUri(baseHttpUrlString)
40
41 .build();
42
43
44 javax.ws.rs.client.Client client = javax.ws.rs.client.ClientBuilder.newClient();
45 {
46
47 javax.ws.rs.client.WebTarget target = client.target(resourceUrl);
48
49 javax.ws.rs.client.Invocation.Builder request = target.request(MediaType.TEXT_HTML_TYPE);
50
51 javax.ws.rs.client.Invocation method = request.buildGet();
52
53 javax.ws.rs.core.Response response = method.invoke();
54
55 javax.ws.rs.core.Response.StatusType status = response.getStatusInfo();
56 int statusCode = response.getStatus();
57
58 String content = response.readEntity(String.class);
59
60 logger.debug("GET {} => {}/{}", target.getUri(), response.getStatus(), response.getStatusInfo());
61
62 assertEquals("unexpected statusType", Status.OK, status);
63 assertEquals("unexpected statusCode", 200, statusCode);
64 assertNotEquals("unexpected size", 0, content.length());
65 }
66
67
68 {
69 WebTarget target = client.target(resourceUrl);
70 Response response = target.request(MediaType.TEXT_HTML_TYPE)
71 .buildGet()
72 .invoke();
73 logger.debug("GET {} => {}/{}", target.getUri(), response.getStatus(), response.getStatusInfo());
74
75 String content = response.readEntity(String.class);
76
77 assertEquals("unexpected statusType", Status.Family.SUCCESSFUL, response.getStatusInfo().getFamily());
78 assertEquals("unexpected statusType", Status.OK, response.getStatusInfo());
79 assertNotEquals("unexpected size", 0, content.length());
80 }
81
82 }
83
84 @Test
85 public void sayHi() {
86 URI uri = UriBuilder.fromUri(baseTodosUrl)
87 .path("greetings")
88 .path("hi")
89 .build();
90 WebTarget target = client.target(uri);
91 Response response = target.request(MediaType.TEXT_PLAIN_TYPE)
92 .get();
93 logger.info("GET {} => {}", target.getUri(), response.getStatusInfo());
94 String greeting = response.readEntity(String.class);
95 logger.info("{}", greeting);
96 assertEquals("unexpected status", Status.OK, response.getStatusInfo());
97 assertEquals("unexpected greeting", "hi", greeting);
98 }
99
100 @Test
101 public void greetBadRequest() {
102 URI uri = UriBuilder.fromUri(baseTodosUrl)
103 .path("greetings")
104 .path("greet")
105 .build();
106 WebTarget target = client.target(uri);
107 Response response = target.request(MediaType.TEXT_PLAIN_TYPE)
108 .get();
109 logger.info("GET {} => {}/{}", target.getUri(), response.getStatus(), response.getStatusInfo());
110 String greeting = response.readEntity(String.class);
111 logger.info("{}", greeting);
112 assertEquals("unexpected status", Status.BAD_REQUEST, response.getStatusInfo());
113 }
114
115 @Test
116 public void greetOK() {
117 URI uri = UriBuilder.fromUri(baseTodosUrl)
118 .path("greetings")
119 .path("greet")
120 .build();
121 WebTarget target = client.target(uri)
122 .queryParam("name", "ejava");
123 Response response = target.request(MediaType.TEXT_PLAIN_TYPE)
124 .get();
125 logger.info("GET {} => {}", target.getUri(), response.getStatusInfo());
126 String greeting = response.readEntity(String.class);
127 logger.info("{}", greeting);
128 assertEquals("unexpected status", Status.OK, response.getStatusInfo());
129 assertEquals("unexpected greeting", "hello ejava", greeting);
130 }
131 }