public void AddTopic_Throws_WhenTopicNull()
        {
            var serviceBusBuilder = new ServiceBusBuilder(Substitute.For <ISimulation>());

            Should.Throw <ArgumentNullException>(() => serviceBusBuilder.AddTopic(null))
            .ParamName.ShouldBe("topic");
        }
        public void SetPort_SetsPort()
        {
            var serviceBusBuilder = new ServiceBusBuilder(Substitute.For <ISimulation>());

            ServiceBusBuilder self = serviceBusBuilder.SetPort(1237);

            serviceBusBuilder.Port.ShouldBe(1237);
            self.ShouldBe(serviceBusBuilder);
        }
Beispiel #3
0
        public void Constructor_SetsPort()
        {
            var serviceBusBuilder = new ServiceBusBuilder(Substitute.For <ISimulation>());

            serviceBusBuilder.SetPort(7269);
            var settings = new ServiceBusSimulatorSettings(serviceBusBuilder);

            settings.Port.ShouldBe(7269);
        }
        public void AddQueue_Throws_WhenServiceBusBuilderNull()
        {
            ServiceBusBuilder serviceBusBuilder = null;

            Action action = () => serviceBusBuilder.AddQueue("foo");

            action.ShouldThrow <ArgumentNullException>()
            .ParamName.ShouldBe("serviceBusBuilder");
        }
Beispiel #5
0
        public void Dispose_DoesNotThrow_WhenCertificateNotSet()
        {
            var serviceBusBuilder   = new ServiceBusBuilder(Substitute.For <ISimulation>());
            var serviceBusSimulator = new ServiceBusSimulator(serviceBusBuilder);

            Action action = () => serviceBusSimulator.Dispose();

            action.ShouldNotThrow();
        }
        public void AddQueue_Throws_WhenEntityWithTheSameNameCIAlreadyExists()
        {
            var serviceBusBuilder = new ServiceBusBuilder(Substitute.For <ISimulation>());

            serviceBusBuilder.AddTopic(new Topic("x", new Subscription("y")));

            Should.Throw <ArgumentException>(() => serviceBusBuilder.AddQueue(new Queue("X/subscriptions/Y")))
            .ParamName.ShouldBe("queue");
        }
Beispiel #7
0
        public void Constructor_SetsQueues()
        {
            var serviceBusBuilder = new ServiceBusBuilder(Substitute.For <ISimulation>());

            serviceBusBuilder.AddTopic(new Topic("new"));
            var settings = new ServiceBusSimulatorSettings(serviceBusBuilder);

            settings.Queues.ShouldBeSameAs(serviceBusBuilder.Queues);
        }
        public void SetLoggerProvider_SetsLoggerProvider()
        {
            ILoggerProvider loggerProvider    = Substitute.For <ILoggerProvider>();
            var             serviceBusBuilder = new ServiceBusBuilder(Substitute.For <ISimulation>());

            ServiceBusBuilder self = serviceBusBuilder.SetLoggerProvider(loggerProvider);

            serviceBusBuilder.LoggerProvider.ShouldBeSameAs(loggerProvider);
            self.ShouldBe(serviceBusBuilder);
        }
        public void CallConfigureWithResolver()
        {
            var serviceBusConfiguration = A.Fake<IServiceBusConfiguration>();

             var componentUnderTest = new ServiceBusBuilder(this.serviceBusResolver);

             componentUnderTest.WithConfiguration(serviceBusConfiguration);

             A.CallTo(() => serviceBusConfiguration.Configure(this.serviceBusResolver)).MustHaveHappened(Repeated.Exactly.Once);
        }
        public void CallConfigureWithDefaultResolver()
        {
            var serviceBusConfiguration = A.Fake<IServiceBusConfiguration>();

             var componentUnderTest = new ServiceBusBuilder();

             componentUnderTest.WithConfiguration(serviceBusConfiguration);

             A.CallTo(() => serviceBusConfiguration.Configure(A<IServiceBusResolver>.That.IsInstanceOf(typeof(DefaultServiceBusResolver)))).MustHaveHappened(Repeated.Exactly.Once);
        }
