Пример #1
0
        public void MessageIsTransformedToEnvelopeViaEnvelopeSpecNameAnnotation()
        {
            using (var stream = MessageBody.Samples.Load("Message.BatchContentWithEnvelopeSpecName.xml"))
                using (var transformedStream = new StringStream("<root xmlns='urn:ns'></root>"))
                    using (var transformStreamMockInjectionScope = new TransformStreamMockInjectionScope())
                    {
                        MessageMock.Object.BodyPart.Data = stream;
                        PipelineContextMock
                        .Setup(pc => pc.GetDocumentSpecByType("urn:ns#root"))
                        .Returns(SchemaMetadata.For <Any>().DocumentSpec);

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

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

                        transformStreamMockInjectionScope.Mock.VerifyAll();
                    }
        }
Пример #2
0
        public void ReplacesMessageOriginalDataStreamWithTransformResult()
        {
            PipelineContextMock
            .Setup(m => m.GetDocumentSpecByType("http://schemas.microsoft.com/Edi/EdifactServiceSchema#UNB"))
            .Returns(SchemaMetadata.For <EdifactServiceSchema.UNB>().DocumentSpec);

            var sut = new XsltRunner {
                Encoding = Encoding.UTF8,
                MapType  = typeof(IdentityTransform)
            };

            using (var dataStream = new MemoryStream(Encoding.UTF8.GetBytes("<UNB xmlns='http://schemas.microsoft.com/Edi/EdifactServiceSchema'></UNB>")))
                using (var transformedStream = dataStream.Transform().Apply(sut.MapType))
                    using (var transformStreamMockInjectionScope = new TransformStreamMockInjectionScope())
                    {
                        MessageMock.Object.BodyPart.Data = dataStream;

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

                        sut.Execute(PipelineContextMock.Object, MessageMock.Object);

                        transformStreamMockInjectionScope.Mock.VerifyAll();

                        MessageMock.Object.BodyPart.Data.Should().BeOfType <MarkableForwardOnlyEventingReadStream>();
                        Reflector.GetField((MarkableForwardOnlyEventingReadStream)MessageMock.Object.BodyPart.Data, "m_data").Should().BeSameAs(transformedStream);
                    }
        }
Пример #3
0
        public void XsltFromContextHasPrecedenceOverConfiguredOne()
        {
            PipelineContextMock
            .Setup(m => m.GetDocumentSpecByType("http://schemas.microsoft.com/Edi/EdifactServiceSchema#UNB"))
            .Returns(SchemaMetadata.For <EdifactServiceSchema.UNB>().DocumentSpec);

            var sut = new XsltRunner {
                Encoding = Encoding.UTF8,
                MapType  = typeof(TransformBase)
            };

            using (var dataStream = new MemoryStream(Encoding.UTF8.GetBytes("<UNB xmlns='http://schemas.microsoft.com/Edi/EdifactServiceSchema'></UNB>")))
                using (var transformedStream = dataStream.Transform().Apply(typeof(IdentityTransform)))
                    using (var transformStreamMockInjectionScope = new TransformStreamMockInjectionScope())
                    {
                        MessageMock.Object.BodyPart.Data = dataStream;
                        MessageMock
                        .Setup(m => m.GetProperty(BizTalkFactoryProperties.MapTypeName))
                        .Returns(typeof(IdentityTransform).AssemblyQualifiedName);

                        var transformStreamMock = transformStreamMockInjectionScope.Mock;
                        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.Verify(ts => ts.Apply(sut.MapType, sut.Encoding), Times.Never());
                        transformStreamMock.VerifyAll();
                    }
        }
Пример #4
0
        public void DoesNothingWhenNoXslt()
        {
            using (var probeStreamMockInjectionScope = new ProbeStreamMockInjectionScope())
                using (var transformStreamMockInjectionScope = new TransformStreamMockInjectionScope())
                {
                    var sut = new XsltRunner();
                    sut.MapType.Should().BeNull();
                    sut.Execute(PipelineContextMock.Object, MessageMock.Object);

                    probeStreamMockInjectionScope.Mock.VerifyGet(ps => ps.MessageType, Times.Never());
                    transformStreamMockInjectionScope.Mock.Verify(ps => ps.Apply(It.IsAny <Type>()), Times.Never());
                }
        }
Пример #5
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);
                            }
        }
Пример #6
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();
                        }
        }
Пример #7
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>();
                        }
        }