1+ /*
2+ * ====================================================================
3+ * Licensed to the Apache Software Foundation (ASF) under one
4+ * or more contributor license agreements. See the NOTICE file
5+ * distributed with this work for additional information
6+ * regarding copyright ownership. The ASF licenses this file
7+ * to you under the Apache License, Version 2.0 (the
8+ * "License"); you may not use this file except in compliance
9+ * with the License. You may obtain a copy of the License at
10+ *
11+ * http://www.apache.org/licenses/LICENSE-2.0
12+ *
13+ * Unless required by applicable law or agreed to in writing,
14+ * software distributed under the License is distributed on an
15+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16+ * KIND, either express or implied. See the License for the
17+ * specific language governing permissions and limitations
18+ * under the License.
19+ * ====================================================================
20+ *
21+ * This software consists of voluntary contributions made by many
22+ * individuals on behalf of the Apache Software Foundation. For more
23+ * information on the Apache Software Foundation, please see
24+ * <http://www.apache.org/>.
25+ *
26+ */
27+ package org .apache .hc .client5 .http .async .methods ;
28+
29+ import java .nio .charset .StandardCharsets ;
30+
31+ import org .apache .hc .core5 .http .ContentType ;
32+ import org .junit .jupiter .api .Assertions ;
33+ import org .junit .jupiter .api .Test ;
34+
35+ class TestSimpleBody {
36+
37+ @ Test
38+ void testGetBodyTextUsesUtf8ForJsonWithoutCharsetParameter () {
39+ final String message = "{\" msg\" : \" Test emoji 👋\" }" ;
40+ final SimpleBody body = SimpleBody .create (
41+ message .getBytes (StandardCharsets .UTF_8 ),
42+ ContentType .parse ("application/json" ));
43+
44+ Assertions .assertEquals (message , body .getBodyText ());
45+ }
46+
47+ @ Test
48+ void testGetBodyBytesUsesUtf8ForJsonWithoutCharsetParameter () {
49+ final String message = "{\" msg\" : \" Test emoji 👋\" }" ;
50+ final SimpleBody body = SimpleBody .create (
51+ message ,
52+ ContentType .parse ("application/json" ));
53+
54+ Assertions .assertArrayEquals (message .getBytes (StandardCharsets .UTF_8 ), body .getBodyBytes ());
55+ }
56+
57+ @ Test
58+ void testGetBodyTextUsesUtf8ForProblemJsonWithoutCharsetParameter () {
59+ final String message = "{\" title\" : \" Bad request 👋\" }" ;
60+ final SimpleBody body = SimpleBody .create (
61+ message .getBytes (StandardCharsets .UTF_8 ),
62+ ContentType .parse ("application/problem+json" ));
63+
64+ Assertions .assertEquals (message , body .getBodyText ());
65+ }
66+
67+ @ Test
68+ void testExplicitCharsetStillWins () {
69+ final String message = "{\" msg\" : \" hi\" }" ;
70+ final byte [] utf16 = message .getBytes (StandardCharsets .UTF_16 );
71+ final SimpleBody body = SimpleBody .create (
72+ utf16 ,
73+ ContentType .parse ("application/json; charset=UTF-16" ));
74+
75+ Assertions .assertEquals (message , body .getBodyText ());
76+ }
77+ }
0 commit comments