Example #1
0
        public void XsltEntailsMessageTypeIsPromoted()
        {
            using (var stream = new StringStream("<root xmlns='urn:ns'></root>"))
                using (var transformedStream = stream.Transform().Apply(typeof(IdentityTransform)))
                    using (var probeStreamMockInjectionScope = new ProbeStreamMockInjectionScope())
                        using (var probeBatchContentStreamMockInjectionScope = new ProbeBatchContentStreamMockInjectionScope())
                            using (var transformStreamMockInjectionScope = new TransformStreamMockInjectionScope())
                            {
                                PipelineContextMock
                                .Setup(m => m.GetDocumentSpecByType(SchemaMetadata.For <Envelope>().MessageType))
                                .Returns(SchemaMetadata.For <AddPart>().DocumentSpec);

                                MessageMock.Object.BodyPart.Data = stream;

                                probeStreamMockInjectionScope.Mock
                                .Setup(ps => ps.MessageType)
                                .Returns(SchemaMetadata.For <Envelope>().MessageType);
                                probeBatchContentStreamMockInjectionScope.Mock
                                .Setup(ps => ps.BatchDescriptor)
                                .Returns(new BatchDescriptor {
                                    EnvelopeSpecName = SchemaMetadata.For <Envelope>().DocumentSpec.DocSpecStrongName
                                });

                                transformStreamMockInjectionScope.Mock
                                .Setup(ts => ts.ExtendWith(MessageMock.Object.Context))
                                .Returns(transformStreamMockInjectionScope.Mock.Object);
                                transformStreamMockInjectionScope.Mock
                                .Setup(ts => ts.Apply(typeof(IdentityTransform), Encoding.UTF8))
                                .Returns(transformedStream);

                                var sut = new EnvelopeBuilder {
                                    Encoding = Encoding.UTF8, MapType = typeof(IdentityTransform)
                                };
                                sut.Execute(PipelineContextMock.Object, MessageMock.Object);

                                MessageMock.Verify(m => m.Promote(BtsProperties.MessageType, SchemaMetadata.For <AddPart>().MessageType), Times.Once);
                                MessageMock.Verify(m => m.Promote(BtsProperties.MessageType, It.IsAny <string>()), Times.Once);
                                MessageMock.Verify(m => m.Promote(BtsProperties.SchemaStrongName, SchemaMetadata.For <AddPart>().DocumentSpec.DocSpecStrongName), Times.Once);
                                MessageMock.Verify(m => m.Promote(BtsProperties.SchemaStrongName, It.IsAny <string>()), Times.Once);
                            }
        }
Example #2
0
        public void XsltFromContextHasPrecedenceOverConfiguredOne()
        {
            using (var stream = new StringStream("<root xmlns='urn:ns'></root>"))
                using (var transformedStream = stream.Transform().Apply(typeof(IdentityTransform)))
                    using (var transformStreamMockInjectionScope = new TransformStreamMockInjectionScope())
                        using (var probeBatchContentStreamMockInjectionScope = new ProbeBatchContentStreamMockInjectionScope())
                        {
                            PipelineContextMock
                            .Setup(pc => pc.GetDocumentSpecByType("urn:ns#root"))
                            .Returns(SchemaMetadata.For <Any>().DocumentSpec);

                            MessageMock.Object.BodyPart.Data = stream;
                            MessageMock
                            .Setup(m => m.GetProperty(BizTalkFactoryProperties.MapTypeName))
                            .Returns(typeof(IdentityTransform).AssemblyQualifiedName);

                            probeBatchContentStreamMockInjectionScope.Mock
                            .Setup(ps => ps.BatchDescriptor)
                            .Returns(new BatchDescriptor {
                                EnvelopeSpecName = SchemaMetadata.For <Envelope>().DocumentSpec.DocSpecStrongName
                            });

                            transformStreamMockInjectionScope.Mock
                            .Setup(ts => ts.ExtendWith(MessageMock.Object.Context))
                            .Returns(transformStreamMockInjectionScope.Mock.Object);
                            transformStreamMockInjectionScope.Mock
                            .Setup(ts => ts.Apply(typeof(IdentityTransform), Encoding.UTF8))
                            .Returns(transformedStream)
                            .Verifiable();

                            var sut = new EnvelopeBuilder {
                                Encoding = Encoding.UTF8, MapType = typeof(TransformBase)
                            };
                            sut.Execute(PipelineContextMock.Object, MessageMock.Object);

                            transformStreamMockInjectionScope.Mock.Verify(ts => ts.Apply(sut.MapType, sut.Encoding), Times.Never);
                            transformStreamMockInjectionScope.Mock.VerifyAll();
                        }
        }
