public void FindProcessAndCreateMessagingStepBeforeStreamFirstReadEvent()
        {
            var trackingContext = new TrackingContext {
                ProcessActivityId = ActivityId.NewActivityId(),
            };

            using (var stream = new TrackingStream(new StringStream("some-content")))
            {
                MessageMock.Object.BodyPart.Data = stream;
                MessageMock.Setup(m => m.GetProperty(BtsProperties.OutboundTransportLocation)).Returns("outbound-transport-location");
                MessageMock.Setup(m => m.GetProperty(TrackingProperties.ProcessActivityId)).Returns(trackingContext.ProcessActivityId);
                MessageMock.Setup(m => m.GetProperty(TrackingProperties.MessagingStepActivityId)).Returns(trackingContext.MessagingStepActivityId);

                var sut = ActivityTracker.Create(new MicroComponent.ActivityTracker.Context(PipelineContextMock.Object, MessageMock.Object, ActivityTrackingModes.Step));
                sut.TrackActivity();

                ActivityFactory.Verify(
                    af => af.CreateProcess(It.IsAny <IBaseMessage>(), It.IsAny <string>()),
                    Times.Never());
                ActivityFactory.Verify(
                    af => af.FindProcess(It.Is <TrackingContext>(c => c.ProcessActivityId == trackingContext.ProcessActivityId)),
                    Times.Once());
                ActivityFactory.Verify(
                    af => af.CreateMessagingStep(It.IsAny <IBaseMessage>()),
                    Times.Once());
                ActivityFactory.Verify(
                    af => af.FindMessagingStep(It.IsAny <TrackingContext>()),
                    Times.Never());
            }
        }
Esempio n. 2
0
        public void BuildPropertyExtractorCollectionGivesPrecedenceToSchemaExtractorsOverPipelineExtractors()
        {
            using (var inputStream = new MemoryStream(Encoding.UTF8.GetBytes("<root xmlns='urn:ns'></root>")))
            {
                var annotationsMock = new Mock <ISchemaAnnotations>();
                annotationsMock.Setup(am => am.Extractors).Returns(
                    new PropertyExtractorCollection(
                        new XPathExtractor(BizTalkFactoryProperties.SenderName.QName, "/letter/*/to", ExtractionMode.Demote),
                        new XPathExtractor(TrackingProperties.Value2.QName, "/letter/*/salutations")));
                SchemaMetadataMock = new Mock <ISchemaMetadata>();
                SchemaMetadataMock.Setup(sm => sm.Annotations).Returns(annotationsMock.Object);
                SchemaBaseExtensions.SchemaMetadataFactory = type => SchemaMetadataMock.Object;

                MessageMock.Object.BodyPart.Data = inputStream;
                MessageMock.Setup(m => m.GetProperty(BtsProperties.MessageType)).Returns("urn:ns#root");

                var sut = new ContextPropertyExtractor {
                    Extractors = new[] {
                        new XPathExtractor(BizTalkFactoryProperties.SenderName.QName, "/letter/*/from", ExtractionMode.Promote),
                        new XPathExtractor(TrackingProperties.Value1.QName, "/letter/*/paragraph")
                    }
                };
                var extractors = sut.BuildPropertyExtractorCollection(PipelineContextMock.Object, MessageMock.Object);

                Assert.That(
                    extractors,
                    Is.EqualTo(
                        new[] {
                    new XPathExtractor(BizTalkFactoryProperties.SenderName.QName, "/letter/*/to", ExtractionMode.Demote),
                    new XPathExtractor(TrackingProperties.Value2.QName, "/letter/*/salutations"),
                    new XPathExtractor(TrackingProperties.Value1.QName, "/letter/*/paragraph")
                }));
            }
        }
