Example #1
0
        public void ComputeReceiveLocationNameDoesNotRequireAggregateToMatchItsReceivePortOneIfItHasNone()
        {
            Skip.IfNot(BizTalkServerGroup.IsConfigured);

            var applicationBindingMock = new Mock <IApplicationBinding <NamingConventionSpy> >();

            applicationBindingMock.Setup(snc => snc.ResolveName()).Returns("SomeApplication");

            var receivePortMock = new Mock <IReceivePort <NamingConventionSpy> >();

            receivePortMock.Setup(rp => rp.GetType()).Returns(typeof(StandaloneReceivePort));
            receivePortMock.Setup(rp => rp.ApplicationBinding).Returns(applicationBindingMock.Object);
            receivePortMock.Setup(rp => rp.Name).Returns(new NamingConventionSpy {
                Party = "ReceivePortParty"
            });

            var receiveLocationMock = new Mock <IReceiveLocation <NamingConventionSpy> >();

            receiveLocationMock.Setup(rl => rl.GetType()).Returns(typeof(BankReceiveLocation));
            receiveLocationMock.Setup(rl => rl.ReceivePort).Returns(receivePortMock.Object);
            receiveLocationMock.Setup(rl => rl.Transport)
            .Returns(new ReceiveLocationTransport <NamingConventionSpy>(receiveLocationMock.Object)
            {
                Adapter = new FileAdapter.Inbound(_ => { })
            });

            var sut = new NamingConventionSpy {
                Subject = "SomeMessage", MessageFormat = "SomeFormat"
            };

            Invoking(() => sut.ComputeReceiveLocationNameSpy(receiveLocationMock.Object)).Should().NotThrow();
        }
Example #2
0
        public void ComputeReceiveLocationNameRequiresAggregateToMatchItsReceivePortOneIfItHasOne()
        {
            Skip.IfNot(BizTalkServerGroup.IsConfigured);

            var applicationBindingMock = new Mock <IApplicationBinding <NamingConventionSpy> >();

            applicationBindingMock.Setup(snc => snc.ResolveName()).Returns("SomeApplication");

            var receivePortMock = new Mock <IReceivePort <NamingConventionSpy> >();

            receivePortMock.Setup(rp => rp.GetType()).Returns(typeof(TaxAgencyReceivePort));
            receivePortMock.Setup(rp => rp.ApplicationBinding).Returns(applicationBindingMock.Object);
            receivePortMock.Setup(rp => rp.Name).Returns(new NamingConventionSpy {
                Party = "ReceivePortParty"
            });

            var receiveLocationMock = new Mock <IReceiveLocation <NamingConventionSpy> >();

            receiveLocationMock.Setup(rl => rl.GetType()).Returns(typeof(BankReceiveLocation));
            receiveLocationMock.Setup(rl => rl.ReceivePort).Returns(receivePortMock.Object);
            receiveLocationMock.Setup(rl => rl.Transport)
            .Returns(new ReceiveLocationTransport <NamingConventionSpy>(receiveLocationMock.Object)
            {
                Adapter = new FileAdapter.Inbound(_ => { })
            });

            var sut = new NamingConventionSpy {
                Subject = "SomeMessage", MessageFormat = "SomeFormat"
            };

            Invoking(() => sut.ComputeReceiveLocationNameSpy(receiveLocationMock.Object))
            .Should().Throw <NamingConventionException>()
            .WithMessage($"'{nameof(BankReceiveLocation)}' ReceiveLocation's Aggregate, 'Income', does not match its ReceivePort's one, 'Invoice'.");
        }
