// Copyright © WireMock.Net using System.IO; using System.Net; using System.Net.Http; using System.Threading.Tasks; using FluentAssertions; using WireMock.RequestBuilders; using WireMock.ResponseBuilders; using WireMock.Server; using Xunit; namespace WireMock.Net.Tests.ResponseBuilders { public class ResponseWithBodyFromFileTests { [Fact] public async Task Response_ProvideResponse_WithBodyFromFile_AbsolutePath() { // Arrange var server = WireMockServer.Start(); string path = Path.Combine(Directory.GetCurrentDirectory(), "__admin", "mappings", "MyXmlResponse.xml"); server .Given( Request .Create() .UsingGet() .WithPath("/v1/content") ) .RespondWith( Response .Create() .WithStatusCode(HttpStatusCode.OK) .WithHeader("Content-Type", "application/xml") .WithBodyFromFile(path) ); // Act var response = await new HttpClient().GetStringAsync("http://localhost:" + server.Ports[0] + "/v1/content").ConfigureAwait(false); // Assert response.Should().Contain("world"); server.Stop(); } [Fact] public async Task Response_ProvideResponse_WithBodyFromFile_InSubDirectory() { // Arrange var server = WireMockServer.Start(); string path = @"subdirectory/MyXmlResponse.xml"; server .Given( Request .Create() .UsingGet() .WithPath("/v1/content") ) .RespondWith( Response .Create() .WithStatusCode(HttpStatusCode.OK) .WithHeader("Content-Type", "application/xml") .WithBodyFromFile(path) ); // Act var response = await new HttpClient().GetStringAsync("http://localhost:" + server.Ports[0] + "/v1/content").ConfigureAwait(false); // Assert response.Should().Contain("world"); server.Stop(); } [Fact] public async Task Response_ProvideResponse_WithBodyFromFile_InAdminMappingFolder() { // Arrange var server = WireMockServer.Start(); string path = @"MyXmlResponse.xml"; server .Given( Request .Create() .UsingGet() .WithPath("/v1/content") ) .RespondWith( Response .Create() .WithStatusCode(HttpStatusCode.OK) .WithHeader("Content-Type", "application/xml") .WithBodyFromFile(path) ); // Act var response = await new HttpClient().GetStringAsync("http://localhost:" + server.Ports[0] + "/v1/content").ConfigureAwait(false); // Assert response.Should().Contain("world"); server.Stop(); } } }