Beispiel #11
0
        public void ConnectionString_Throws_WhenSimulatorNotRunning()
        {
            var serviceBusBuilder   = new ServiceBusBuilder(Substitute.For <ISimulation>());
            var serviceBusSimulator = new ServiceBusSimulator(serviceBusBuilder);

            Action action = () => serviceBusSimulator.ConnectionString.ShouldBeNull();

            action.ShouldThrow <InvalidOperationException>()
            .Message.ShouldBe(SR.Format(SR.SimulatorPropertyInvalid, "ConnectionString"));
        }
Beispiel #12
0
        public void SetCertificate_SetsCertificate()
        {
            var serviceBusBuilder = new ServiceBusBuilder(Substitute.For <ISimulation>());
            var cert = new X509Certificate2();

            ServiceBusBuilder self = serviceBusBuilder.SetCertificate(cert);

            serviceBusBuilder.Certificate.ShouldBeSameAs(cert);
            self.ShouldBe(serviceBusBuilder);
        }
Beispiel #13
0
        public void Constructor_SetsCertificate()
        {
            var serviceBusBuilder = new ServiceBusBuilder(Substitute.For <ISimulation>());
            var certificate       = new X509Certificate2();

            serviceBusBuilder.SetCertificate(certificate);
            var settings = new ServiceBusSimulatorSettings(serviceBusBuilder);

            settings.Certificate.ShouldBeSameAs(certificate);
        }
Beispiel #14
0
        public void Constructor_SetsLoggerProvider()
        {
            var             serviceBusBuilder = new ServiceBusBuilder(Substitute.For <ISimulation>());
            ILoggerProvider loggerProvider    = Substitute.For <ILoggerProvider>();

            serviceBusBuilder.SetLoggerProvider(loggerProvider);
            var settings = new ServiceBusSimulatorSettings(serviceBusBuilder);

            settings.LoggerProvider.ShouldBeSameAs(loggerProvider);
        }
Beispiel #15
0
        public async Task Dispose_SetsStateToStopped()
        {
            var serviceBusBuilder   = new ServiceBusBuilder(Substitute.For <ISimulation>());
            var serviceBusSimulator = new ServiceBusSimulator(serviceBusBuilder);
            await serviceBusSimulator.StartAsync();

            serviceBusSimulator.Dispose();

            serviceBusSimulator.State.ShouldBe(SimulatorState.Stopped);
        }
        public void AddQueue_AddsQueueToBuilder(string queueName)
        {
            var serviceBusBuilder = new ServiceBusBuilder(Substitute.For <ISimulation>());

            ServiceBusBuilder self = serviceBusBuilder.AddQueue(queueName);

            serviceBusBuilder.ShouldSatisfyAllConditions(
                () => serviceBusBuilder.Queues[0].Name.ShouldBe(queueName),
                () => self.ShouldBeSameAs(serviceBusBuilder)
                );
        }
        public void AddTopic_AddsTopicToBuilder()
        {
            var serviceBusBuilder = new ServiceBusBuilder(Substitute.For <ISimulation>());

            ServiceBusBuilder self = serviceBusBuilder.AddTopic("a");

            serviceBusBuilder.ShouldSatisfyAllConditions(
                () => serviceBusBuilder.Topics[0].Name.ShouldBe("a"),
                () => self.ShouldBeSameAs(serviceBusBuilder)
                );
        }
Beispiel #18
0
        public void AddTopic_Throws_WhenQueueWithTheSameNameCIAlreadyExists()
        {
            var serviceBusBuilder = new ServiceBusBuilder(Substitute.For <ISimulation>());

            serviceBusBuilder.AddQueue(new Queue("z"));

            ArgumentException exception = Should.Throw <ArgumentException>(() => serviceBusBuilder.AddTopic(new Topic("Z")));

            exception.ParamName.ShouldBe("topic");
            exception.Message.ShouldStartWith(SR.Format(SR.SbEntityNameNotUnique, "Z"));
        }
Beispiel #19
0
        public static EventBusBuilder UseAzureServiceBus(this EventBusBuilder builder, string connectionString,
                                                         string topic, string subscription, Action <ServiceBusOptions> optionsAction = null)
        {
            var options = new ServiceBusOptions();

            optionsAction?.Invoke(options);

            builder.UseFactory((serviceProvider) => {
                return(ServiceBusBuilder.Build(connectionString, topic, subscription, options, serviceProvider));
            });
            return(builder);
        }