Example #3
0
        public void ComputeReceiveLocationNameTwoWay()
        {
            Skip.IfNot(BizTalkServerGroup.IsConfigured);

            var applicationBindingMock = new Mock <IApplicationBinding <NamingConventionSpy> >();

            applicationBindingMock.Setup(snc => snc.ResolveName()).Returns("SomeApplication");

            var receivePortMock = new Mock <IReceivePort <NamingConventionSpy> >();

            receivePortMock.Setup(rp => rp.GetType()).Returns(typeof(StandaloneReceivePort));
            receivePortMock.Setup(rp => rp.ApplicationBinding).Returns(applicationBindingMock.Object);
            receivePortMock.Setup(rp => rp.Name).Returns(new NamingConventionSpy {
                Party = "SomeParty"
            });
            receivePortMock.Setup(rp => rp.IsTwoWay).Returns(true);

            var receiveLocationMock = new Mock <IReceiveLocation <NamingConventionSpy> >();

            receiveLocationMock.Setup(rl => rl.GetType()).Returns(typeof(StandaloneReceiveLocation));
            receiveLocationMock.Setup(rl => rl.ReceivePort).Returns(receivePortMock.Object);
            receiveLocationMock.Setup(rl => rl.Transport)
            .Returns(new ReceiveLocationTransport <NamingConventionSpy>(receiveLocationMock.Object)
            {
                Adapter = new FileAdapter.Inbound(_ => { })
            });

            var sut = new NamingConventionSpy {
                Subject = "SomeMessage", MessageFormat = "SomeFormat"
            };

            sut.ComputeReceiveLocationNameSpy(receiveLocationMock.Object).Should().Be("SomeApplication.RL2.SomeParty.SomeMessage.FILE.SomeFormat");
        }
Example #4
0
        public void ComputeAggregateNameReturnsNullWhenTypeQualifiedNameIsNotMadeOfExactlyFiveTokens()
        {
            var sut = new NamingConventionSpy();

            sut.ComputeAggregateNameSpy(typeof(SampleApplication)).Should().BeNull();
            sut.ComputeAggregateNameSpy(typeof(FinanceSampleApplication)).Should().BeNull();
            sut.ComputeAggregateNameSpy(typeof(StandaloneReceivePort)).Should().BeNull();
        }
Example #5
0
        public void ComputeAdapterNameForOffice365EmailAdapter()
        {
            Skip.IfNot(BizTalkServerGroup.IsConfigured);

            var sut = new NamingConventionSpy();

            IAdapter adapter = new Office365EmailAdapter.Inbound();

            sut.ComputeAdapterNameSpy(adapter).Should().Be("Office365Email");
        }
Example #6
0
        public void ComputeApplicationNameReturnsTypeNameIfNotGiven()
        {
            var applicationBindingMock = new Mock <IApplicationBinding <NamingConventionSpy> >();

            applicationBindingMock.Setup(ab => ab.GetType()).Returns(typeof(UnnamedApplication));

            var sut = new NamingConventionSpy();

            sut.ComputeApplicationNameSpy(applicationBindingMock.Object).Should().Be(nameof(UnnamedApplication));
        }
Example #7
0
        public void ComputeApplicationNameReturnsGivenName()
        {
            var applicationBindingMock = new Mock <IApplicationBinding <NamingConventionSpy> >();

            var sut = new NamingConventionSpy {
                ApplicationName = "SampleApplicationName"
            };

            sut.ComputeApplicationNameSpy(applicationBindingMock.Object).Should().Be("SampleApplicationName");
        }
Example #8
0
        public void ComputeSendPortNameRequiresApplicationBinding()
        {
            var sendPortMock = new Mock <ISendPort <NamingConventionSpy> >();

            sendPortMock.Setup(sp => sp.GetType()).Returns(typeof(StandaloneSendPort));

            var sut = new NamingConventionSpy();

            Invoking(() => sut.ComputeSendPortNameSpy(sendPortMock.Object))
            .Should().Throw <NamingConventionException>()
            .WithMessage($"'{nameof(StandaloneSendPort)}' SendPort is not bound to application's send port collection.");
        }
