diff --git a/mockserver-client/src/main/groovy/pl/touk/mockserver/client/Util.groovy b/mockserver-client/src/main/groovy/pl/touk/mockserver/client/Util.groovy
index 1194202..8cffc3b 100644
--- a/mockserver-client/src/main/groovy/pl/touk/mockserver/client/Util.groovy
+++ b/mockserver-client/src/main/groovy/pl/touk/mockserver/client/Util.groovy
@@ -13,7 +13,7 @@ import org.apache.http.util.EntityUtils
class Util {
static GPathResult extractXmlResponse(CloseableHttpResponse response) {
HttpEntity entity = response.entity
- GPathResult xml = new XmlSlurper().parseText(EntityUtils.toString(entity))
+ GPathResult xml = new XmlSlurper().parseText(EntityUtils.toString(entity, 'UTF-8'))
EntityUtils.consumeQuietly(entity)
return xml
}
@@ -27,7 +27,7 @@ class Util {
static Object extractJsonResponse(CloseableHttpResponse response) {
HttpEntity entity = response.entity
- Object json = new JsonSlurper().parseText(EntityUtils.toString(entity))
+ Object json = new JsonSlurper().parseText(EntityUtils.toString(entity, 'UTF-8'))
EntityUtils.consumeQuietly(entity)
return json
}
diff --git a/mockserver-tests/src/test/groovy/pl/touk/mockserver/tests/MockServerIntegrationTest.groovy b/mockserver-tests/src/test/groovy/pl/touk/mockserver/tests/MockServerIntegrationTest.groovy
index 819e35d..435d43d 100644
--- a/mockserver-tests/src/test/groovy/pl/touk/mockserver/tests/MockServerIntegrationTest.groovy
+++ b/mockserver-tests/src/test/groovy/pl/touk/mockserver/tests/MockServerIntegrationTest.groovy
@@ -1,13 +1,29 @@
package pl.touk.mockserver.tests
import groovy.util.slurpersupport.GPathResult
-import org.apache.http.client.methods.*
+import org.apache.http.client.methods.CloseableHttpResponse
+import org.apache.http.client.methods.HttpDelete
+import org.apache.http.client.methods.HttpGet
+import org.apache.http.client.methods.HttpHead
+import org.apache.http.client.methods.HttpOptions
+import org.apache.http.client.methods.HttpPatch
+import org.apache.http.client.methods.HttpPost
+import org.apache.http.client.methods.HttpPut
+import org.apache.http.client.methods.HttpTrace
import org.apache.http.entity.ContentType
import org.apache.http.entity.StringEntity
import org.apache.http.impl.client.CloseableHttpClient
import org.apache.http.impl.client.HttpClients
import org.apache.http.util.EntityUtils
-import pl.touk.mockserver.client.*
+import pl.touk.mockserver.client.AddMockRequestData
+import pl.touk.mockserver.client.InvalidMockDefinition
+import pl.touk.mockserver.client.Method
+import pl.touk.mockserver.client.MockAlreadyExists
+import pl.touk.mockserver.client.MockDoesNotExist
+import pl.touk.mockserver.client.MockEvent
+import pl.touk.mockserver.client.RegisteredMock
+import pl.touk.mockserver.client.RemoteMockServer
+import pl.touk.mockserver.client.Util
import pl.touk.mockserver.server.HttpMockServer
import spock.lang.Shared
import spock.lang.Specification
@@ -52,6 +68,28 @@ class MockServerIntegrationTest extends Specification {
remoteMockServer.removeMock('testRest')?.size() == 1
}
+ def "should add working rest mock on endpoint with utf"() {
+ expect:
+ remoteMockServer.addMock(new AddMockRequestData(
+ name: 'testRestUtf',
+ path: 'testEndpoint',
+ port: 9999,
+ predicate: '''{req -> req.xml.name() == 'request' && req.xml.@test == 'łżźćąś'}''',
+ response: '''{req -> ""}''',
+ soap: false
+ ))
+ when:
+ HttpPost restPost = new HttpPost('http://localhost:9999/testEndpoint')
+ restPost.entity = new StringEntity('', ContentType.create("text/xml", "UTF-8"))
+ CloseableHttpResponse response = client.execute(restPost)
+ then:
+ GPathResult restPostResponse = Util.extractXmlResponse(response)
+ restPostResponse.name() == 'goodResponseRest-request'
+ restPostResponse.@ans == 'łżźćąś'
+ expect:
+ remoteMockServer.removeMock('testRestUtf')?.size() == 1
+ }
+
def "should add soap mock on endpoint"() {
expect:
remoteMockServer.addMock(new AddMockRequestData(
diff --git a/mockserver/src/main/groovy/pl/touk/mockserver/server/Util.groovy b/mockserver/src/main/groovy/pl/touk/mockserver/server/Util.groovy
index 53a0751..93ab7a5 100644
--- a/mockserver/src/main/groovy/pl/touk/mockserver/server/Util.groovy
+++ b/mockserver/src/main/groovy/pl/touk/mockserver/server/Util.groovy
@@ -4,9 +4,10 @@ import com.sun.net.httpserver.HttpExchange
class Util {
static void createResponse(HttpExchange ex, String response, int statusCode) {
- ex.sendResponseHeaders(statusCode, response ? response.length() : -1)
+ byte[] responseBytes = response ? response.getBytes('UTF-8') : new byte[0]
+ ex.sendResponseHeaders(statusCode, responseBytes.length ?: -1)
if (response) {
- ex.responseBody << response
+ ex.responseBody << responseBytes
ex.responseBody.close()
}
}