public void Convert_WithJsonBody_CallsConvertOnHttpBodyContentMapperAndAssignsContents() { const string contentTypeString = "application/json"; var response = new ProviderServiceResponse { Status = 200, Headers = new Dictionary<string, string> { { "Content-Type", contentTypeString } }, Body = new { Test = "tester", Test2 = 1 } }; var jsonBody = "{\"Test\":\"tester\",\"Test2\":1}"; var httpBodyContent = new HttpBodyContent(content: Encoding.UTF8.GetBytes(jsonBody), contentType: contentTypeString, encoding: null); var mockHttpBodyContentMapper = Substitute.For<IHttpBodyContentMapper>(); mockHttpBodyContentMapper.Convert(body: Arg.Any<object>(), headers: response.Headers) .Returns(httpBodyContent); var mapper = new NancyResponseMapper(mockHttpBodyContentMapper); var result = mapper.Convert(response); string content; using (var stream = new MemoryStream()) { result.Contents(stream); stream.Position = 0; using (var reader = new StreamReader(stream)) { content = reader.ReadToEnd(); } } Assert.Equal(jsonBody, content); mockHttpBodyContentMapper.Received(1).Convert(body: Arg.Any<object>(), headers: response.Headers); }
public void Convert_WithPlainTextBody_CallsConvertOnHttpBodyContentMapperAndAssignsContents() { const string contentTypeString = "text/plain"; var response = new ProviderServiceResponse { Status = 200, Headers = new Dictionary<string, string> { { "Content-Type", contentTypeString } }, Body = "This is a plain body" }; var httpBodyContent = new HttpBodyContent(body: response.Body, contentType: contentTypeString, encoding: null); var mockHttpBodyContentMapper = Substitute.For<IHttpBodyContentMapper>(); mockHttpBodyContentMapper.Convert(body: Arg.Any<object>(), headers: response.Headers) .Returns(httpBodyContent); var mapper = new NancyResponseMapper(mockHttpBodyContentMapper); var result = mapper.Convert(response); string content; using (var stream = new MemoryStream()) { result.Contents(stream); stream.Position = 0; using (var reader = new StreamReader(stream)) { content = reader.ReadToEnd(); } } Assert.Equal(response.Body, content); mockHttpBodyContentMapper.Received(1).Convert(body: Arg.Any<object>(), headers: response.Headers); }