Example #9
0
        public void ComputeSendPortNameRequiresParty()
        {
            var applicationBindingMock = new Mock <IApplicationBinding <NamingConventionSpy> >();

            var sendPortMock = new Mock <ISendPort <NamingConventionSpy> >();

            sendPortMock.Setup(sp => sp.GetType()).Returns(typeof(StandaloneSendPort));
            sendPortMock.Setup(sp => sp.ApplicationBinding).Returns(applicationBindingMock.Object);

            var sut = new NamingConventionSpy();

            Invoking(() => sut.ComputeSendPortNameSpy(sendPortMock.Object))
            .Should().Throw <NamingConventionException>()
            .WithMessage($"'{nameof(StandaloneSendPort)}' SendPort's Party is required.");
        }
Example #10
0
        public void ComputeAdapterNameResolvesActualProtocolTypeNameForWcfCustomIsolatedAdapter()
        {
            Skip.IfNot(BizTalkServerGroup.IsConfigured);

            var sut = new NamingConventionSpy();

            IAdapter adapter = new CustomIsolatedAdapterDummy <NetTcpBindingElement, CustomRLConfig>();

            sut.ComputeAdapterNameSpy(adapter).Should().Be("WCF-CustomIsolatedNetTcp");

            adapter = new CustomIsolatedAdapterDummy <WSHttpBindingElement, CustomRLConfig>();
            sut.ComputeAdapterNameSpy(adapter).Should().Be("WCF-CustomIsolatedWsHttp");

            adapter = new CustomIsolatedAdapterDummy <BasicHttpBindingElement, CustomRLConfig>();
            sut.ComputeAdapterNameSpy(adapter).Should().Be("WCF-CustomIsolatedBasicHttp");
        }
Example #11
0
        public void ComputeReceivePortNameEmbedsApplicationNameAndParty()
        {
            var applicationBindingMock = new Mock <IApplicationBinding <NamingConventionSpy> >();

            applicationBindingMock.Setup(snc => snc.ResolveName()).Returns("SomeApplication");

            var receivePortMock = new Mock <IReceivePort <NamingConventionSpy> >();

            receivePortMock.Setup(rp => rp.GetType()).Returns(typeof(StandaloneReceivePort));
            receivePortMock.Setup(rp => rp.ApplicationBinding).Returns(applicationBindingMock.Object);

            var sut = new NamingConventionSpy {
                Party = "SomeParty"
            };

            sut.ComputeReceivePortNameSpy(receivePortMock.Object).Should().Be("SomeApplication.RP1.SomeParty");
        }
Example #12
0
        public void ComputeReceiveLocationNameRequiresParty()
        {
            var receivePortMock = new Mock <IReceivePort <NamingConventionSpy> >();

            receivePortMock.Setup(rp => rp.Name).Returns(new NamingConventionSpy());

            var receiveLocationMock = new Mock <IReceiveLocation <NamingConventionSpy> >();

            receiveLocationMock.Setup(rp => rp.GetType()).Returns(typeof(BankReceiveLocation));
            receiveLocationMock.Setup(rl => rl.ReceivePort).Returns(receivePortMock.Object);

            var sut = new NamingConventionSpy();

            Invoking(() => sut.ComputeReceiveLocationNameSpy(receiveLocationMock.Object))
            .Should().Throw <NamingConventionException>()
            .WithMessage($"'{nameof(BankReceiveLocation)}' ReceiveLocation's Party is required.");
        }
Example #13
0
        public void ComputeSendPortNameRequiresNonNullMessageFormat()
        {
            var applicationBindingMock = new Mock <IApplicationBinding <NamingConventionSpy> >();

            applicationBindingMock.Setup(snc => snc.ResolveName()).Returns("SomeApplication");

            var sendPortMock = new Mock <ISendPort <NamingConventionSpy> >();

            sendPortMock.Setup(sp => sp.GetType()).Returns(typeof(StandaloneSendPort));
            sendPortMock.Setup(sp => sp.ApplicationBinding).Returns(applicationBindingMock.Object);

            var sut = new NamingConventionSpy {
                Party = "SomeParty", Subject = "SomeMessage"
            };

            Invoking(() => sut.ComputeSendPortNameSpy(sendPortMock.Object))
            .Should().Throw <NamingConventionException>()
            .WithMessage("A non null MessageFormat is required.");
        }