Beispiel #20
0
        public void Build_AddsSimulatorToSimulation()
        {
            ISimulation simulation        = Substitute.For <ISimulation, IAddSimulator>();
            var         serviceBusBuilder = new ServiceBusBuilder(simulation);

            ((IAddSimulator)simulation).Add(Arg.Any <ServiceBusSimulator>())
            .Returns(info => info.ArgAt <ServiceBusSimulator>(0));

            var serviceBusSimulator = (ServiceBusSimulator)serviceBusBuilder.Build();

            ((IAddSimulator)simulation).Received(1).Add(serviceBusSimulator);
        }
Beispiel #21
0
        public void Dispose_DisposesTopics()
        {
            ServiceBusBuilder serviceBusBuilder = new ServiceBusBuilder(Substitute.For <ISimulation>())
                                                  .AddTopic("myTopic");
            var serviceBusSimulator = new ServiceBusSimulator(serviceBusBuilder);

            Entities.ITopic topic = serviceBusSimulator.Topics["myTopic"];

            serviceBusSimulator.Dispose();

            Should.Throw <ObjectDisposedException>(() => topic.Post(new Amqp.Message()));
        }
Beispiel #22
0
        public void Dispose_DisposesQueues()
        {
            ServiceBusBuilder serviceBusBuilder = new ServiceBusBuilder(Substitute.For <ISimulation>())
                                                  .AddQueue("myQueue");
            var serviceBusSimulator = new ServiceBusSimulator(serviceBusBuilder);

            Entities.IQueue queue = serviceBusSimulator.Queues["myQueue"];

            serviceBusSimulator.Dispose();

            Should.Throw <ObjectDisposedException>(() => queue.Post(new Amqp.Message()));
        }
Beispiel #23
0
        public void Dispose_DoesNotThrow_WhenCalledTwice()
        {
            var serviceBusBuilder   = new ServiceBusBuilder(Substitute.For <ISimulation>());
            var serviceBusSimulator = new ServiceBusSimulator(serviceBusBuilder);

            Action action = () =>
            {
                serviceBusSimulator.Dispose();
                serviceBusSimulator.Dispose();
            };

            action.ShouldNotThrow();
        }
Beispiel #24
0
        public void AddQueue_AddsQueue()
        {
            var queue             = new Queue("a");
            var serviceBusBuilder = new ServiceBusBuilder(Substitute.For <ISimulation>());

            ServiceBusBuilder self = serviceBusBuilder.AddQueue(queue);

            serviceBusBuilder.ShouldSatisfyAllConditions(
                () => serviceBusBuilder.Queues.Count.ShouldBe(1),
                () => serviceBusBuilder.Queues[0].ShouldBeSameAs(queue),
                () => self.ShouldBeSameAs(serviceBusBuilder)
                );
        }
        public void AddTopic_AddsTopicWithSubscriptionsToBuilder(string topicName, string[] subs)
        {
            var serviceBusBuilder = new ServiceBusBuilder(Substitute.For <ISimulation>());

            ServiceBusBuilder self = serviceBusBuilder.AddTopic(topicName, subs);

            serviceBusBuilder.ShouldSatisfyAllConditions(
                () => serviceBusBuilder.Topics[0].Name.ShouldBe(topicName),
                () => serviceBusBuilder.Topics[0].Subscriptions.Count.ShouldBe(subs?.Length ?? 0),
                () => serviceBusBuilder.Topics[0].Subscriptions.Select(s => s.Name).ToArray().ShouldBe(subs ?? new string[0]),
                () => self.ShouldBeSameAs(serviceBusBuilder)
                );
        }
Beispiel #26
0
        public void AddTopic_AddsTopic()
        {
            Subscription[] subscriptions     = null;
            var            topic             = new Topic("a", subscriptions);
            var            serviceBusBuilder = new ServiceBusBuilder(Substitute.For <ISimulation>());

            ServiceBusBuilder self = serviceBusBuilder.AddTopic(topic);

            serviceBusBuilder.ShouldSatisfyAllConditions(
                () => serviceBusBuilder.Topics.Count.ShouldBe(1),
                () => serviceBusBuilder.Topics[0].ShouldBeSameAs(topic),
                () => self.ShouldBeSameAs(serviceBusBuilder)
                );
        }
