public void WriteSampleObjectUsingFormatter_TryFormattingNonJsonSamples_DoesNotThrow() { Mock <MediaTypeFormatter> customFormatter = new Mock <MediaTypeFormatter>(); customFormatter.Setup(f => f.CanWriteType(It.IsAny <Type>())).Returns(true); customFormatter.Setup(f => f.WriteToStreamAsync(It.IsAny <Type>(), It.IsAny <object>(), It.IsAny <Stream>(), It.IsAny <HttpContent>(), It.IsAny <TransportContext>())).Returns( (Type type, object obj, Stream stream, HttpContent content, TransportContext context) => { StreamWriter writer = new StreamWriter(stream); writer.Write("some\r\nnon <json> string"); writer.Flush(); TaskCompletionSource <object> tcs = new TaskCompletionSource <object>(); tcs.SetResult(null); return(tcs.Task); }); HelpPageSampleGenerator sampleGenerator = new HelpPageSampleGenerator(); TextSample sample = Assert.IsType <TextSample>( sampleGenerator.WriteSampleObjectUsingFormatter( customFormatter.Object, "hello world", typeof(string), new MediaTypeHeaderValue("text/json") )); Assert.Equal("some\r\nnon <json> string", sample.Text); }
public void WriteSampleObjectUsingFormatter_UnwrapsAggregateException() { Mock <MediaTypeFormatter> bogusFormatter = new Mock <MediaTypeFormatter>(); bogusFormatter.Setup(f => f.CanWriteType(It.IsAny <Type>())).Returns(true); bogusFormatter.Setup(f => f.WriteToStreamAsync(It.IsAny <Type>(), It.IsAny <object>(), It.IsAny <Stream>(), It.IsAny <HttpContent>(), It.IsAny <TransportContext>())).Returns(() => { throw new AggregateException(new FormatException("Invalid format.")); }); HelpPageSampleGenerator sampleGenerator = new HelpPageSampleGenerator(); InvalidSample sampleNotProvided = Assert.IsType <InvalidSample>( sampleGenerator.WriteSampleObjectUsingFormatter( bogusFormatter.Object, "hello world", typeof(string), new MediaTypeHeaderValue("text/json") )); Assert.Equal("An exception has occurred while using the formatter 'MediaTypeFormatterProxy' to generate sample for media type 'text/json'. Exception message: Invalid format.", sampleNotProvided.ErrorMessage); }