Clover icon

Magnolia REST Integration Tests 2.1.5

  1. Project Clover database Tue Jan 28 2020 16:43:22 CET
  2. Package info.magnolia.integrationtests.rest.delivery.jcr.v2

File I18nDeliveryEndpointTest.java

 

Code metrics

0
27
27
1
437
356
27
1
1
27
1
20.6% of code in this file is excluded from these metrics.

Classes

Class Line # Actions
I18nDeliveryEndpointTest 51 27 20.6% 27 54
0.00%
 

Contributing tests

No tests hitting this source file were found.

Source view

1    /**
2    * This file Copyright (c) 2018 Magnolia International
3    * Ltd. (http://www.magnolia-cms.com). All rights reserved.
4    *
5    *
6    * This file is dual-licensed under both the Magnolia
7    * Network Agreement and the GNU General Public License.
8    * You may elect to use one or the other of these licenses.
9    *
10    * This file is distributed in the hope that it will be
11    * useful, but AS-IS and WITHOUT ANY WARRANTY; without even the
12    * implied warranty of MERCHANTABILITY or FITNESS FOR A
13    * PARTICULAR PURPOSE, TITLE, or NONINFRINGEMENT.
14    * Redistribution, except as permitted by whichever of the GPL
15    * or MNA you select, is prohibited.
16    *
17    * 1. For the GPL license (GPL), you can redistribute and/or
18    * modify this file under the terms of the GNU General
19    * Public License, Version 3, as published by the Free Software
20    * Foundation. You should have received a copy of the GNU
21    * General Public License, Version 3 along with this program;
22    * if not, write to the Free Software Foundation, Inc., 51
23    * Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
24    *
25    * 2. For the Magnolia Network Agreement (MNA), this file
26    * and the accompanying materials are made available under the
27    * terms of the MNA which accompanies this distribution, and
28    * is available at http://www.magnolia-cms.com/mna.html
29    *
30    * Any modifications to this file must keep this entire header
31    * intact.
32    *
33    */
34    package info.magnolia.integrationtests.rest.delivery.jcr.v2;
35   
36    import static io.restassured.RestAssured.given;
37    import static org.hamcrest.Matchers.equalTo;
38   
39    import javax.ws.rs.core.HttpHeaders;
40   
41    import org.junit.Test;
42   
43    import io.restassured.builder.ResponseSpecBuilder;
44    import io.restassured.specification.ResponseSpecification;
45   
46    /**
47    * In order to show JSON output, simply append "log().body()" after "then()"<br/>
48    * For example: get("/x").then().log().body()...
49    * @see <a href="https://github.com/rest-assured/rest-assured/wiki/Usage#user-content-response-logging">Response Logging</a>
50    */
 