Esempio n. 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();
                    }
        }
        public void TrackingContextIsRestoredForSolicitResponseInboundMessageUnlessNegativeCacheDuration()
        {
            var transmitWorkId = Guid.NewGuid().ToString();

            var trackingContext = new TrackingContext {
                ProcessActivityId        = ActivityId.NewActivityId(),
                ProcessingStepActivityId = ActivityId.NewActivityId(),
                MessagingStepActivityId  = ActivityId.NewActivityId()
            };

            MessageMock.Setup(m => m.GetProperty(BtsProperties.IsSolicitResponse)).Returns(true);
            MessageMock.Setup(m => m.GetProperty(BtsProperties.InboundTransportLocation)).Returns("inbound-transport-location");
            MessageMock.Setup(m => m.GetProperty(BtsProperties.TransmitWorkId)).Returns(transmitWorkId);

            var sut = CreateActivityTracker();

            sut.TrackingContextCacheDuration = TimeSpan.FromSeconds(-1);

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

            CacheMock.VerifyAll();

            // verifies that TrackingContext fields have been restored in message.Context
            MessageMock.Verify(m => m.SetProperty(TrackingProperties.ProcessActivityId, trackingContext.ProcessActivityId), Times.Never());
            MessageMock.Verify(m => m.SetProperty(TrackingProperties.ProcessingStepActivityId, trackingContext.ProcessingStepActivityId), Times.Never());
            MessageMock.Verify(m => m.SetProperty(TrackingProperties.MessagingStepActivityId, trackingContext.MessagingStepActivityId), Times.Never());
        }
        public void CreateProcessReturnsRegularBatchReleaseProcess()
        {
            var messageMock = new MessageMock();
            var factory     = (IBatchReleaseProcessActivityFactory) new BatchReleaseProcessActivityFactory(PipelineContextMock.Object);

            factory.CreateProcess(messageMock.Object, "name").Should().BeOfType <BatchReleaseProcess>();
        }
        public void TrackingContextIsCachedForSolicitResponseOutboundMessage()
        {
            var transmitWorkId = Guid.NewGuid().ToString();

            var trackingContext = new TrackingContext {
                ProcessActivityId        = ActivityId.NewActivityId(),
                ProcessingStepActivityId = ActivityId.NewActivityId(),
                MessagingStepActivityId  = ActivityId.NewActivityId()
            };

            MessageMock.Setup(m => m.GetProperty(BtsProperties.IsSolicitResponse)).Returns(true);
            MessageMock.Setup(m => m.GetProperty(BtsProperties.OutboundTransportLocation)).Returns("outbound-transport-location");
            MessageMock.Setup(m => m.GetProperty(BtsProperties.TransmitWorkId)).Returns(transmitWorkId);
            MessageMock.Setup(m => m.GetProperty(TrackingProperties.ProcessActivityId)).Returns(trackingContext.ProcessActivityId);
            MessageMock.Setup(m => m.GetProperty(TrackingProperties.ProcessingStepActivityId)).Returns(trackingContext.ProcessingStepActivityId);
            MessageMock.Setup(m => m.GetProperty(TrackingProperties.MessagingStepActivityId)).Returns(trackingContext.MessagingStepActivityId);

            CacheMock.Setup(c => c.Set(transmitWorkId, trackingContext, 60 + 1));

            var sut = CreateActivityTracker();

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

            CacheMock.VerifyAll();
        }