Beispiel #27
0
        public void Constructor_SetsQueuesCI()
        {
            var serviceBusBuilder = new ServiceBusBuilder(Substitute.For <ISimulation>());

            serviceBusBuilder.AddQueue(new Queue("One"));
            serviceBusBuilder.AddQueue(new Queue("two"));

            var simulator = new ServiceBusSimulator(serviceBusBuilder);

            simulator.ShouldSatisfyAllConditions(
                () => simulator.Queues.Count.ShouldBe(2),
                () => simulator.Queues["one"].Name.ShouldBe("One"),
                () => simulator.Queues["tWO"].Name.ShouldBe("two")
                );
        }
Beispiel #28
0
        public async Task StartAsync_UsesDefaultPort_WhenNotSecured()
        {
            var serviceBusBuilder   = new ServiceBusBuilder(Substitute.For <ISimulation>());
            var serviceBusSimulator = new ServiceBusSimulator(serviceBusBuilder);

            await serviceBusSimulator.StartAsync();

            try
            {
                serviceBusSimulator.Port.ShouldBe(5672);
            }
            finally
            {
                await serviceBusSimulator.StopAsync();
            }
        }
Beispiel #29
0
        public async Task StartAsync_ReportsActiveConnectionString()
        {
            var serviceBusBuilder   = new ServiceBusBuilder(Substitute.For <ISimulation>());
            var serviceBusSimulator = new ServiceBusSimulator(serviceBusBuilder);

            await serviceBusSimulator.StartAsync();

            try
            {
                serviceBusSimulator.ConnectionString.ShouldBe($"Endpoint=sb://127.0.0.1:{serviceBusSimulator.Port};SharedAccessKeyName=all;SharedAccessKey=CLwo3FQ3S39Z4pFOQDefaiUd1dSsli4XOAj3Y9Uh1E=;TransportType=Amqp");
            }
            finally
            {
                await serviceBusSimulator.StopAsync();
            }
        }
Beispiel #30
0
        public async Task StartAsync_ReportsActiveLocation()
        {
            var serviceBusBuilder   = new ServiceBusBuilder(Substitute.For <ISimulation>());
            var serviceBusSimulator = new ServiceBusSimulator(serviceBusBuilder);

            await serviceBusSimulator.StartAsync();

            try
            {
                serviceBusSimulator.Location.ShouldStartWith($"amqp://127.0.0.1:{serviceBusSimulator.Port}");
            }
            finally
            {
                await serviceBusSimulator.StopAsync();
            }
        }
Beispiel #31
0
        public async Task StartAsync_ReportsActivePort()
        {
            var serviceBusBuilder   = new ServiceBusBuilder(Substitute.For <ISimulation>());
            var serviceBusSimulator = new ServiceBusSimulator(serviceBusBuilder);

            await serviceBusSimulator.StartAsync();

            try
            {
                serviceBusSimulator.Port.ShouldNotBe(0);
            }
            finally
            {
                await serviceBusSimulator.StopAsync();
            }
        }
Beispiel #32
0
        public async Task StartAsync_SetsStateToRunning()
        {
            var serviceBusBuilder   = new ServiceBusBuilder(Substitute.For <ISimulation>());
            var serviceBusSimulator = new ServiceBusSimulator(serviceBusBuilder);

            await serviceBusSimulator.StartAsync();

            try
            {
                serviceBusSimulator.State.ShouldBe(SimulatorState.Running);
            }
            finally
            {
                await serviceBusSimulator.StopAsync();
            }
        }
        public void ResolveServiceBusDuringBuild()
        {
            var componentUnderTest = new ServiceBusBuilder(this.serviceBusResolver);

             componentUnderTest.Build();

             A.CallTo(() => this.serviceBusResolver.Resolve<IServiceBus>()).MustHaveHappened(Repeated.Exactly.Once);
        }
        public void ThrowExceptionWhenBuildingUsingDefaultResolver()
        {
            var componentUnderTest = new ServiceBusBuilder();

             Assert.That(() => componentUnderTest.Build(), Throws.InstanceOf<InvalidOperationException>().With.Message.EqualTo("Failed to create instance of IServiceBus; ensure WithConfiguration has been called."));
        }