diff --git a/src/WireMock.Net/HttpListenerRequestMapper.cs b/src/WireMock.Net/HttpListenerRequestMapper.cs
index 2b055175..1aaa7b9d 100644
--- a/src/WireMock.Net/HttpListenerRequestMapper.cs
+++ b/src/WireMock.Net/HttpListenerRequestMapper.cs
@@ -18,19 +18,19 @@ namespace WireMock
/// The .
public RequestMessage Map(HttpListenerRequest listenerRequest)
{
- Uri url = listenerRequest.Url;
- string verb = listenerRequest.HttpMethod;
- byte[] body = GetRequestBody(listenerRequest);
- string bodyAsString = body != null ? listenerRequest.ContentEncoding.GetString(body) : null;
+ var url = listenerRequest.Url;
+ var verb = listenerRequest.HttpMethod;
+ var body = GetRequestBody(listenerRequest);
+ var bodyEncoding = body != null ? listenerRequest.ContentEncoding : null;
+ var bodyAsString = bodyEncoding?.GetString(body);
var listenerHeaders = listenerRequest.Headers;
var headers = listenerHeaders.AllKeys.ToDictionary(k => k, k => listenerHeaders[k]);
var cookies = new Dictionary();
+
foreach (Cookie cookie in listenerRequest.Cookies)
cookies.Add(cookie.Name, cookie.Value);
- var message = new RequestMessage(url, verb, body, bodyAsString, headers, cookies) { DateTime = DateTime.Now };
-
- return message;
+ return new RequestMessage(url, verb, body, bodyAsString, bodyEncoding, headers, cookies) { DateTime = DateTime.Now };
}
///
diff --git a/src/WireMock.Net/HttpListenerResponseMapper.cs b/src/WireMock.Net/HttpListenerResponseMapper.cs
index 6a0897b8..87dc9a27 100644
--- a/src/WireMock.Net/HttpListenerResponseMapper.cs
+++ b/src/WireMock.Net/HttpListenerResponseMapper.cs
@@ -24,14 +24,16 @@ namespace WireMock
responseMessage.Headers.ToList().ForEach(pair => listenerResponse.AddHeader(pair.Key, pair.Value));
- if (responseMessage.Body != null)
- {
- byte[] buffer = _utf8NoBom.GetBytes(responseMessage.Body);
- listenerResponse.ContentEncoding = _utf8NoBom;
- listenerResponse.ContentLength64 = buffer.Length;
- listenerResponse.OutputStream.Write(buffer, 0, buffer.Length);
- listenerResponse.OutputStream.Flush();
- }
+ if (responseMessage.Body == null)
+ return;
+
+ var encoding = responseMessage.BodyEncoding ?? _utf8NoBom;
+ var buffer = encoding.GetBytes(responseMessage.Body);
+
+ listenerResponse.ContentEncoding = encoding;
+ listenerResponse.ContentLength64 = buffer.Length;
+ listenerResponse.OutputStream.Write(buffer, 0, buffer.Length);
+ listenerResponse.OutputStream.Flush();
}
}
}
\ No newline at end of file
diff --git a/src/WireMock.Net/RequestMessage.cs b/src/WireMock.Net/RequestMessage.cs
index b4f82ce7..3f6f4b3e 100644
--- a/src/WireMock.Net/RequestMessage.cs
+++ b/src/WireMock.Net/RequestMessage.cs
@@ -4,6 +4,7 @@ using System.Linq;
using JetBrains.Annotations;
using WireMock.Util;
using WireMock.Validation;
+using System.Text;
namespace WireMock
{
@@ -57,6 +58,11 @@ namespace WireMock
///
public string Body { get; }
+ ///
+ /// Gets the body encoding.
+ ///
+ public Encoding BodyEncoding { get; }
+
///
/// Initializes a new instance of the class.
///
@@ -64,9 +70,10 @@ namespace WireMock
/// The verb.
/// The bodyAsBytes byte[].
/// The body string.
+ /// The body encoding
/// The headers.
/// The cookies.
- public RequestMessage([NotNull] Uri url, [NotNull] string verb, [CanBeNull] byte[] bodyAsBytes = null, [CanBeNull] string body = null, [CanBeNull] IDictionary headers = null, [CanBeNull] IDictionary cookies = null)
+ public RequestMessage([NotNull] Uri url, [NotNull] string verb, [CanBeNull] byte[] bodyAsBytes = null, [CanBeNull] string body = null, [CanBeNull] Encoding bodyEncoding = null, [CanBeNull] IDictionary headers = null, [CanBeNull] IDictionary cookies = null)
{
Check.NotNull(url, nameof(url));
Check.NotNull(verb, nameof(verb));
@@ -76,6 +83,7 @@ namespace WireMock
Method = verb.ToLower();
BodyAsBytes = bodyAsBytes;
Body = body;
+ BodyEncoding = bodyEncoding;
Headers = headers;
Cookies = cookies;
diff --git a/src/WireMock.Net/ResponseBuilders/IBodyResponseBuilder.cs b/src/WireMock.Net/ResponseBuilders/IBodyResponseBuilder.cs
index 8c589be4..4b4841af 100644
--- a/src/WireMock.Net/ResponseBuilders/IBodyResponseBuilder.cs
+++ b/src/WireMock.Net/ResponseBuilders/IBodyResponseBuilder.cs
@@ -12,15 +12,17 @@ namespace WireMock.ResponseBuilders
/// The with body.
///
/// The body.
+ /// The body encoding.
/// A .
- IResponseBuilder WithBody([NotNull] string body);
+ IResponseBuilder WithBody([NotNull] string body, [CanBeNull] Encoding encoding = null);
///
/// The with body.
///
/// The body.
+ /// The body encoding.
/// A .
- IResponseBuilder WithBodyAsJson([NotNull] object body);
+ IResponseBuilder WithBodyAsJson([NotNull] object body, [CanBeNull] Encoding encoding = null);
///
/// The with body as base64.
diff --git a/src/WireMock.Net/ResponseBuilders/Response.cs b/src/WireMock.Net/ResponseBuilders/Response.cs
index 4209d0aa..2bf6c5ca 100644
--- a/src/WireMock.Net/ResponseBuilders/Response.cs
+++ b/src/WireMock.Net/ResponseBuilders/Response.cs
@@ -143,12 +143,15 @@ namespace WireMock.ResponseBuilders
/// The with body.
///
/// The body.
+ /// The body encoding.
/// A .
- public IResponseBuilder WithBody(string body)
+ public IResponseBuilder WithBody(string body, Encoding encoding = null)
{
Check.NotNull(body, nameof(body));
ResponseMessage.Body = body;
+ ResponseMessage.BodyEncoding = encoding ?? Encoding.UTF8;
+
return this;
}
@@ -156,12 +159,22 @@ namespace WireMock.ResponseBuilders
/// The with body (AsJson object).
///
/// The body.
+ /// The body encoding.
/// A .
- public IResponseBuilder WithBodyAsJson(object body)
+ public IResponseBuilder WithBodyAsJson(object body, Encoding encoding = null)
{
Check.NotNull(body, nameof(body));
- ResponseMessage.Body = JsonConvert.SerializeObject(body, new JsonSerializerSettings { Formatting = Formatting.None, NullValueHandling = NullValueHandling.Ignore });
+ var jsonBody = JsonConvert.SerializeObject(body, new JsonSerializerSettings { Formatting = Formatting.None, NullValueHandling = NullValueHandling.Ignore });
+
+ if (encoding != null && !encoding.Equals(Encoding.UTF8))
+ {
+ jsonBody = encoding.GetString(Encoding.UTF8.GetBytes(jsonBody));
+ ResponseMessage.BodyEncoding = encoding;
+ }
+
+ ResponseMessage.Body = jsonBody;
+
return this;
}
@@ -175,7 +188,11 @@ namespace WireMock.ResponseBuilders
{
Check.NotNull(bodyAsbase64, nameof(bodyAsbase64));
- ResponseMessage.Body = (encoding ?? Encoding.UTF8).GetString(Convert.FromBase64String(bodyAsbase64));
+ encoding = encoding ?? Encoding.UTF8;
+
+ ResponseMessage.Body = encoding.GetString(Convert.FromBase64String(bodyAsbase64));
+ ResponseMessage.BodyEncoding = encoding;
+
return this;
}
diff --git a/src/WireMock.Net/ResponseMessage.cs b/src/WireMock.Net/ResponseMessage.cs
index ed9e8a56..b60ed2ce 100644
--- a/src/WireMock.Net/ResponseMessage.cs
+++ b/src/WireMock.Net/ResponseMessage.cs
@@ -1,5 +1,7 @@
using System.Collections.Concurrent;
using System.Collections.Generic;
+using System.Text;
+
namespace WireMock
{
///
@@ -27,6 +29,11 @@ namespace WireMock
///
public string Body { get; set; }
+ ///
+ /// Gets or sets the body encoding.
+ ///
+ public Encoding BodyEncoding { get; set; } = new UTF8Encoding(false);
+
///
/// The add header.
///
diff --git a/test/WireMock.Net.Tests/HttpListenerResponseMapperTests.cs b/test/WireMock.Net.Tests/HttpListenerResponseMapperTests.cs
index cd0326c6..132e644e 100644
--- a/test/WireMock.Net.Tests/HttpListenerResponseMapperTests.cs
+++ b/test/WireMock.Net.Tests/HttpListenerResponseMapperTests.cs
@@ -1,5 +1,6 @@
using System.Net;
using System.Net.Http;
+using System.Text;
using System.Threading;
using System.Threading.Tasks;
using NFluent;
@@ -67,6 +68,31 @@ namespace WireMock.Net.Tests
Check.That(contentTask.Result).IsEqualTo("Hello !!!");
}
+ [Test]
+ public void Should_map_encoded_body_from_original_response()
+ {
+ // given
+ var response = new ResponseMessage
+ {
+ Body = "Hello !!!",
+ BodyEncoding = Encoding.ASCII
+ };
+
+ var httpListenerResponse = CreateHttpListenerResponse();
+
+ // when
+ new HttpListenerResponseMapper().Map(response, httpListenerResponse);
+
+ // then
+ Check.That(httpListenerResponse.ContentEncoding).Equals(Encoding.ASCII);
+
+ var responseMessage = ToResponseMessage(httpListenerResponse);
+ Check.That(responseMessage).IsNotNull();
+
+ var contentTask = responseMessage.Content.ReadAsStringAsync();
+ Check.That(contentTask.Result).IsEqualTo("Hello !!!");
+ }
+
[TearDown]
public void StopServer()
{
diff --git a/test/WireMock.Net.Tests/RequestMessageTests.cs b/test/WireMock.Net.Tests/RequestMessageTests.cs
index 2e74c704..55ca493c 100644
--- a/test/WireMock.Net.Tests/RequestMessageTests.cs
+++ b/test/WireMock.Net.Tests/RequestMessageTests.cs
@@ -22,9 +22,9 @@ namespace WireMock.Net.Tests
public void Should_parse_query_params()
{
// given
- string bodyAsString = "whatever";
- byte[] body = Encoding.UTF8.GetBytes(bodyAsString);
- var request = new RequestMessage(new Uri("http://localhost?foo=bar&multi=1&multi=2"), "POST", body, bodyAsString);
+ var bodyAsString = "whatever";
+ var body = Encoding.UTF8.GetBytes(bodyAsString);
+ var request = new RequestMessage(new Uri("http://localhost?foo=bar&multi=1&multi=2"), "POST", body, bodyAsString, Encoding.UTF8);
// then
Check.That(request.GetParameter("foo")).Contains("bar");
diff --git a/test/WireMock.Net.Tests/RequestTests.cs b/test/WireMock.Net.Tests/RequestTests.cs
index c973c1ca..f0663b6b 100644
--- a/test/WireMock.Net.Tests/RequestTests.cs
+++ b/test/WireMock.Net.Tests/RequestTests.cs
@@ -144,9 +144,9 @@ namespace WireMock.Net.Tests
var spec = Request.Create().WithPath("/foo").UsingDelete();
// when
- string bodyAsString = "whatever";
- byte[] body = Encoding.UTF8.GetBytes(bodyAsString);
- var request = new RequestMessage(new Uri("http://localhost/foo"), "Delete", body, bodyAsString);
+ var bodyAsString = "whatever";
+ var body = Encoding.UTF8.GetBytes(bodyAsString);
+ var request = new RequestMessage(new Uri("http://localhost/foo"), "Delete", body, bodyAsString, Encoding.UTF8);
// then
var requestMatchResult = new RequestMatchResult();
@@ -202,9 +202,9 @@ namespace WireMock.Net.Tests
var spec = Request.Create().WithPath("/foo").UsingAnyVerb().WithHeader("X-toto", "tata");
// when
- string bodyAsString = "whatever";
- byte[] body = Encoding.UTF8.GetBytes(bodyAsString);
- var request = new RequestMessage(new Uri("http://localhost/foo"), "PUT", body, bodyAsString, new Dictionary { { "X-toto", "tata" } });
+ var bodyAsString = "whatever";
+ var body = Encoding.UTF8.GetBytes(bodyAsString);
+ var request = new RequestMessage(new Uri("http://localhost/foo"), "PUT", body, bodyAsString, Encoding.UTF8, new Dictionary { { "X-toto", "tata" } });
// then
var requestMatchResult = new RequestMatchResult();
@@ -218,9 +218,9 @@ namespace WireMock.Net.Tests
var spec = Request.Create().UsingAnyVerb().WithHeader("X-toto", "tatata");
// when
- string bodyAsString = "whatever";
- byte[] body = Encoding.UTF8.GetBytes(bodyAsString);
- var request = new RequestMessage(new Uri("http://localhost/foo"), "PUT", body, bodyAsString, new Dictionary { { "X-toto", "tata" } });
+ var bodyAsString = "whatever";
+ var body = Encoding.UTF8.GetBytes(bodyAsString);
+ var request = new RequestMessage(new Uri("http://localhost/foo"), "PUT", body, bodyAsString, Encoding.UTF8, new Dictionary { { "X-toto", "tata" } });
// then
var requestMatchResult = new RequestMatchResult();
@@ -234,9 +234,9 @@ namespace WireMock.Net.Tests
var spec = Request.Create().UsingAnyVerb().WithHeader("X-toto", "abc", false);
// when
- string bodyAsString = "whatever";
- byte[] body = Encoding.UTF8.GetBytes(bodyAsString);
- var request = new RequestMessage(new Uri("http://localhost/foo"), "PUT", body, bodyAsString, new Dictionary { { "X-toto", "ABC" } });
+ var bodyAsString = "whatever";
+ var body = Encoding.UTF8.GetBytes(bodyAsString);
+ var request = new RequestMessage(new Uri("http://localhost/foo"), "PUT", body, bodyAsString, Encoding.UTF8, new Dictionary { { "X-toto", "ABC" } });
// then
var requestMatchResult = new RequestMatchResult();
@@ -250,9 +250,9 @@ namespace WireMock.Net.Tests
var spec = Request.Create().UsingAnyVerb().WithHeader("X-toto", "tata*");
// when
- string bodyAsString = "whatever";
- byte[] body = Encoding.UTF8.GetBytes(bodyAsString);
- var request = new RequestMessage(new Uri("http://localhost/foo"), "PUT", body, bodyAsString, new Dictionary { { "X-toto", "TaTa" } });
+ var bodyAsString = "whatever";
+ var body = Encoding.UTF8.GetBytes(bodyAsString);
+ var request = new RequestMessage(new Uri("http://localhost/foo"), "PUT", body, bodyAsString, Encoding.UTF8, new Dictionary { { "X-toto", "TaTa" } });
// then
var requestMatchResult = new RequestMatchResult();
@@ -266,7 +266,7 @@ namespace WireMock.Net.Tests
var spec = Request.Create().UsingAnyVerb().WithCookie("session", "a*");
// when
- var request = new RequestMessage(new Uri("http://localhost/foo"), "PUT", null, null, null, new Dictionary { { "session", "abc" } });
+ var request = new RequestMessage(new Uri("http://localhost/foo"), "PUT", null, null, null, null, new Dictionary { { "session", "abc" } });
// then
var requestMatchResult = new RequestMatchResult();
@@ -280,9 +280,9 @@ namespace WireMock.Net.Tests
var spec = Request.Create().UsingAnyVerb().WithBody("Hello world!");
// when
- string bodyAsString = "Hello world!";
- byte[] body = Encoding.UTF8.GetBytes(bodyAsString);
- var request = new RequestMessage(new Uri("http://localhost/foo"), "PUT", body, bodyAsString);
+ var bodyAsString = "Hello world!";
+ var body = Encoding.UTF8.GetBytes(bodyAsString);
+ var request = new RequestMessage(new Uri("http://localhost/foo"), "PUT", body, bodyAsString, Encoding.UTF8);
// then
var requestMatchResult = new RequestMatchResult();
@@ -296,9 +296,9 @@ namespace WireMock.Net.Tests
var requestBuilder = Request.Create().UsingAnyVerb().WithBody(new ExactMatcher("cat"));
// when
- string bodyAsString = "cat";
- byte[] body = Encoding.UTF8.GetBytes(bodyAsString);
- var request = new RequestMessage(new Uri("http://localhost/foo"), "POST", body, bodyAsString);
+ var bodyAsString = "cat";
+ var body = Encoding.UTF8.GetBytes(bodyAsString);
+ var request = new RequestMessage(new Uri("http://localhost/foo"), "POST", body, bodyAsString, Encoding.UTF8);
// then
var requestMatchResult = new RequestMatchResult();
@@ -312,9 +312,9 @@ namespace WireMock.Net.Tests
var requestBuilder = Request.Create().UsingAnyVerb().WithBody(new ExactMatcher("cat", "dog"));
// when
- string bodyAsString = "cat";
- byte[] body = Encoding.UTF8.GetBytes(bodyAsString);
- var request = new RequestMessage(new Uri("http://localhost/foo"), "POST", body, bodyAsString);
+ var bodyAsString = "cat";
+ var body = Encoding.UTF8.GetBytes(bodyAsString);
+ var request = new RequestMessage(new Uri("http://localhost/foo"), "POST", body, bodyAsString, Encoding.UTF8);
// then
var requestMatchResult = new RequestMatchResult();
@@ -328,9 +328,9 @@ namespace WireMock.Net.Tests
var requestBuilder = Request.Create().UsingAnyVerb().WithBody(new ExactMatcher("cat"));
// when
- string bodyAsString = "caR";
- byte[] body = Encoding.UTF8.GetBytes(bodyAsString);
- var request = new RequestMessage(new Uri("http://localhost/foo"), "POST", body, bodyAsString);
+ var bodyAsString = "caR";
+ var body = Encoding.UTF8.GetBytes(bodyAsString);
+ var request = new RequestMessage(new Uri("http://localhost/foo"), "POST", body, bodyAsString, Encoding.UTF8);
// then
var requestMatchResult = new RequestMatchResult();
@@ -344,9 +344,9 @@ namespace WireMock.Net.Tests
var requestBuilder = Request.Create().UsingAnyVerb().WithBody(new SimMetricsMatcher("The cat walks in the street."));
// when
- string bodyAsString = "The car drives in the street.";
- byte[] body = Encoding.UTF8.GetBytes(bodyAsString);
- var request = new RequestMessage(new Uri("http://localhost/foo"), "POST", body, bodyAsString);
+ var bodyAsString = "The car drives in the street.";
+ var body = Encoding.UTF8.GetBytes(bodyAsString);
+ var request = new RequestMessage(new Uri("http://localhost/foo"), "POST", body, bodyAsString, Encoding.UTF8);
// then
var requestMatchResult = new RequestMatchResult();
@@ -360,9 +360,9 @@ namespace WireMock.Net.Tests
var requestBuilder = Request.Create().UsingAnyVerb().WithBody(new SimMetricsMatcher("The cat walks in the street."));
// when
- string bodyAsString = "Hello";
- byte[] body = Encoding.UTF8.GetBytes(bodyAsString);
- var request = new RequestMessage(new Uri("http://localhost/foo"), "POST", body, bodyAsString);
+ var bodyAsString = "Hello";
+ var body = Encoding.UTF8.GetBytes(bodyAsString);
+ var request = new RequestMessage(new Uri("http://localhost/foo"), "POST", body, bodyAsString, Encoding.UTF8);
// then
var requestMatchResult = new RequestMatchResult();
@@ -376,9 +376,9 @@ namespace WireMock.Net.Tests
var spec = Request.Create().WithPath("/foo").UsingAnyVerb().WithBody(new WildcardMatcher("H*o*"));
// when
- string bodyAsString = "Hello world!";
- byte[] body = Encoding.UTF8.GetBytes(bodyAsString);
- var request = new RequestMessage(new Uri("http://localhost/foo"), "PUT", body, bodyAsString, new Dictionary { { "X-toto", "tatata" } });
+ var bodyAsString = "Hello world!";
+ var body = Encoding.UTF8.GetBytes(bodyAsString);
+ var request = new RequestMessage(new Uri("http://localhost/foo"), "PUT", body, bodyAsString, Encoding.UTF8, new Dictionary { { "X-toto", "tatata" } });
// then
var requestMatchResult = new RequestMatchResult();
@@ -392,9 +392,9 @@ namespace WireMock.Net.Tests
var spec = Request.Create().UsingAnyVerb().WithBody(new RegexMatcher("H.*o"));
// when
- string bodyAsString = "Hello world!";
- byte[] body = Encoding.UTF8.GetBytes(bodyAsString);
- var request = new RequestMessage(new Uri("http://localhost/foo"), "PUT", body, bodyAsString);
+ var bodyAsString = "Hello world!";
+ var body = Encoding.UTF8.GetBytes(bodyAsString);
+ var request = new RequestMessage(new Uri("http://localhost/foo"), "PUT", body, bodyAsString, Encoding.UTF8);
// then
var requestMatchResult = new RequestMatchResult();
@@ -414,8 +414,8 @@ namespace WireMock.Net.Tests
def
xyz
";
- byte[] body = Encoding.UTF8.GetBytes(xmlBodyAsString);
- var request = new RequestMessage(new Uri("http://localhost/foo"), "PUT", body, xmlBodyAsString);
+ var body = Encoding.UTF8.GetBytes(xmlBodyAsString);
+ var request = new RequestMessage(new Uri("http://localhost/foo"), "PUT", body, xmlBodyAsString, Encoding.UTF8);
// then
var requestMatchResult = new RequestMatchResult();
@@ -435,8 +435,8 @@ namespace WireMock.Net.Tests
def
xyz
";
- byte[] body = Encoding.UTF8.GetBytes(xmlBodyAsString);
- var request = new RequestMessage(new Uri("http://localhost/foo"), "PUT", body, xmlBodyAsString);
+ var body = Encoding.UTF8.GetBytes(xmlBodyAsString);
+ var request = new RequestMessage(new Uri("http://localhost/foo"), "PUT", body, xmlBodyAsString, Encoding.UTF8);
// then
var requestMatchResult = new RequestMatchResult();
@@ -450,9 +450,9 @@ namespace WireMock.Net.Tests
var spec = Request.Create().UsingAnyVerb().WithBody(new JsonPathMatcher("$.things[?(@.name == 'RequiredThing')]"));
// when
- string bodyAsString = "{ \"things\": [ { \"name\": \"RequiredThing\" }, { \"name\": \"Wiremock\" } ] }";
- byte[] body = Encoding.UTF8.GetBytes(bodyAsString);
- var request = new RequestMessage(new Uri("http://localhost/foo"), "PUT", body, bodyAsString);
+ var bodyAsString = "{ \"things\": [ { \"name\": \"RequiredThing\" }, { \"name\": \"Wiremock\" } ] }";
+ var body = Encoding.UTF8.GetBytes(bodyAsString);
+ var request = new RequestMessage(new Uri("http://localhost/foo"), "PUT", body, bodyAsString, Encoding.UTF8);
// then
var requestMatchResult = new RequestMatchResult();
@@ -466,9 +466,9 @@ namespace WireMock.Net.Tests
var spec = Request.Create().UsingAnyVerb().WithBody(new JsonPathMatcher("$.things[?(@.name == 'RequiredThing')]"));
// when
- string bodyAsString = "{ \"things\": { \"name\": \"Wiremock\" } }";
- byte[] body = Encoding.UTF8.GetBytes(bodyAsString);
- var request = new RequestMessage(new Uri("http://localhost/foo"), "PUT", body, bodyAsString);
+ var bodyAsString = "{ \"things\": { \"name\": \"Wiremock\" } }";
+ var body = Encoding.UTF8.GetBytes(bodyAsString);
+ var request = new RequestMessage(new Uri("http://localhost/foo"), "PUT", body, bodyAsString, Encoding.UTF8);
// then
var requestMatchResult = new RequestMatchResult();
@@ -482,9 +482,9 @@ namespace WireMock.Net.Tests
var spec = Request.Create().UsingAnyVerb().WithBody(" Hello world! ");
// when
- string bodyAsString = "xxx";
- byte[] body = Encoding.UTF8.GetBytes(bodyAsString);
- var request = new RequestMessage(new Uri("http://localhost/foo"), "PUT", body, bodyAsString, new Dictionary { { "X-toto", "tatata" } });
+ var bodyAsString = "xxx";
+ var body = Encoding.UTF8.GetBytes(bodyAsString);
+ var request = new RequestMessage(new Uri("http://localhost/foo"), "PUT", body, bodyAsString, Encoding.UTF8, new Dictionary { { "X-toto", "tatata" } });
// then
var requestMatchResult = new RequestMatchResult();
diff --git a/test/WireMock.Net.Tests/ResponseTests.cs b/test/WireMock.Net.Tests/ResponseTests.cs
index 663c6ed9..685e2e95 100644
--- a/test/WireMock.Net.Tests/ResponseTests.cs
+++ b/test/WireMock.Net.Tests/ResponseTests.cs
@@ -15,9 +15,9 @@ namespace WireMock.Net.Tests
public async Task Response_ProvideResponse_Handlebars_UrlPathVerb()
{
// given
- string bodyAsString = "abc";
- byte[] body = Encoding.UTF8.GetBytes(bodyAsString);
- var request = new RequestMessage(new Uri("http://localhost/foo"), "POST", body, bodyAsString);
+ var bodyAsString = "abc";
+ var body = Encoding.UTF8.GetBytes(bodyAsString);
+ var request = new RequestMessage(new Uri("http://localhost/foo"), "POST", body, bodyAsString, Encoding.UTF8);
var response = Response.Create()
.WithBody("test {{request.url}} {{request.path}} {{request.method}}")
@@ -34,9 +34,9 @@ namespace WireMock.Net.Tests
public async Task Response_ProvideResponse_Handlebars_Query()
{
// given
- string bodyAsString = "abc";
- byte[] body = Encoding.UTF8.GetBytes(bodyAsString);
- var request = new RequestMessage(new Uri("http://localhost/foo?a=1&a=2&b=5"), "POST", body, bodyAsString);
+ var bodyAsString = "abc";
+ var body = Encoding.UTF8.GetBytes(bodyAsString);
+ var request = new RequestMessage(new Uri("http://localhost/foo?a=1&a=2&b=5"), "POST", body, bodyAsString, Encoding.UTF8);
var response = Response.Create()
.WithBody("test keya={{request.query.a}} idx={{request.query.a.[0]}} idx={{request.query.a.[1]}} keyb={{request.query.b}}")
@@ -53,9 +53,9 @@ namespace WireMock.Net.Tests
public async Task Response_ProvideResponse_Handlebars_Headers()
{
// given
- string bodyAsString = "abc";
- byte[] body = Encoding.UTF8.GetBytes(bodyAsString);
- var request = new RequestMessage(new Uri("http://localhost/foo"), "POST", body, bodyAsString, new Dictionary { { "Content-Type", "text/plain" } });
+ var bodyAsString = "abc";
+ var body = Encoding.UTF8.GetBytes(bodyAsString);
+ var request = new RequestMessage(new Uri("http://localhost/foo"), "POST", body, bodyAsString, Encoding.UTF8, new Dictionary { { "Content-Type", "text/plain" } });
var response = Response.Create().WithHeader("x", "{{request.headers.Content-Type}}").WithBody("test").WithTransformer();
@@ -66,5 +66,41 @@ namespace WireMock.Net.Tests
Check.That(responseMessage.Body).Equals("test");
Check.That(responseMessage.Headers).Contains(new KeyValuePair("x", "text/plain"));
}
+
+ [Test]
+ public async Task Response_ProvideResponse_Encoding_Body()
+ {
+ // given
+ var bodyAsString = "abc";
+ var body = Encoding.UTF8.GetBytes(bodyAsString);
+ var request = new RequestMessage(new Uri("http://localhost/foo"), "POST", body, bodyAsString, Encoding.UTF8);
+
+ var response = Response.Create().WithBody("test", Encoding.ASCII);
+
+ // act
+ var responseMessage = await response.ProvideResponse(request);
+
+ // then
+ Check.That(responseMessage.Body).Equals("test");
+ Check.That(responseMessage.BodyEncoding).Equals(Encoding.ASCII);
+ }
+
+ [Test]
+ public async Task Response_ProvideResponse_Encoding_JsonBody()
+ {
+ // given
+ var bodyAsString = "abc";
+ var body = Encoding.UTF8.GetBytes(bodyAsString);
+ var request = new RequestMessage(new Uri("http://localhost/foo"), "POST", body, bodyAsString, Encoding.UTF8);
+
+ var response = Response.Create().WithBodyAsJson(new { value = "test" }, Encoding.ASCII);
+
+ // act
+ var responseMessage = await response.ProvideResponse(request);
+
+ // then
+ Check.That(responseMessage.Body).Equals("{\"value\":\"test\"}");
+ Check.That(responseMessage.BodyEncoding).Equals(Encoding.ASCII);
+ }
}
}
\ No newline at end of file