Esempio n. 7
0
        public void MessageContextManipulationsAreDelegatedToPropertyExtractors()
        {
            const string content = "<s1:letter xmlns:s1=\"urn-one\">"
                                   + "<s1:headers><s1:subject>inquiry</s1:subject></s1:headers>"
                                   + "<s1:body>"
                                   + "<s1:paragraph>paragraph-one</s1:paragraph>"
                                   + "<s1:footer>trail</s1:footer>"
                                   + "</s1:body>" +
                                   "</s1:letter>";

            using (var inputStream = new MemoryStream(Encoding.UTF8.GetBytes(content)))
            {
                var propertyExtractorMock = new Mock <PropertyExtractor>(BizTalkFactoryProperties.SenderName.QName, ExtractionMode.Clear)
                {
                    CallBase = true
                };
                var constantExtractorMock = new Mock <ConstantExtractor>(TrackingProperties.Value2.QName, "value2", ExtractionMode.Write)
                {
                    CallBase = true
                };
                var xpathExtractorMock = new Mock <XPathExtractor>(TrackingProperties.Value1.QName, "/*[local-name()='letter']/*/*[local-name()='paragraph']", ExtractionMode.Write)
                {
                    CallBase = true
                };

                var annotationsMock = new Mock <ISchemaAnnotations>();
                annotationsMock.Setup(am => am.Extractors).Returns(
                    new PropertyExtractorCollection(
                        propertyExtractorMock.Object,
                        constantExtractorMock.Object
                        ));
                SchemaMetadataMock = new Mock <ISchemaMetadata>();
                SchemaMetadataMock.Setup(sm => sm.Annotations).Returns(annotationsMock.Object);
                SchemaBaseExtensions.SchemaMetadataFactory = type => SchemaMetadataMock.Object;

                MessageMock.Object.BodyPart.Data = inputStream;
                MessageMock.Setup(m => m.GetProperty(BtsProperties.MessageType)).Returns("urn-one#letter");

                var sut = new ContextPropertyExtractor {
                    Extractors = new[] {
                        new XPathExtractor(TrackingProperties.ProcessName.QName, "/*[local-name()='letter']/*/*[local-name()='subject']", ExtractionMode.Promote),
                        xpathExtractorMock.Object,
                        new XPathExtractor(TrackingProperties.Value3.QName, "/*[local-name()='letter']/*/*[local-name()='footer']")
                    }
                };
                sut.Execute(PipelineContextMock.Object, MessageMock.Object);
                MessageMock.Object.BodyPart.Data.Drain();

                propertyExtractorMock.Verify(pe => pe.Execute(MessageMock.Object.Context));
                constantExtractorMock.Verify(pe => pe.Execute(MessageMock.Object.Context));
                //var newValue = "paragraph-one";
                // TODO not supported by moq xpathExtractorMock.Verify(pe => pe.Execute(MessageMock.Object.Context, "paragraph-one", ref newValue));

                MessageMock.Verify(m => m.SetProperty(BizTalkFactoryProperties.SenderName, null));
                MessageMock.Verify(m => m.SetProperty(TrackingProperties.Value1, "paragraph-one"));
                MessageMock.Verify(m => m.SetProperty(TrackingProperties.Value2, "value2"));
                MessageMock.Verify(m => m.SetProperty(TrackingProperties.Value3, "trail"));
                MessageMock.Verify(m => m.Promote(TrackingProperties.ProcessName, "inquiry"));
            }
        }
        public void CompleteTrackingOfOutboundMessageWithProcessAffiliationAfterStreamLastReadEvent()
        {
            using (var stream = new TrackingStream(new StringStream("some-content")))
            {
                MessageMock.Object.BodyPart.Data = stream;
                MessageMock.Setup(m => m.GetProperty(BtsProperties.OutboundTransportLocation)).Returns("outbound-transport-location");
                MessageMock.Setup(m => m.GetProperty(TrackingProperties.ProcessActivityId)).Returns(ActivityId.NewActivityId());

                var sut = ActivityTracker.Create(new MicroComponent.ActivityTracker.Context(PipelineContextMock.Object, MessageMock.Object, ActivityTrackingModes.Step));
                sut.TrackActivity();
                MessageMock.Object.BodyPart.Data.Drain();

                ProcessMock.Verify(
                    p => p.TrackActivity(),
                    Times.Never());
                InitiatingMessagingStepMock.Verify(
                    ms => ms.TrackActivity(It.IsAny <ActivityTrackingModes>(), It.IsAny <TrackingStream>()),
                    Times.Never());
                ProcessMock.Verify(
                    p => p.AddStep(InitiatingMessagingStepMock.Object),
                    Times.Never());
                MessagingStepMock.Verify(
                    ms => ms.TrackActivity(It.IsAny <ActivityTrackingModes>(), It.IsAny <TrackingStream>()),
                    Times.Once());
                ProcessMock.Verify(
                    p => p.AddStep(MessagingStepMock.Object),
                    Times.Once());
            }
        }
        public void BuildPropertyExtractorCollectionGivesPrecedenceToSchemaExtractorsOverPipelineExtractors()
        {
            // has to be called before ContextPropertyAnnotationMockInjectionScope overrides SchemaMetadata.For<>() factory method
            var schemaMetadata = SchemaMetadata.For <Any>();

            using (var inputStream = new MemoryStream(Encoding.UTF8.GetBytes("<root xmlns='urn:ns'></root>")))
                using (var contextPropertyAnnotationMockInjectionScope = new PropertyExtractorAnnotationMockInjectionScope())
                {
                    contextPropertyAnnotationMockInjectionScope.Extractors = new(
                        new XPathExtractor(BizTalkFactoryProperties.OutboundTransportLocation.QName, "/letter/*/to", ExtractionMode.Demote),
                        new XPathExtractor(BtsProperties.Operation.QName, "/letter/*/salutations"));

                    PipelineContextMock.Setup(pc => pc.GetDocumentSpecByType("urn:ns#root")).Returns(schemaMetadata.DocumentSpec);
                    MessageMock.Object.BodyPart.Data = inputStream;
                    MessageMock.Setup(m => m.GetProperty(BtsProperties.MessageType)).Returns("urn:ns#root");

                    var sut = new ContextPropertyExtractor {
                        Extractors = new[] {
                            new XPathExtractor(BizTalkFactoryProperties.OutboundTransportLocation.QName, "/letter/*/from", ExtractionMode.Promote),
                            new XPathExtractor(BtsProperties.OutboundTransportLocation.QName, "/letter/*/paragraph")
                        }
                    };
                    var extractors = sut.BuildPropertyExtractorCollection(PipelineContextMock.Object, MessageMock.Object);

                    extractors.Should().BeEquivalentTo(
                        new[] {
                        new XPathExtractor(BizTalkFactoryProperties.OutboundTransportLocation.QName, "/letter/*/to", ExtractionMode.Demote),
                        new XPathExtractor(BtsProperties.Operation.QName, "/letter/*/salutations"),
                        new XPathExtractor(BtsProperties.OutboundTransportLocation.QName, "/letter/*/paragraph")
                    });
                }
        }
        public void BuildXmlTranslationSetWithTranslationInContext()
        {
            MessageMock.Setup(c => c.GetProperty(BizTalkFactoryProperties.XmlTranslations))
            .Returns(
                XmlTranslationSetConverter.Serialize(
                    new() {
                Override = true,
                Items    = new[] {
                    new XmlNamespaceTranslation("sourceUrn5", "urn05")
                }
            }));

            var sut = new XmlTranslator {
                Translations = new() {
                    Override = false,
                    Items    = new[] {
                        new XmlNamespaceTranslation("sourceUrn1", "urn:test1"),
                        new XmlNamespaceTranslation("sourceUrn2", "urn:test2")
                    }
                }
            };

            sut.BuildXmlTranslationSet(MessageMock.Object).Should().Be(
                new XmlTranslationSet {
                Override = true,
                Items    = new[] {
                    new XmlNamespaceTranslation("sourceUrn5", "urn05")
                }
            });
        }
