public async System.Threading.Tasks.Task GivenAFhirObjectAndXmlContentType_WhenSerializing_ThenTheObjectIsSerializedToTheResponseStream()
        {
            var formatter = new FhirXmlOutputFormatter(new FhirXmlSerializer(), NullLogger <FhirXmlOutputFormatter> .Instance);

            var resource   = new OperationOutcome();
            var serializer = new FhirXmlSerializer();

            var defaultHttpContext = new DefaultHttpContext();

            defaultHttpContext.Request.ContentType = ContentType.XML_CONTENT_HEADER;
            var responseBody = new MemoryStream();

            defaultHttpContext.Response.Body = responseBody;

            var writerFactory = Substitute.For <Func <Stream, Encoding, TextWriter> >();

            writerFactory.Invoke(Arg.Any <Stream>(), Arg.Any <Encoding>()).Returns(p => new StreamWriter(p.ArgAt <Stream>(0)));

            await formatter.WriteResponseBodyAsync(
                new OutputFormatterWriteContext(
                    defaultHttpContext,
                    writerFactory,
                    typeof(OperationOutcome),
                    resource),
                Encoding.UTF8);

            Assert.Equal(serializer.SerializeToString(resource), Encoding.UTF8.GetString(responseBody.ToArray()));

            responseBody.Dispose();
        }
示例#2
0
        private bool CanWrite(Type modelType, string contentType)
        {
            var formatter = new FhirXmlOutputFormatter(new FhirXmlSerializer(), NullLogger <FhirXmlOutputFormatter> .Instance);

            var defaultHttpContext = new DefaultHttpContext();

            defaultHttpContext.Request.ContentType = contentType;

            var result = formatter.CanWriteResult(
                new OutputFormatterWriteContext(
                    defaultHttpContext,
                    Substitute.For <Func <Stream, Encoding, TextWriter> >(),
                    modelType,
                    new Observation()));

            return(result);
        }