public void RetrieveViaSQSReceiver()
        {
            var services = new ServiceCollection();

            services.Configure <SQSReceiverOptions>(options => { });

            services.AddSQSReceiver("myReceiver", options =>
            {
                options.QueueUrl        = new Uri("http://example.com");
                options.Region          = "us-west-2";
                options.MaxMessages     = 5;
                options.AutoAcknowledge = false;
                options.WaitTimeSeconds = 123;
                options.UnpackSNS       = true;
                options.TerminateMessageVisibilityTimeoutOnRollback = true;
            }, false);

            var serviceProvider = services.BuildServiceProvider();

            var receiver = serviceProvider.GetRequiredService <IReceiver>();

            var sqsReceiver = receiver.Should().BeOfType <SQSReceiver>().Subject;

            sqsReceiver.Name.Should().Be("myReceiver");
            sqsReceiver.QueueUrl !.OriginalString.Should().Be("http://example.com");
            sqsReceiver.SQSClient.Config.RegionEndpoint.Should().Be(RegionEndpoint.USWest2);
            sqsReceiver.MaxMessages.Should().Be(5);
            sqsReceiver.AutoAcknwoledge.Should().BeFalse();
            sqsReceiver.WaitTimeSeconds.Should().Be(123);
            sqsReceiver.UnpackSNS.Should().BeTrue();
            sqsReceiver.TerminateMessageVisibilityTimeoutOnRollback.Should().BeTrue();
        }
예제 #2
0
    public void ReplaceHttpClient_HttpClientUriAndTimeoutWereSet()
    {
        //Arrange
        var services = new ServiceCollection();

        services.AddDbContext <IKSqlDBContext, KSqlDBContext>(c =>
        {
            c.UseKSqlDb(TestParameters.KsqlDBUrl);

            c.ReplaceHttpClient <IHttpClientFactory, HttpClientFactory>(httpClient =>
            {
                httpClient.Timeout = TimeSpan.FromMinutes(5);
            }).AddHttpMessageHandler(_ => Mock.Of <DelegatingHandler>());
        });

        var provider = services.BuildServiceProvider();

        //Act
        var httpClientFactory = provider.GetRequiredService <IHttpClientFactory>();
        var httpClient        = httpClientFactory.CreateClient();

        //Assert
        httpClient.Timeout.Should().Be(TimeSpan.FromMinutes(5));
        httpClient.BaseAddress !.OriginalString.Should().Be(TestParameters.KsqlDBUrl);
    }
    public void CreateClient_BaseAddressWasSet()
    {
        //Arrange
        var httpClient = new HttpClient()
        {
            BaseAddress = new Uri(TestParameters.KsqlDBUrl)
        };

        var httpClientFactory = new HttpClientFactory(httpClient);

        //Act
        var receivedHttpClient = httpClientFactory.CreateClient();

        //Assert
        receivedHttpClient.Should().BeSameAs(httpClient);
        receivedHttpClient.Should().BeOfType <HttpClient>();
        receivedHttpClient.BaseAddress !.OriginalString.Should().BeEquivalentTo(TestParameters.KsqlDBUrl);
    }
        public void RetrieveViaReloadingReceiver()
        {
            var reloadingReceiverType = Type.GetType("RockLib.Messaging.DependencyInjection.ReloadingReceiver`1, RockLib.Messaging", true)?
                                        .MakeGenericType(typeof(SQSReceiverOptions));

            var services = new ServiceCollection();

            services.Configure <SQSReceiverOptions>(options => { });

            services.AddSQSReceiver("myReceiver", options =>
            {
                options.QueueUrl        = new Uri("http://example.com");
                options.Region          = "us-west-2";
                options.MaxMessages     = 5;
                options.AutoAcknowledge = false;
                options.WaitTimeSeconds = 123;
                options.UnpackSNS       = true;
                options.TerminateMessageVisibilityTimeoutOnRollback = true;
            }, true);

            var serviceProvider = services.BuildServiceProvider();

            var receiver = serviceProvider.GetRequiredService <IReceiver>();

            receiver.Should().BeOfType(reloadingReceiverType);

            var sqsReceiver = (SQSReceiver)receiver.Unlock().Receiver;

            sqsReceiver.Name.Should().Be("myReceiver");
            sqsReceiver.QueueUrl !.OriginalString.Should().Be("http://example.com");
            sqsReceiver.SQSClient.Config.RegionEndpoint.Should().Be(RegionEndpoint.USWest2);
            sqsReceiver.MaxMessages.Should().Be(5);
            sqsReceiver.AutoAcknwoledge.Should().BeFalse();
            sqsReceiver.WaitTimeSeconds.Should().Be(123);
            sqsReceiver.UnpackSNS.Should().BeTrue();
            sqsReceiver.TerminateMessageVisibilityTimeoutOnRollback.Should().BeTrue();
        }