Esempio n. 11
0
        public void CaptureOfOutboundMessageDoesNotPiggyBackKernelTransaction()
        {
            MessageMock.Setup(m => m.GetProperty(BtsProperties.OutboundTransportLocation)).Returns("outbound-transport-location");

            using (new TransactionScope())
                using (var stream = new MemoryStream())
                {
                    MessageMock.Object.BodyPart.Data = stream;

                    var transaction = TransactionInterop.GetDtcTransaction(Transaction.Current);
                    PipelineContextMock.As <IPipelineContextEx>()
                    .Setup(pc => pc.GetTransaction())
                    .Returns((IKernelTransaction)transaction);

                    var sut = MessageBodyTracker.Create(new MicroComponent.ActivityTracker.Context(PipelineContextMock.Object, MessageMock.Object, ActivityTrackingModes.Body));
                    sut.SetupTracking();

                    ClaimStoreMock.Verify(
                        cs => cs.SetupMessageBodyCapture(
                            It.IsAny <TrackingStream>(),
                            It.IsAny <ActivityTrackingModes>(),
                            It.Is <Func <IKernelTransaction> >(ktf => ktf == null)),
                        Times.Once());
                }
        }
        public void DoesNotDisableRetryIfPropertyDoesNotExistInContext()
        {
            var sut = new TransportRetriesDisabler();

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

            MessageMock.Verify(m => m.SetProperty(BtsProperties.RetryCount, It.IsAny <int>()), Times.Never);
        }
