public void MessageIsTransformedToEnvelopeViaEnvelopeSpecNameAnnotation() { PipelineContextMock .Setup(pc => pc.GetDocumentSpecByType("urn:ns#root")) .Returns(Schema <Any> .DocumentSpec); var sut = new EnvelopeBuilder(); using (var inputStream = ResourceManager.Load("Data.BatchContentWithTransform.xml")) using (var transformedStream = new MemoryStream(Encoding.UTF8.GetBytes("<root xmlns='urn:ns'></root>"))) { MessageMock.Object.BodyPart.Data = inputStream; var transformStreamMock = new Mock <ITransformStream>(MockBehavior.Strict); StreamExtensions.StreamTransformerFactory = stream => transformStreamMock.Object; transformStreamMock .Setup(ts => ts.ExtendWith(MessageMock.Object.Context)) .Returns(transformStreamMock.Object); transformStreamMock .Setup(ts => ts.Apply(typeof(IdentityTransform), sut.Encoding)) .Returns(transformedStream) .Verifiable(); sut.Execute(PipelineContextMock.Object, MessageMock.Object); transformStreamMock.VerifyAll(); } }
public void MessageIsProbedForBatchDescriptor() { var probeStreamMock = new Mock <IProbeStream>(); var probeBatchContentStreamMock = probeStreamMock.As <IProbeBatchContentStream>(); StreamExtensions.StreamProberFactory = stream => probeStreamMock.Object; probeStreamMock .Setup(ps => ps.MessageType) .Returns(Schema <Envelope> .MessageType) .Verifiable(); probeBatchContentStreamMock .Setup(ps => ps.BatchDescriptor) .Returns(new BatchDescriptor { EnvelopeSpecName = new SchemaMetadata <Envelope>().DocumentSpec.DocSpecStrongName }) .Verifiable(); PipelineContextMock .Setup(pc => pc.GetDocumentSpecByType(Schema <Envelope> .MessageType)) .Returns(Schema <Envelope> .DocumentSpec); using (var dataStream = ResourceManager.Load("Data.BatchContent.xml")) { MessageMock.Object.BodyPart.Data = dataStream; var sut = new EnvelopeBuilder(); sut.Execute(PipelineContextMock.Object, MessageMock.Object); } probeStreamMock.VerifyAll(); probeBatchContentStreamMock.VerifyAll(); }
public void PartitionIsPromoted() { PipelineContextMock .Setup(pc => pc.GetDocumentSpecByType(Schema <Batch.Content> .MessageType)) .Returns(Schema <Batch.Content> .DocumentSpec); PipelineContextMock .Setup(pc => pc.GetDocumentSpecByType(Schema <Envelope> .MessageType)) .Returns(Schema <Envelope> .DocumentSpec); using (var dataStream = ResourceManager.Load("Data.BatchContent.xml")) { MessageMock.Object.BodyPart.Data = dataStream; var sut = new EnvelopeBuilder(); sut.Execute(PipelineContextMock.Object, MessageMock.Object); } MessageMock.Verify(m => m.Promote(BizTalkFactoryProperties.EnvelopePartition, "p-one")); }
public void FailsWhenMessageIsNotBatchContent() { var probeStreamMock = new Mock <IProbeBatchContentStream>().As <IProbeStream>(); StreamExtensions.StreamProberFactory = stream => probeStreamMock.Object; var transformStreamMock = new Mock <ITransformStream>(); StreamExtensions.StreamTransformerFactory = stream => transformStreamMock.Object; var sut = new EnvelopeBuilder(); Assert.That( () => sut.Execute(PipelineContextMock.Object, MessageMock.Object), Throws.InvalidOperationException.With.Message.EqualTo( string.Format( "No EnvelopeSpecName has been found in {0} message and no envelope can be applied.", typeof(Batch.Content).Name))); }
public void BatchContentIsTransformedToSpecificEnvelope() { string actualEnvelopeContent; string expectedEnvelopeContent; var sut = new EnvelopeBuilder(); var envelopeStream = new StringStream(MessageFactory.CreateEnvelope <Envelope>().OuterXml); var batchStream = new StringStream(MessageFactory.CreateMessage <Batch.Content>(ResourceManager.LoadString("Data.BatchContent.xml")).OuterXml); var transformedStream = new Stream[] { envelopeStream, batchStream }.Transform().Apply(sut.MapType, sut.Encoding); using (var expectedReader = XmlReader.Create(transformedStream, new XmlReaderSettings { CloseInput = true })) { expectedReader.Read(); expectedEnvelopeContent = expectedReader.ReadOuterXml(); } PipelineContextMock .Setup(pc => pc.GetDocumentSpecByType(Schema <Envelope> .MessageType)) .Returns(Schema <Envelope> .DocumentSpec); using (var dataStream = ResourceManager.Load("Data.BatchContent.xml")) { MessageMock.Object.BodyPart.Data = dataStream; sut.Execute(PipelineContextMock.Object, MessageMock.Object); using (var actualReader = XmlReader.Create(MessageMock.Object.BodyPart.Data, new XmlReaderSettings { CloseInput = true, IgnoreWhitespace = true })) { actualReader.Read(); actualEnvelopeContent = actualReader.ReadOuterXml(); } } Assert.That(actualEnvelopeContent, Is.EqualTo(expectedEnvelopeContent)); }