mirror of
https://github.com/wiremock/WireMock.Net.git
synced 2026-03-30 22:32:56 +02:00
Handle Exception (#13)
This commit is contained in:
@@ -1,5 +1,6 @@
|
|||||||
using System;
|
using System;
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
|
using WireMock.Matchers;
|
||||||
using WireMock.RequestBuilders;
|
using WireMock.RequestBuilders;
|
||||||
using WireMock.ResponseBuilders;
|
using WireMock.ResponseBuilders;
|
||||||
|
|
||||||
@@ -50,6 +51,13 @@ namespace WireMock.Net.ConsoleApplication
|
|||||||
.WithHeader("Content-Type", "application/json")
|
.WithHeader("Content-Type", "application/json")
|
||||||
.WithBody(@"{ ""result"": ""data posted with 201""}"));
|
.WithBody(@"{ ""result"": ""data posted with 201""}"));
|
||||||
|
|
||||||
|
server
|
||||||
|
.Given(Request.WithUrl("/json").UsingPost().WithBody(new JsonPathMatcher("$.things[?(@.name == 'RequiredThing')]")))
|
||||||
|
.RespondWith(Response
|
||||||
|
.WithStatusCode(201)
|
||||||
|
.WithHeader("Content-Type", "application/json")
|
||||||
|
.WithBody(@"{ ""result"": ""json posted with 201""}"));
|
||||||
|
|
||||||
server
|
server
|
||||||
.Given(Request.WithUrl("/data").UsingDelete())
|
.Given(Request.WithUrl("/data").UsingDelete())
|
||||||
.RespondWith(Response
|
.RespondWith(Response
|
||||||
|
|||||||
@@ -249,21 +249,33 @@ namespace WireMock
|
|||||||
|
|
||||||
var request = _requestMapper.Map(ctx.Request);
|
var request = _requestMapper.Map(ctx.Request);
|
||||||
LogRequest(request);
|
LogRequest(request);
|
||||||
var targetRoute = _routes.FirstOrDefault(route => route.IsRequestHandled(request));
|
try
|
||||||
if (targetRoute == null)
|
|
||||||
{
|
{
|
||||||
ctx.Response.StatusCode = 404;
|
var targetRoute = _routes.FirstOrDefault(route => route.IsRequestHandled(request));
|
||||||
var content = Encoding.UTF8.GetBytes("<html><body>Mock Server: page not found</body></html>");
|
if (targetRoute == null)
|
||||||
|
{
|
||||||
|
ctx.Response.StatusCode = 404;
|
||||||
|
|
||||||
|
byte[] content = Encoding.UTF8.GetBytes("<html><body>Mock Server: page not found</body></html>");
|
||||||
|
ctx.Response.OutputStream.Write(content, 0, content.Length);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var response = await targetRoute.ResponseTo(request);
|
||||||
|
_responseMapper.Map(response, ctx.Response);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
ctx.Response.StatusCode = 500;
|
||||||
|
|
||||||
|
byte[] content = Encoding.UTF8.GetBytes(ex.ToString());
|
||||||
ctx.Response.OutputStream.Write(content, 0, content.Length);
|
ctx.Response.OutputStream.Write(content, 0, content.Length);
|
||||||
}
|
}
|
||||||
else
|
finally
|
||||||
{
|
{
|
||||||
var response = await targetRoute.ResponseTo(request);
|
ctx.Response.Close();
|
||||||
|
|
||||||
_responseMapper.Map(response, ctx.Response);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ctx.Response.Close();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
@@ -1,13 +1,7 @@
|
|||||||
using System.Diagnostics.CodeAnalysis;
|
using System.Linq;
|
||||||
using System.Linq;
|
|
||||||
using System.Net;
|
using System.Net;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
|
||||||
[module:
|
|
||||||
SuppressMessage("StyleCop.CSharp.DocumentationRules",
|
|
||||||
"SA1633:FileMustHaveHeader",
|
|
||||||
Justification = "Reviewed. Suppression is OK here, as unknown copyright and company.")]
|
|
||||||
|
|
||||||
namespace WireMock
|
namespace WireMock
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -27,7 +21,9 @@ namespace WireMock
|
|||||||
public void Map(ResponseMessage responseMessage, HttpListenerResponse result)
|
public void Map(ResponseMessage responseMessage, HttpListenerResponse result)
|
||||||
{
|
{
|
||||||
result.StatusCode = responseMessage.StatusCode;
|
result.StatusCode = responseMessage.StatusCode;
|
||||||
|
|
||||||
responseMessage.Headers.ToList().ForEach(pair => result.AddHeader(pair.Key, pair.Value));
|
responseMessage.Headers.ToList().ForEach(pair => result.AddHeader(pair.Key, pair.Value));
|
||||||
|
|
||||||
if (responseMessage.Body != null)
|
if (responseMessage.Body != null)
|
||||||
{
|
{
|
||||||
var content = Encoding.UTF8.GetBytes(responseMessage.Body);
|
var content = Encoding.UTF8.GetBytes(responseMessage.Body);
|
||||||
@@ -35,4 +31,4 @@ namespace WireMock
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user