Esempio n. 13
0
        public void DemoteDoesNotThrowIfNewValueIsNullOrEmpty()
        {
            var    messageMock = new MessageMock();
            var    sut         = new XPathExtractor(BizTalkFactoryProperties.MapTypeName.QName, "//value1", ExtractionMode.Demote);
            string newValue    = null;

            Invoking(() => sut.Execute(messageMock.Object.Context, "old", ref newValue)).Should().NotThrow();
            newValue.Should().BeNull();
        }
        public void ResolveProcessNameToUnidentified()
        {
            var sut         = ProcessNameResolver.Create(MessageMock.Object);
            var processName = sut.ResolveProcessName();

            processName.Should().Be(Default.Processes.Unidentified);

            MessageMock.Verify(m => m.SetProperty(TrackingProperties.ProcessName, Default.Processes.Unidentified), Times.Never());
        }
Esempio n. 15
0
        public void DemoteDoesNotThrowIfNewValueIsNullOrEmpty()
        {
            var    messageMock = new MessageMock();
            var    sut         = new XPathExtractor(TrackingProperties.Value1.QName, "//value1", ExtractionMode.Demote);
            string newValue    = null;

            Assert.That(() => sut.Execute(messageMock.Object.Context, "old", ref newValue), Throws.Nothing);
            Assert.That(newValue, Is.Null);
        }
        public void ResolveProcessNameToUnidentified()
        {
            var sut         = TrackingResolver.Create(MessageMock.Object);
            var processName = sut.ResolveProcessName();

            Assert.That(processName, Is.EqualTo(Default.Processes.Unidentified));

            MessageMock.Verify(m => m.SetProperty(TrackingProperties.ProcessName, Default.Processes.Unidentified), Times.Never());
        }
        public void DoesNotDisableRetryIfPropertyExistsInContextAndIsFalse()
        {
            MessageMock.Setup(m => m.GetProperty(BizTalkFactoryProperties.DisableTransportRetries)).Returns(false);

            var sut = new TransportRetriesDisabler();

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

            MessageMock.Verify(m => m.SetProperty(BtsProperties.RetryCount, It.IsAny <int>()), Times.Never);
        }
        public void DisableRetryIfPropertyExistsInContextAndIsTrue()
        {
            MessageMock.Setup(m => m.GetProperty(BizTalkFactoryProperties.DisableTransportRetries)).Returns(true);

            var sut = new TransportRetriesDisabler();

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

            MessageMock.Verify(m => m.SetProperty(BtsProperties.RetryCount, 0), Times.Once);
        }
        public void TrackingContextIsNotPropagatedForRequestResponsePort()
        {
            MessageMock.Setup(m => m.GetProperty(BtsProperties.IsRequestResponse)).Returns(true);

            var sut = CreateActivityTracker();

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

            CacheMock.VerifyAll();
        }