51    public class I18nDeliveryEndpointTest extends AbstractJcrDeliveryEndpointTest {
52   
 
53  0 toggle @Test
54    public void readingNodeReturnsDefaultLanguageByDefault() {
55  0 given().expect()
56    .spec(englishResponseSpec())
57    .when()
58    .get("i18nTests/v1/test");
59    }
60   
 
61  0 toggle @Test
62    public void readingNodeReturnsDefaultForInvalidLanguageHeader() {
63  0 given().header(HttpHeaders.ACCEPT_LANGUAGE, "all")
64    .expect()
65    .spec(englishResponseSpec())
66    .when()
67    .get("i18nTests/v1/test");
68    }
69   
 
70  0 toggle @Test
71    public void readingNodeReturnsAllLanguages() {
72  0 given().param("lang", "all")
73    .when()
74    .get("i18nTests/v1/test")
75    .then()
76    .body(
77    "@name", equalTo("test"),
78    "@path", equalTo("/i18nTests/test"),
79    "text", equalTo("English"),
80    "text_de", equalTo("German"),
81    "text_fr", equalTo("French"),
82    "content.text", equalTo("English"),
83    "content_fr.text", equalTo("French"),
84    "content_de.text", equalTo("German")
85    );
86    }
87   
 
88  0 toggle @Test
89    public void readingNodeAcceptsSupportedLanguage() {
90  0 given().header(HttpHeaders.ACCEPT_LANGUAGE, "de")
91    .expect()
92    .spec(germanResponseSpec())
93    .when()
94    .get("i18nTests/v1/test");
95    }
96   
 
97  0 toggle @Test
98    public void readingNodeAcceptsLocale() {
99  0 given().header(HttpHeaders.ACCEPT_LANGUAGE, "de-CH")
100    .expect()
101    .spec(germanResponseSpec())
102    .when()
103    .get("i18nTests/v1/test");
104    }
105   
 
106  0 toggle @Test
107    public void readingNodeRefusesInvalidLanguageTagInQueryParameter() {
108  0 given().param("lang", "de-DE|en-GB")
109    .get("i18nTests/v1/test")
110    .then()
111    .statusCode(400);
112    }
113   
 
114  0 toggle @Test
115    public void readingNodeAcceptsLanguageRequestInQueryParameter() {
116  0 given().param("lang", "de")
117    .expect()
118    .spec(germanResponseSpec())
119    .when()
120    .get("i18nTests/v1/test");
121    }
122   
 
123  0 toggle @Test
124    public void readingNodeAcceptsLocaleRequestsInQueryParameter() {
125  0 given().param("lang", "de-CH")
126    .expect()
127    .spec(germanResponseSpec())
128    .when()
129    .get("i18nTests/v1/test");
130    }
131   
 
132  0 toggle @Test
133    public void queryParameterOverrulesHttpRequestHeader() {
134  0 given().param("lang", "de")
135    .header(HttpHeaders.ACCEPT_LANGUAGE, "en")
136    .expect()
137    .spec(germanResponseSpec())
138    .when()
139    .get("i18nTests/v1/test");
140    }
141   
 
142  0 toggle @Test
143    public void readingNodeAcceptsMultipleLanguageTags() {
144  0 given().header(HttpHeaders.ACCEPT_LANGUAGE, "en-US;q=0.8, de-CH;q=0.9, *;q=0.5")
145    .expect()
146    .spec(germanResponseSpec())
147    .when()
148    .get("i18nTests/v1/test");
149    }
150   
 
151  0 toggle @Test
152    public void readingNodeReturnsDefaultLanguageForUnsupportedLanguage() {
153  0 given().header(HttpHeaders.ACCEPT_LANGUAGE, "fr")
154    .expect()
155    .spec(englishResponseSpec())
156    .when()
157    .get("i18nTests/v1/test");
158    }
159   
 
160  0 toggle @Test
161    public void queryingNodesReturnsDefaultLanguageByDefault() {
162  0 given().param("@name", "test")
163    .expect()
164    .spec(englishResponseSpecForQuery())
165    .when()
166    .get("i18nTests/v1");
167    }
168   
 
169  0 toggle @Test
170    public void queryingNodesAcceptsSupportedLanguage() {
171  0 given().header(HttpHeaders.ACCEPT_LANGUAGE, "de")
172    .param("@name", "test")
173    .expect()
174    .spec(germanResponseSpecForQuery())
175    .when()
176    .get("i18nTests/v1");
177    }
178   
 
179  0 toggle @Test
180    public void queryingNodesAcceptsLanguageRequestInQueryParameter() {
181  0 given().param("lang", "de")
182    .param("@name", "test")
183    .expect()
184    .spec(germanResponseSpecForQuery())
185    .when()
186    .get("i18nTests/v1");
187    }
188   
 
189  0 toggle @Test
190    public void queryingNodesReturnsDefaultForUnsupportedLanguage() {
191  0 given().header(HttpHeaders.ACCEPT_LANGUAGE, "fr")
192    .param("@name", "test")
193    .expect()
194    .spec(englishResponseSpecForQuery())
195    .when()
196    .get("i18nTests/v1");
197    }
198   
 
199  0 toggle @Test
200    public void queryingNodesReturnsAllLanguages() {
201  0 given().param("@name", "test")
202    .param("lang", "all")
203    .when()
204    .get("i18nTests/v1")
205    .then()
206    .root("results").appendRoot("[0]")
207    .body(
208    "@name", equalTo("test"),
209    "@path", equalTo("/i18nTests/test"),
210    "text", equalTo("English"),
211    "text_de", equalTo("German"),
212    "text_fr", equalTo("French"),
213    "content.text", equalTo("English"),
214    "content_fr.text", equalTo("French"),
215    "content_de.text", equalTo("German")
216    );
217    }
218   
 
219  0 toggle @Test
220    public void readingNodeReturnsLocalizedResolvedNode() {
221  0 given().param("lang", "de")
222    .when()
223    .get("i18nReferenceNode/v1/singleReference")
224    .then()
225    .root("refId")
226    .body(
227    "@name", equalTo("test"),
228    "@path", equalTo("/i18nTests/test"),
229    "text", equalTo("German")
230    );
231    }
232   
 
233  0 toggle @Test
234    public void readingNodeReturnsAllLanguageForResolvedNode() {
235  0 given().param("lang", "all")
236    .when()
237    .get("i18nReferenceNode/v1/singleReference")
238    .then()
239    .root("refId")
240    .body(
241    "@name", equalTo("test"),
242    "@path", equalTo("/i18nTests/test"),
243    "text", equalTo("English"),
244    "text_de", equalTo("German"),
245    "text_fr", equalTo("French")
246    );
247    }
248   
 
249  0 toggle @Test
250    public void queryingNodesReturnsLocalizedResolvedNodes() {
251  0 given().param("@name[like]", "%references%")
252    .param("lang", "de")
253    .when()
254    .get("i18nReferenceNode/v1")
255    .then().log().all()
256    .statusCode(200)
257    .root("results[0]").appendRoot("refIds")
258    .body(
259    "size()", equalTo(2),
260    "[0].@name", equalTo("test"),
261    "[0].@path", equalTo("/i18nTests/test"),
262    "[0].text", equalTo("German"),
263    "[1].text", equalTo("German")
264    );
265    }
266   
267    /*
268    * ====================== Get children ====================
269    */
270   
 
271    toggle @Test
272    public void getChildrenOverrulesHttpRequestHeader() {
273    given().param("lang", "de")
274    .urlEncodingEnabled(false)
275    .header(HttpHeaders.ACCEPT_LANGUAGE, "en")
276    .expect()
277    .spec(germanResponseSpecForGetChilren())
278    .when()
279    .get("i18nTests/v1/@nodes");
280    }
281   
 
282    toggle @Test
283    public void getChildrenReturnsDefaultLanguageByDefault() {
284    given().urlEncodingEnabled(false)
285    .expect()
286    .spec(englishResponseSpecForGetChildren())
287    .when()
288    .get("i18nTests/v1/@nodes");
289    }
290   
 
291    toggle @Test
292    public void getChildrenAcceptsSupportedLanguage() {
293    given().header(HttpHeaders.ACCEPT_LANGUAGE, "de")
294    .urlEncodingEnabled(false)
295    .expect()
296    .spec(germanResponseSpecForGetChilren())
297    .when()
298    .get("i18nTests/v1/@nodes");
299    }
300   
 
301    toggle @Test
302    public void getChildrenAcceptsLanguageRequestInQueryParameter() {
303    given().param("lang", "de")
304    .urlEncodingEnabled(false)
305    .expect()
306    .spec(germanResponseSpecForGetChilren())
307    .when()
308    .get("i18nTests/v1/@nodes");
309    }
310   
 
311    toggle @Test
312    public void getChildrenReturnsDefaultForUnsupportedLanguage() {
313    given().header(HttpHeaders.ACCEPT_LANGUAGE, "fr")
314    .urlEncodingEnabled(false)
315    .expect()
316    .spec(englishResponseSpecForGetChildren())
317    .when()
318    .get("i18nTests/v1/@nodes");
319    }
320   
 
321    toggle @Test
322    public void getChildrenReturnsAllLanguages() {
323    given().urlEncodingEnabled(false)
324    .param("lang", "all")
325    .when()
326    .get("i18nTests/v1/@nodes")
327    .then()
328    .appendRoot("[0]")
329    .body(
330    "@name", equalTo("test"),
331    "@path", equalTo("/i18nTests/test"),
332    "text", equalTo("English"),
333    "text_de", equalTo("German"),
334    "text_fr", equalTo("French"),
335    "content.text", equalTo("English"),
336    "content_fr.text", equalTo("French"),
337    "content_de.text", equalTo("German")
338    );
339    }
340   
 
341    toggle @Test
342    public void getChildrenReturnsLocalizedResolvedNode() {
343    given().param("lang", "de")
344    .urlEncodingEnabled(false)
345    .when()
346    .get("i18nReferenceNode/v1/@nodes")
347    .then()
348    .appendRoot("[0]")
349    .body(
350    "refId.@name", equalTo("test"),
351    "refId.@path", equalTo("/i18nTests/test"),
352    "refId.text", equalTo("German")
353    );
354    }
355   
 
356  0 toggle private ResponseSpecification germanResponseSpec() {
357  0 return new ResponseSpecBuilder()
358    .expectStatusCode(200)
359    .expectBody("@name", equalTo("test"))
360    .expectBody("text", equalTo("German"))
361    .expectBody("@path", equalTo("/i18nTests/test"))
362    .expectBody("content.@name", equalTo("content"))
363    .expectBody("content.@path", equalTo("/i18nTests/test/content_de"))
364    .expectBody("content.text", equalTo("German"))
365    .expectBody("content.subContent.@name", equalTo("subContent"))
366    .expectBody("content.subContent.@path", equalTo("/i18nTests/test/content_de/subContent_de"))
367    .expectBody("content.subContent.text", equalTo("German"))
368    .build();
369    }
370   
 
371  0 toggle private ResponseSpecification englishResponseSpec() {
372  0 return new ResponseSpecBuilder()
373    .expectStatusCode(200)
374    .expectBody("@name", equalTo("test"))
375    .expectBody("text", equalTo("English"))
376    .expectBody("@path", equalTo("/i18nTests/test"))
377    .expectBody("content.@name", equalTo("content"))
378    .expectBody("content.@path", equalTo("/i18nTests/test/content"))
379    .expectBody("content.text", equalTo("English"))
380    .expectBody("content.subContent.@name", equalTo("subContent"))
381    .expectBody("content.subContent.@path", equalTo("/i18nTests/test/content/subContent"))
382    .expectBody("content.subContent.text", equalTo("English"))
383    .build();
384    }
385   
 
386  0 toggle private ResponseSpecification germanResponseSpecForQuery() {
387  0 return germanResponseSpecForList("results", 1);
388    }
389   
 
390  0 toggle private ResponseSpecification germanResponseSpecForGetChilren() {
391  0 return germanResponseSpecForList("", 3);
392    }
393   
 
394  0 toggle private ResponseSpecification germanResponseSpecForList(String rootPath, int size){
395  0 return new ResponseSpecBuilder()
396    .expectStatusCode(200)
397    .rootPath(rootPath)
398    .expectBody("size()", equalTo(size))
399    .appendRootPath("[0]")
400    .expectBody("@name", equalTo("test"))
401    .expectBody("text", equalTo("German"))
402    .expectBody("@path", equalTo("/i18nTests/test"))
403    .expectBody("content.@name", equalTo("content"))
404    .expectBody("content.@path", equalTo("/i18nTests/test/content_de"))
405    .expectBody("content.text", equalTo("German"))
406    .expectBody("content.subContent.@name", equalTo("subContent"))
407    .expectBody("content.subContent.@path", equalTo("/i18nTests/test/content_de/subContent_de"))
408    .expectBody("content.subContent.text", equalTo("German"))
409    .build();
410    }
411   
 
412  0 toggle private ResponseSpecification englishResponseSpecForQuery() {
413  0 return englishResponseSpecForList("results", 1);
414    }
415   
 
416  0 toggle private ResponseSpecification englishResponseSpecForGetChildren() {
417  0 return englishResponseSpecForList("", 3);
418    }
419   
 
420  0 toggle private ResponseSpecification englishResponseSpecForList(String rootPath, int size) {
421  0 return new ResponseSpecBuilder()
422    .expectStatusCode(200)
423    .rootPath(rootPath)
424    .expectBody("size()", equalTo(size))
425    .appendRootPath("[0]")
426    .expectBody("@name", equalTo("test"))
427    .expectBody("text", equalTo("English"))
428    .expectBody("@path", equalTo("/i18nTests/test"))
429    .expectBody("content.@name", equalTo("content"))
430    .expectBody("content.@path", equalTo("/i18nTests/test/content"))
431    .expectBody("content.text", equalTo("English"))
432    .expectBody("content.subContent.@name", equalTo("subContent"))
433    .expectBody("content.subContent.@path", equalTo("/i18nTests/test/content/subContent"))
434    .expectBody("content.subContent.text", equalTo("English"))
435    .build();
436    }
437    }