Example #3
0
        public void MessageIsProbedForBatchDescriptor()
        {
            using (var stream = MessageBody.Samples.Load("Message.BatchContent.xml"))
                using (var probeBatchContentStreamMockInjectionScope = new ProbeBatchContentStreamMockInjectionScope())
                {
                    MessageMock.Object.BodyPart.Data = stream;
                    PipelineContextMock
                    .Setup(pc => pc.GetDocumentSpecByType(SchemaMetadata.For <Envelope>().MessageType))
                    .Returns(SchemaMetadata.For <Envelope>().DocumentSpec);

                    probeBatchContentStreamMockInjectionScope.Mock
                    .Setup(ps => ps.BatchDescriptor)
                    .Returns(new BatchDescriptor {
                        EnvelopeSpecName = SchemaMetadata.For <Envelope>().DocumentSpec.DocSpecStrongName
                    })
                    .Verifiable();

                    var sut = new EnvelopeBuilder();
                    sut.Execute(PipelineContextMock.Object, MessageMock.Object);

                    probeBatchContentStreamMockInjectionScope.Mock.VerifyAll();
                }
        }
Example #4
0
        public void ReplacesMessageOriginalDataStreamWithTransformResult()
        {
            using (var stream = new StringStream("<root xmlns='urn:ns'></root>"))
                using (var transformedStream = stream.Transform().Apply(typeof(IdentityTransform)))
                    using (var probeBatchContentStreamMockInjectionScope = new ProbeBatchContentStreamMockInjectionScope())
                        using (var transformStreamMockInjectionScope = new TransformStreamMockInjectionScope())
                        {
                            MessageMock.Object.BodyPart.Data = stream;
                            PipelineContextMock
                            .Setup(pc => pc.GetDocumentSpecByType("urn:ns#root"))
                            .Returns(SchemaMetadata.For <Any>().DocumentSpec);

                            probeBatchContentStreamMockInjectionScope.Mock
                            .Setup(ps => ps.BatchDescriptor)
                            .Returns(new BatchDescriptor {
                                EnvelopeSpecName = SchemaMetadata.For <Envelope>().DocumentSpec.DocSpecStrongName
                            });

                            transformStreamMockInjectionScope.Mock
                            .Setup(ts => ts.ExtendWith(MessageMock.Object.Context))
                            .Returns(transformStreamMockInjectionScope.Mock.Object);
                            transformStreamMockInjectionScope.Mock
                            .Setup(ts => ts.Apply(typeof(IdentityTransform), Encoding.UTF8))
                            .Returns(transformedStream)
                            .Verifiable();

                            var sut = new EnvelopeBuilder {
                                Encoding = Encoding.UTF8, MapType = typeof(IdentityTransform)
                            };
                            sut.Execute(PipelineContextMock.Object, MessageMock.Object);

                            transformStreamMockInjectionScope.Mock.VerifyAll();

                            Reflector.GetField(MessageMock.Object.BodyPart.Data.AsMarkable(), "m_data").Should().BeSameAs(transformedStream);
                            MessageMock.Object.BodyPart.Data.Should().BeOfType <MarkableForwardOnlyEventingReadStream>();
                        }
        }