Esempio n. 20
0
        public void OutboundMessageBodyIsNotCheckedOut()
        {
            MessageMock.Setup(m => m.GetProperty(BtsProperties.OutboundTransportLocation)).Returns("outbound-transport-location");

            var sut = MessageBodyTracker.Create(new MicroComponent.ActivityTracker.Context(PipelineContextMock.Object, MessageMock.Object, ActivityTrackingModes.Body));

            sut.TryCheckOutMessageBody();

            ClaimStoreMock.Verify(cs => cs.Redeem(MessageMock.Object, It.IsAny <IResourceTracker>()), Times.Never());
        }
        public void MessageContextManipulationsAreDelegatedToPropertyExtractors()
        {
            const string content = "<s1:letter xmlns:s1=\"urn-one\">"
                                   + "<s1:headers><s1:subject>inquiry</s1:subject></s1:headers>"
                                   + "<s1:body>"
                                   + "<s1:paragraph>paragraph-one</s1:paragraph>"
                                   + "<s1:footer>trail</s1:footer>"
                                   + "</s1:body>" +
                                   "</s1:letter>";

            using (var inputStream = new MemoryStream(Encoding.UTF8.GetBytes(content)))
                using (var contextPropertyAnnotationMockInjectionScope = new PropertyExtractorAnnotationMockInjectionScope())
                {
                    var propertyExtractorMock = new Mock <PropertyExtractor>(BizTalkFactoryProperties.OutboundTransportLocation.QName, ExtractionMode.Clear)
                    {
                        CallBase = true
                    };
                    var constantExtractorMock = new Mock <ConstantExtractor>(BtsProperties.OutboundTransportLocation.QName, "OutboundTransportLocation", ExtractionMode.Write)
                    {
                        CallBase = true
                    };
                    var xpathExtractorMock = new Mock <XPathExtractor>(BtsProperties.Operation.QName, "/*[local-name()='letter']/*/*[local-name()='paragraph']", ExtractionMode.Write)
                    {
                        CallBase = true
                    };

                    contextPropertyAnnotationMockInjectionScope.Extractors = new(
                        propertyExtractorMock.Object,
                        constantExtractorMock.Object
                        );

                    MessageMock.Object.BodyPart.Data = inputStream;
                    MessageMock.Setup(m => m.GetProperty(BtsProperties.MessageType)).Returns("urn-one#letter");

                    var sut = new ContextPropertyExtractor {
                        Extractors = new[] {
                            new XPathExtractor(SBMessagingProperties.Label.QName, "/*[local-name()='letter']/*/*[local-name()='subject']", ExtractionMode.Promote),
                            xpathExtractorMock.Object,
                            new XPathExtractor(BizTalkFactoryProperties.MapTypeName.QName, "/*[local-name()='letter']/*/*[local-name()='footer']")
                        }
                    };
                    sut.Execute(PipelineContextMock.Object, MessageMock.Object);
                    MessageMock.Object.BodyPart.Data.Drain();

                    propertyExtractorMock.Verify(pe => pe.Execute(MessageMock.Object.Context));
                    constantExtractorMock.Verify(pe => pe.Execute(MessageMock.Object.Context));
                    xpathExtractorMock.Verify(pe => pe.Execute(MessageMock.Object.Context, "paragraph-one", ref It.Ref <string> .IsAny));

                    MessageMock.Verify(m => m.SetProperty(BizTalkFactoryProperties.OutboundTransportLocation, null));
                    MessageMock.Verify(m => m.SetProperty(BtsProperties.Operation, "paragraph-one"));
                    MessageMock.Verify(m => m.SetProperty(BtsProperties.OutboundTransportLocation, "OutboundTransportLocation"));
                    MessageMock.Verify(m => m.SetProperty(BizTalkFactoryProperties.MapTypeName, "trail"));
                    MessageMock.Verify(m => m.Promote(SBMessagingProperties.Label, "inquiry"));
                }
        }
        public void CorrelationIdIsNotPromotedInwardWhenEmpty()
        {
            MessageMock.Setup(m => m.GetProperty(BtsProperties.InboundTransportLocation)).Returns("inbound-transport-location");

            var sut = new SBMessagingContextPropagator();

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

            MessageMock.Verify(m => m.Promote(BizTalkFactoryProperties.CorrelationId, It.IsAny <string>()), Times.Never);
            MessageMock.Verify(m => m.SetProperty(BizTalkFactoryProperties.CorrelationId, It.IsAny <string>()), Times.Never);
        }
        public void DoesNotWriteMessageTypeInContextForUnknownSchema()
        {
            using (var inputStream = new MemoryStream(Encoding.UTF8.GetBytes("<root xmlns='urn:ns'></root>")))
            {
                MessageMock.Object.BodyPart.Data = inputStream;

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

                MessageMock.Verify(m => m.SetProperty(BizTalkFactoryProperties.MessageType, It.IsAny <string>()), Times.Never);
            }
        }
        public void OutboundTransportLocationWithOnlyFilename()
        {
            MessageMock
            .Setup(m => m.GetProperty(BizTalkFactoryProperties.OutboundTransportLocation))
            .Returns(@"file.txt");

            var sut = new ZipEncoder();

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

            MessageMock.Verify(m => m.SetProperty(BizTalkFactoryProperties.OutboundTransportLocation, "file.zip"));
        }
        public void OutboundTransportLocationAbsolutePathIsKeptUnchanged()
        {
            MessageMock
            .Setup(m => m.GetProperty(BizTalkFactoryProperties.OutboundTransportLocation))
            .Returns(@"\file.txt");

            var sut = new ZipEncoder();

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

            MessageMock.Verify(m => m.SetProperty(BizTalkFactoryProperties.OutboundTransportLocation, @"\file.zip"));
        }
