1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 package co.stateful.rest;
31
32 import com.jcabi.http.Request;
33 import com.jcabi.http.request.JdkRequest;
34 import com.jcabi.http.response.RestResponse;
35 import com.jcabi.http.response.XmlResponse;
36 import com.jcabi.matchers.W3CMatchers;
37 import java.net.HttpURLConnection;
38 import javax.ws.rs.core.HttpHeaders;
39 import javax.ws.rs.core.MediaType;
40 import org.junit.Test;
41
42
43
44
45
46
47
48 public final class CountersRsITCase {
49
50
51
52
53 private static final String HOME = System.getProperty("tomcat.home");
54
55
56
57
58
59 @Test
60 public void listsCounters() throws Exception {
61 new JdkRequest(CountersRsITCase.HOME)
62 .header(HttpHeaders.ACCEPT, MediaType.TEXT_XML)
63 .fetch()
64 .as(XmlResponse.class)
65 .rel("/page/links/link[@rel='menu:counters']/@href")
66 .header(HttpHeaders.ACCEPT, MediaType.TEXT_XML)
67 .fetch()
68 .as(RestResponse.class)
69 .assertStatus(HttpURLConnection.HTTP_OK)
70 .as(XmlResponse.class)
71 .rel("/page/links/link[@rel='add']/@href")
72 .body().formParam("name", "foo-15").back()
73 .header(HttpHeaders.ACCEPT, MediaType.TEXT_XML)
74 .method(Request.POST)
75 .fetch()
76 .as(RestResponse.class)
77 .assertStatus(HttpURLConnection.HTTP_SEE_OTHER)
78 .follow()
79 .header(HttpHeaders.ACCEPT, MediaType.TEXT_XML)
80 .method(Request.GET)
81 .fetch()
82 .as(XmlResponse.class)
83 .assertXPath("/page/token")
84 .assertXPath("/page/flash")
85 .assertXPath("/page/counters/counter[name='foo-15']");
86 }
87
88
89
90
91
92 @Test
93 public void rendersValidHtml() throws Exception {
94 new JdkRequest(CountersRsITCase.HOME)
95 .header(HttpHeaders.ACCEPT, MediaType.TEXT_XML)
96 .fetch()
97 .as(XmlResponse.class)
98 .rel("/page/links/link[@rel='menu:counters']/@href")
99 .header(HttpHeaders.ACCEPT, MediaType.TEXT_HTML)
100 .fetch()
101 .as(RestResponse.class)
102 .assertStatus(HttpURLConnection.HTTP_OK)
103 .assertBody(W3CMatchers.validHtml());
104 }
105
106 }