Files
WireMock.Net/test/WireMock.Net.Tests/WireMockServer.Proxy2.cs
Stef Heyenrath d971144426 WireMock.Net version 1.1.x (#363)
* refactor

* rename api

* -preview-01

* logger

* move

* RandomDataGenerator.Net

* .

* ISettings

* renames...

* refactor CommandlineParser logic

* remove standalone

* Remove Interfaces

* Update tests

* WireMock.Net.StandAlone

* .

* fix

* .

* _settings

* Admin

* WireMock.Net.Abstractions

* fix build

* rename WireMockServer

* fix compile errors
2019-12-27 16:01:13 +01:00

49 lines
1.7 KiB
C#

using NFluent;
using System;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Threading.Tasks;
using WireMock.RequestBuilders;
using WireMock.ResponseBuilders;
using WireMock.Server;
using Xunit;
namespace WireMock.Net.Tests
{
public class WireMockServerProxy2Tests
{
[Fact]
public async Task WireMockServer_ProxyAndRecordSettings_ShouldProxy()
{
// Assign
var serverAsProxy = WireMockServer.Start();
serverAsProxy.Given(Request.Create().UsingPost())
.RespondWith(Response.Create().WithStatusCode(201).WithBodyAsJson(new { p = 42 }).WithHeader("Content-Type", "application/json"));
// Act
var server = WireMockServer.Start();
server.Given(Request.Create().UsingPost().WithHeader("prx", "1"))
.RespondWith(Response.Create().WithProxy(serverAsProxy.Urls[0]));
var request = new HttpRequestMessage
{
Method = HttpMethod.Post,
RequestUri = new Uri($"{server.Urls[0]}/TST"),
Content = new StringContent("test")
};
request.Headers.Add("prx", "1");
// Assert
var response = await new HttpClient().SendAsync(request);
string content = await response.Content.ReadAsStringAsync();
Check.That(content).IsEqualTo("{\"p\":42}");
Check.That(response.StatusCode).IsEqualTo(HttpStatusCode.Created);
Check.That(response.Content.Headers.GetValues("Content-Type").First()).IsEqualTo("application/json");
server.Dispose();
serverAsProxy.Dispose();
}
}
}