public async Task Should_fail_sanitization_for_invalid_endpoint_name(string reasonToFail, string endpointName)
        {
            var settings   = DefaultConfigurationValues.Apply(SettingsHolderFactory.BuildWithSerializer());
            var extensions = new TransportExtensions <AzureServiceBusTransport>(settings);

            settings.SetDefault("NServiceBus.Routing.EndpointName", "sales");
            settings.SetDefault("NServiceBus.SharedQueue", "sales");

            extensions.NamespacePartitioning().AddNamespace(Name, Connectionstring);

            var topology = new ForwardingTransportInfrastructure(settings);
            await topology.Start();

            var sectionManager = topology.topologyManager;

            Assert.Throws <Exception>(() => sectionManager.DetermineQueuesToCreate(new QueueBindings(), endpointName), "Was expected to fail: " + reasonToFail);
        }
        public async Task Determines_there_should_be_a_queue_with_same_name_as_endpointname()
        {
            var settings   = DefaultConfigurationValues.Apply(SettingsHolderFactory.BuildWithSerializer());
            var extensions = new TransportExtensions <AzureServiceBusTransport>(settings);

            settings.SetDefault("NServiceBus.Routing.EndpointName", "sales");
            settings.SetDefault("NServiceBus.SharedQueue", "sales");

            extensions.NamespacePartitioning().AddNamespace(Name, Connectionstring);

            var topology = new ForwardingTransportInfrastructure(settings);
            await topology.Start();

            var sectionManager = topology.topologyManager;
            var definition     = sectionManager.DetermineQueuesToCreate(new QueueBindings(), "sales");

            Assert.AreEqual(1, definition.Entities.Count(ei => ei.Path == "sales" && ei.Type == EntityType.Queue && ei.Namespace.ConnectionString == Connectionstring));
        }
        public async Task Determines_the_namespace_from_partitioning_strategy()
        {
            var settings   = DefaultConfigurationValues.Apply(SettingsHolderFactory.BuildWithSerializer());
            var extensions = new TransportExtensions <AzureServiceBusTransport>(settings);

            settings.SetDefault("NServiceBus.Routing.EndpointName", "sales");
            settings.SetDefault("NServiceBus.SharedQueue", "sales");

            extensions.NamespacePartitioning().AddNamespace(Name, Connectionstring);

            var topology = new ForwardingTransportInfrastructure(settings);
            await topology.Start();

            var sectionManager = topology.topologyManager;
            var definition     = sectionManager.DetermineQueuesToCreate(new QueueBindings(), "sales");

            var namespaceInfo = new RuntimeNamespaceInfo(Name, Connectionstring);

            Assert.IsTrue(definition.Namespaces.Any(nsi => nsi == namespaceInfo));
        }
        public async Task Should_creates_subscription_entities_marked_as_not_be_listened_to()
        {
            var settings   = DefaultConfigurationValues.Apply(SettingsHolderFactory.BuildWithSerializer());
            var extensions = new TransportExtensions <AzureServiceBusTransport>(settings);

            settings.SetDefault("NServiceBus.Routing.EndpointName", "sales");
            settings.SetDefault("NServiceBus.SharedQueue", "sales");

            extensions.UseForwardingTopology().NamespacePartitioning().AddNamespace(Name, Connectionstring);

            var topology = new ForwardingTransportInfrastructure(settings);
            await topology.Start();

            var sectionManager = topology.topologyManager;

            sectionManager.DetermineQueuesToCreate(new QueueBindings(), "sales");
            sectionManager.DetermineTopicsToCreate("sales");

            var section = sectionManager.DetermineResourcesToSubscribeTo(typeof(SomeTestEvent), "sales");

            Assert.IsFalse(section.Entities.Any(x => x.ShouldBeListenedTo));
        }
        public async Task Creates_subscription_path_matching_the_subscribing_endpoint_name()
        {
            var settings   = DefaultConfigurationValues.Apply(SettingsHolderFactory.BuildWithSerializer());
            var extensions = new TransportExtensions <AzureServiceBusTransport>(settings);

            settings.SetDefault("NServiceBus.Routing.EndpointName", "sales");
            settings.SetDefault("NServiceBus.SharedQueue", "sales");

            extensions.UseForwardingTopology().NamespacePartitioning().AddNamespace(Name, Connectionstring);

            var topology = new ForwardingTransportInfrastructure(settings);
            await topology.Start();

            var sectionManager = topology.topologyManager;

            sectionManager.DetermineQueuesToCreate(new QueueBindings(), "sales");
            sectionManager.DetermineTopicsToCreate("sales");

            var section = sectionManager.DetermineResourcesToSubscribeTo(typeof(SomeTestEvent), "sales");

            Assert.IsTrue(section.Entities.All(e => e.Path == "sales"), "Subscription name should be matching subscribing endpoint name, but it wasn't.");
        }
        public async Task Creates_subscription_for_topic_in_bundle()
        {
            var settings   = DefaultConfigurationValues.Apply(SettingsHolderFactory.BuildWithSerializer());
            var extensions = new TransportExtensions <AzureServiceBusTransport>(settings);

            settings.SetDefault("NServiceBus.Routing.EndpointName", "sales");
            settings.SetDefault("NServiceBus.SharedQueue", "sales");

            extensions.UseForwardingTopology().NamespacePartitioning().AddNamespace(Name, Connectionstring);

            var topology = new ForwardingTransportInfrastructure(settings);
            await topology.Start();

            var sectionManager = topology.topologyManager;

            sectionManager.DetermineQueuesToCreate(new QueueBindings(), "sales");
            sectionManager.DetermineTopicsToCreate("sales");

            var section = sectionManager.DetermineResourcesToSubscribeTo(typeof(SomeTestEvent), "sales");

            Assert.That(section.Entities.Count(), Is.EqualTo(1));
        }
        public async Task Determines_there_should_be_a_topic_bundle_created()
        {
            var settings   = DefaultConfigurationValues.Apply(SettingsHolderFactory.BuildWithSerializer());
            var extensions = new TransportExtensions <AzureServiceBusTransport>(settings);

            settings.SetDefault("NServiceBus.Routing.EndpointName", "sales");
            settings.SetDefault("NServiceBus.SharedQueue", "sales");

            extensions.NamespacePartitioning().AddNamespace(Name, Connectionstring);

            var topology = new ForwardingTransportInfrastructure(settings);
            await topology.Start();

            var sectionManager = topology.topologyManager;

            sectionManager.DetermineQueuesToCreate(new QueueBindings(), "sales");
            var definition = sectionManager.DetermineTopicsToCreate("sales");

            var result = definition.Entities.Where(ei => ei.Type == EntityType.Topic && ei.Namespace.ConnectionString == Connectionstring && ei.Path.StartsWith("bundle-"));

            Assert.That(result.Count(), Is.EqualTo(1));
            Assert.That(result, Has.Exactly(1).Matches <EntityInfoInternal>(x => x.Path == "bundle-1"));
        }