Esempio n. 26
0
        public void UnsupportedOutboundTransportType()
        {
            MessageMock
            .Setup(m => m.GetProperty(BtsProperties.OutboundTransportCLSID))
            .Returns("ee0e71a6-8945-4dd3-8770-f9e5495ddc7b");

            var sut = new DirectoryCreator();

            Invoking(() => sut.Execute(PipelineContextMock.Object, MessageMock.Object))
            .Should().Throw <InvalidOperationException>()
            .WithMessage("Outbound file transport is required on this leg of the message exchange pattern.");
        }
        public void CorrelationIdIsNotPropagatedOutwardWhenEmpty()
        {
            using (var inputStream = new MemoryStream(Encoding.UTF8.GetBytes("<root xmlns='urn:ns'></root>")))
            {
                MessageMock.Object.BodyPart.Data = inputStream;
                MessageMock.Setup(m => m.GetProperty(BtsProperties.OutboundTransportLocation)).Returns("outbound-transport-location");

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

                MessageMock.Verify(m => m.SetProperty(SBMessagingProperties.CorrelationId, It.IsAny <string>()), Times.Never);
            }
        }
        public void ResolveProcessNameBeforeStreamFirstReadEvent()
        {
            using (var stream = new TrackingStream(new StringStream("some-content")))
            {
                MessageMock.Object.BodyPart.Data = stream;
                MessageMock.Setup(m => m.GetProperty(BtsProperties.OutboundTransportLocation)).Returns("outbound-transport-location");

                var sut = ActivityTracker.Create(new MicroComponent.ActivityTracker.Context(PipelineContextMock.Object, MessageMock.Object, ActivityTrackingModes.Step));
                sut.TrackActivity();

                TrackingResolverMock.Verify(tr => tr.ResolveProcessName(), Times.Once());
            }
        }
        public void ResolveProcessNameViaContext()
        {
            const string name = "context-process-name";

            MessageMock.Setup(m => m.GetProperty(TrackingProperties.ProcessName)).Returns(name);

            var sut         = ProcessNameResolver.Create(MessageMock.Object);
            var processName = sut.ResolveProcessName();

            processName.Should().Be(name);

            MessageMock.Verify(m => m.SetProperty(TrackingProperties.ProcessName, name), Times.Never());
        }
        public void FailedMessageRoutingIsEnabledByDefault()
        {
            var sut = new FailedMessageRoutingEnabler();

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

            MessageMock.Verify(
                m => m.SetProperty(BtsProperties.RouteMessageOnFailure, true),
                Times.Once());
            MessageMock.Verify(
                m => m.SetProperty(BtsProperties.SuppressRoutingFailureDiagnosticInfo, true),
                Times.Once());
        }