Example #14
0
        public void ComputeAdapterNameResolvesActualProtocolTypeNameForWcfCustomAdapter()
        {
            Skip.IfNot(BizTalkServerGroup.IsConfigured);

            var sut = new NamingConventionSpy();

            IAdapter adapter = new CustomAdapterDummy <NetTcpBindingElement, CustomRLConfig>();

            sut.ComputeAdapterNameSpy(adapter).Should().Be("WCF-CustomNetTcp");

            adapter = new CustomAdapterDummy <NetMsmqBindingElement, CustomRLConfig>();
            sut.ComputeAdapterNameSpy(adapter).Should().Be("WCF-CustomNetMsmq");

            adapter = new CustomAdapterDummy <Be.Stateless.BizTalk.Dsl.Binding.ServiceModel.Configuration.NetMsmqBindingElement, CustomRLConfig>();
            sut.ComputeAdapterNameSpy(adapter).Should().Be("WCF-CustomNetMsmq");

            adapter = new CustomAdapterDummy <OracleDBBindingConfigurationElement, CustomRLConfig>();
            sut.ComputeAdapterNameSpy(adapter).Should().Be("WCF-CustomOracleDB");

            adapter = new CustomAdapterDummy <SqlAdapterBindingConfigurationElement, CustomRLConfig>();
            sut.ComputeAdapterNameSpy(adapter).Should().Be("WCF-CustomSql");

            adapter = new WcfCustomAdapter.Outbound <CustomBindingElement>(a => a.Binding.Add(new MtomMessageEncodingElement(), new HttpsTransportElement()));
            sut.ComputeAdapterNameSpy(adapter).Should().Be("WCF-CustomHttps");

            adapter = new WcfCustomAdapter.Outbound <CustomBindingElement>(a => a.Binding.Add(new TcpTransportElement()));
            sut.ComputeAdapterNameSpy(adapter).Should().Be("WCF-CustomTcp");

            adapter = new WcfCustomAdapter.Outbound <CustomBindingElement>(a => a.Binding.Add(new SAPAdapterExtensionElement()));
            sut.ComputeAdapterNameSpy(adapter).Should().Be("WCF-CustomSap");

            adapter = new WcfCustomAdapter.Outbound <CustomBindingElement>(a => a.Binding.Add(new SqlAdapterBindingElementExtensionElement()));
            sut.ComputeAdapterNameSpy(adapter).Should().Be("WCF-CustomSql");

            // notice that OracleDBAdapterExtensionElement is internal :(
            //adapter = new WcfCustomAdapter.Outbound<CustomBindingElement>(a => a.Binding.Add(new OracleDBAdapterExtensionElement()));
            var type           = typeof(Microsoft.Adapters.OracleDB.InboundOperation).Assembly.GetType("Microsoft.Adapters.OracleDB.OracleDBAdapterExtensionElement", true);
            var bindingElement = (BindingElementExtensionElement)Activator.CreateInstance(type);

            adapter = new WcfCustomAdapter.Outbound <CustomBindingElement>(a => a.Binding.Add(bindingElement));
            sut.ComputeAdapterNameSpy(adapter).Should().Be("WCF-CustomOracleDB");
        }
Example #15
0
        public void ComputeReceiveLocationNameRequiresNonNullMessageFormat()
        {
            var receivePortMock = new Mock <IReceivePort <NamingConventionSpy> >();

            receivePortMock.Setup(rp => rp.Name).Returns(new NamingConventionSpy {
                Party = "ReceivePortParty"
            });

            var receiveLocationMock = new Mock <IReceiveLocation <NamingConventionSpy> >();

            receiveLocationMock.Setup(rl => rl.ReceivePort).Returns(receivePortMock.Object);

            var sut = new NamingConventionSpy {
                Subject = "SomeMessage"
            };

            Invoking(() => sut.ComputeReceiveLocationNameSpy(receiveLocationMock.Object))
            .Should().Throw <NamingConventionException>()
            .WithMessage("A non null MessageFormat is required.");
        }
