WithBodyAsBase64 (#14)

This commit is contained in:
Stef Heyenrath
2017-01-20 13:04:58 +01:00
parent e2552f03b9
commit 0d046daac5
3 changed files with 54 additions and 15 deletions

View File

@@ -1,4 +1,7 @@
namespace WireMock.ResponseBuilders
using System.Text;
using JetBrains.Annotations;
namespace WireMock.ResponseBuilders
{
/// <summary>
/// The BodyResponseBuilder interface.
@@ -8,12 +11,16 @@
/// <summary>
/// The with body.
/// </summary>
/// <param name="body">
/// The body.
/// </param>
/// <returns>
/// The <see cref="IResponseBuilder"/>.
/// </returns>
IResponseBuilder WithBody(string body);
/// <param name="body">The body.</param>
/// <returns>A <see cref="IResponseBuilder"/>.</returns>
IResponseBuilder WithBody([NotNull] string body);
/// <summary>
/// The with body as base64.
/// </summary>
/// <param name="bodyAsbase64">The body asbase64.</param>
/// <param name="encoding">The Encoding.</param>
/// <returns>A <see cref="IResponseBuilder"/>.</returns>
IResponseBuilder WithBodyAsBase64([NotNull] string bodyAsbase64, [CanBeNull] Encoding encoding = null);
}
}

View File

@@ -1,8 +1,12 @@
using System;
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using System.Text;
using System.Threading.Tasks;
using System.Xml;
using HandlebarsDotNet;
using JetBrains.Annotations;
using WireMock.Validation;
[module:
SuppressMessage("StyleCop.CSharp.ReadabilityRules",
@@ -146,10 +150,26 @@ namespace WireMock.ResponseBuilders
/// </returns>
public IResponseBuilder WithBody(string body)
{
Check.NotNull(body, nameof(body));
_responseMessage.Body = body;
return this;
}
/// <summary>
/// The with body as base64.
/// </summary>
/// <param name="bodyAsbase64">The body asbase64.</param>
/// <param name="encoding"></param>
/// <returns>A <see cref="IResponseBuilder"/>.</returns>
public IResponseBuilder WithBodyAsBase64(string bodyAsbase64, Encoding encoding = null)
{
Check.NotNull(bodyAsbase64, nameof(bodyAsbase64));
_responseMessage.Body = (encoding ?? Encoding.UTF8).GetString(Convert.FromBase64String(bodyAsbase64));
return this;
}
/// <summary>
/// The with transformer.
/// </summary>

View File

@@ -52,13 +52,27 @@ namespace WireMock.Net.Tests
.WithBody(@"{ msg: ""Hello world!""}"));
// when
var response
= await new HttpClient().GetStringAsync("http://localhost:" + _server.Port + "/foo");
var response = await new HttpClient().GetStringAsync("http://localhost:" + _server.Port + "/foo");
// then
Check.That(response).IsEqualTo(@"{ msg: ""Hello world!""}");
}
[Test]
public async Task Should_respond_to_request_bodyAsBase64()
{
// given
_server = FluentMockServer.Start();
_server.Given(Request.WithUrl("/foo").UsingGet()).RespondWith(Response.WithSuccess().WithBodyAsBase64("SGVsbG8gV29ybGQ/"));
// when
var response = await new HttpClient().GetStringAsync("http://localhost:" + _server.Port + "/foo");
// then
Check.That(response).IsEqualTo("Hello World?");
}
[Test]
public async Task Should_respond_404_for_unexpected_request()
{
@@ -66,8 +80,7 @@ namespace WireMock.Net.Tests
_server = FluentMockServer.Start();
// when
var response
= await new HttpClient().GetAsync("http://localhost:" + _server.Port + "/foo");
var response = await new HttpClient().GetAsync("http://localhost:" + _server.Port + "/foo");
// then
Check.That(response.StatusCode).IsEqualTo(HttpStatusCode.NotFound);
@@ -167,8 +180,7 @@ namespace WireMock.Net.Tests
.WithBody("REDIRECT SUCCESSFUL"));
// when
var response
= await new HttpClient().GetStringAsync("http://localhost:" + _server.Port + "/foo");
var response = await new HttpClient().GetStringAsync("http://localhost:" + _server.Port + "/foo");
// then
Check.That(response).IsEqualTo("REDIRECT SUCCESSFUL");
@@ -227,4 +239,4 @@ namespace WireMock.Net.Tests
_server.Stop();
}
}
}
}