private static async Task <InputFormatterResult> ReadRequestBody(string sampleXml, ModelStateDictionary modelStateDictionary) { var formatter = new FhirXmlInputFormatter(new FhirXmlParser()); var metaData = new DefaultModelMetadata(new EmptyModelMetadataProvider(), new DefaultCompositeMetadataDetailsProvider(new IMetadataDetailsProvider[0]), new DefaultMetadataDetails(ModelMetadataIdentity.ForType(typeof(Observation)), ModelAttributes.GetAttributesForType(typeof(Observation)))); var defaultHttpContext = new DefaultHttpContext(); defaultHttpContext.Request.Body = new MemoryStream(Encoding.UTF8.GetBytes(sampleXml)); var context = new InputFormatterContext( defaultHttpContext, KnownActionParameterNames.Resource, modelStateDictionary, metaData, Substitute.For <Func <Stream, Encoding, TextReader> >()); return(await formatter.ReadRequestBodyAsync(context)); }
private bool CanRead(Type modelType, string contentType) { var formatter = new FhirXmlInputFormatter(new FhirXmlParser()); var modelMetadata = Substitute.For <ModelMetadata>(ModelMetadataIdentity.ForType(modelType)); var defaultHttpContext = new DefaultHttpContext(); defaultHttpContext.Request.ContentType = contentType; var result = formatter.CanRead( new InputFormatterContext( defaultHttpContext, "model", new ModelStateDictionary(), modelMetadata, Substitute.For <Func <Stream, Encoding, TextReader> >())); return(result); }