diff --git a/src/main/java/org/embulk/input/jira/client/JiraClient.java b/src/main/java/org/embulk/input/jira/client/JiraClient.java index b192f67..9bc19a5 100644 --- a/src/main/java/org/embulk/input/jira/client/JiraClient.java +++ b/src/main/java/org/embulk/input/jira/client/JiraClient.java @@ -30,6 +30,7 @@ import org.slf4j.LoggerFactory; import java.io.IOException; +import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.List; import java.util.Map.Entry; @@ -222,10 +223,10 @@ private HttpRequestBase createPostRequest(final PluginTask task, final String ur task.getUsername(), task.getPassword()).getBytes()))); request.setHeader(ACCEPT, "application/json"); - request.setHeader(CONTENT_TYPE, "application/json"); + request.setHeader(CONTENT_TYPE, "application/json; charset=UTF-8"); break; } - request.setEntity(new StringEntity(body)); + request.setEntity(new StringEntity(body, StandardCharsets.UTF_8)); return request; } diff --git a/src/test/java/org/embulk/input/jira/client/JiraClientTest.java b/src/test/java/org/embulk/input/jira/client/JiraClientTest.java index 7b91b80..d5182c6 100644 --- a/src/test/java/org/embulk/input/jira/client/JiraClientTest.java +++ b/src/test/java/org/embulk/input/jira/client/JiraClientTest.java @@ -182,4 +182,26 @@ public void test_searchIssues_emptyJql() throws IOException issues = result.getLeft(); assertEquals(issues.size(), 2); } + + @Test + public void test_searchIssues_withJapaneseJql() throws IOException + { + String dataName = "searchIssuesWithJapaneseJql"; + JsonObject messageResponse = data.get(dataName).getAsJsonObject(); + + int statusCode = messageResponse.get("statusCode").getAsInt(); + String body = messageResponse.get("body").toString(); + + when(statusLine.getStatusCode()).thenReturn(statusCode); + when(response.getEntity()).thenReturn(new StringEntity(body, "UTF-8")); + + ConfigSource config = TestHelpers.config().set("jql", "labels=\"テスト\""); + task = CONFIG_MAPPER.map(config, PluginTask.class); + + Pair, String> result = jiraClient.searchIssues(task, null, 50); + List issues = result.getLeft(); + assertEquals(1, issues.size()); + assertEquals("TEST-1", issues.get(0).getValue("key").getAsString()); + assertEquals("テスト", issues.get(0).getValue("string").getAsString()); + } } diff --git a/src/test/resources/jira_client.json b/src/test/resources/jira_client.json index 48ee84e..a2b6c46 100644 --- a/src/test/resources/jira_client.json +++ b/src/test/resources/jira_client.json @@ -77,5 +77,28 @@ ], "errors": {} } + }, + "searchIssuesWithJapaneseJql": { + "statusCode": 200, + "body": { + "startAt": 0, + "maxResults": 50, + "total": 1, + "issues": [ + { + "id": "id1", + "key": "TEST-1", + "self": "self1", + "fields": { + "boolean": true, + "long": 1, + "double": 1, + "string": "テスト", + "date": "2019-01-01T00:00:00.000Z", + "json": {} + } + } + ] + } } } \ No newline at end of file