Example #16
0
        public void ComputeReceivePortNameTwoWay()
        {
            Skip.IfNot(BizTalkServerGroup.IsConfigured);

            var applicationBindingMock = new Mock <IApplicationBinding <NamingConventionSpy> >();

            applicationBindingMock.Setup(snc => snc.ResolveName()).Returns("SomeApplication");

            var receivePortMock = new Mock <IReceivePort <NamingConventionSpy> >();

            receivePortMock.Setup(rp => rp.GetType()).Returns(typeof(StandaloneReceivePort));
            receivePortMock.Setup(rp => rp.ApplicationBinding).Returns(applicationBindingMock.Object);
            receivePortMock.Setup(rp => rp.IsTwoWay).Returns(true);

            var sut = new NamingConventionSpy {
                Party = "SomeParty"
            };

            sut.ComputeReceivePortNameSpy(receivePortMock.Object).Should().Be("SomeApplication.RP2.SomeParty");
        }
Example #17
0
        public void ComputeReceiveLocationNameRequiresPartyToMatchItsReceivePortOne()
        {
            var receivePortMock = new Mock <IReceivePort <NamingConventionSpy> >();

            receivePortMock.Setup(rp => rp.Name).Returns(new NamingConventionSpy {
                Party = "ReceivePortParty"
            });

            var receiveLocationMock = new Mock <IReceiveLocation <NamingConventionSpy> >();

            receiveLocationMock.Setup(rp => rp.GetType()).Returns(typeof(BankReceiveLocation));
            receiveLocationMock.Setup(rl => rl.ReceivePort).Returns(receivePortMock.Object);

            var sut = new NamingConventionSpy {
                Party = "ReceiveLocationParty", Subject = "SomeMessage", MessageFormat = "SomeFormat"
            };

            Invoking(() => sut.ComputeReceiveLocationNameSpy(receiveLocationMock.Object))
            .Should().Throw <NamingConventionException>()
            .WithMessage($"'{nameof(BankReceiveLocation)}' ReceiveLocation's Party, 'ReceiveLocationParty', does not match its ReceivePort's one, 'ReceivePortParty'.");
        }
Example #18
0
        public void ComputeSendPortNameEmbedsEmptyMessageFormat()
        {
            Skip.IfNot(BizTalkServerGroup.IsConfigured);

            var applicationBindingMock = new Mock <IApplicationBinding <NamingConventionSpy> >();

            applicationBindingMock.Setup(snc => snc.ResolveName()).Returns("SomeApplication");

            var sendPortMock = new Mock <ISendPort <NamingConventionSpy> >();

            sendPortMock.Setup(sp => sp.GetType()).Returns(typeof(StandaloneSendPort));
            sendPortMock.Setup(sp => sp.ApplicationBinding).Returns(applicationBindingMock.Object);
            sendPortMock.Setup(sp => sp.Transport).Returns(new SendPortTransport <NamingConventionSpy>(sendPortMock.Object)
            {
                Adapter = new FileAdapter.Outbound(_ => { })
            });

            var sut = new NamingConventionSpy {
                Party = "SomeParty", Subject = "SomeMessage", MessageFormat = string.Empty
            };

            sut.ComputeSendPortNameSpy(sendPortMock.Object).Should().Be("SomeApplication.SP1.SomeParty.SomeMessage.FILE");
        }
Example #19
0
        public void ComputeAggregateNameReturnsFourthTokenOfTypeQualifiedNameMadeOfExactlyFiveTokens()
        {
            var sut = new NamingConventionSpy();

            sut.ComputeAggregateNameSpy(typeof(TaxAgencyReceivePort)).Should().Be("Invoice");
        }