Exemplo n.º 1
0
        public async ValueTask <IActionResult> Index(
            [FromServices] IRepository <WebEntity> repository,
            [FromServices] IRepository <WebEntity, int> repositoryWithKey,
            [FromServices] IAsyncRepository <WebEntity> asyncRepository,
            [FromServices] IAsyncRepository <WebEntity, int> asyncRepositoryWithKey,
            [FromServices] IMessageBus messageBus,
            [FromServices] IMessageConverter messageConverter)
        {
            var repositoryStatus       = "OK";
            var messageBusStatus       = "OK";
            var messageConverterStatus = "OK";

            try
            {
                var hashSet = new HashSet <DbContext>
                {
                    repository.GetDbContext(),
                    repositoryWithKey.GetDbContext(),
                    asyncRepository.GetDbContext(),
                    asyncRepositoryWithKey.GetDbContext()
                };
                hashSet.Single();
            }
            catch (Exception)
            {
                repositoryStatus = "Error";
            }
            try
            {
                var message    = new WebTestMessage();
                var descriptor = new RichMessageDescriptor("", nameof(WebTestMessage).ToLowerInvariant());
                await messageBus.OnMessageReceivedAsync(message, descriptor);
            }
            catch (Exception)
            {
                messageBusStatus = "Error";
            }
            var testMessage = new WebTestMessage
            {
                TestMessage = "debug"
            };
            var serializedMessageString = messageConverter.SerializeString(testMessage);

            if (serializedMessageString == "{}")
            {
                messageConverterStatus = "Error";
            }

            return(Json(new
            {
                RepositoryStatus = repositoryStatus,
                MessageBusStatus = messageBusStatus,
                MessageConverterStatus = messageConverterStatus,
            }));
        }
Exemplo n.º 2
0
        public async Task DuplicateMessageReceiveTest()
        {
            var testMessage = new TestMessage()
            {
                TestTitle = "test"
            };
            var descriptor = new RichMessageDescriptor("", "TestMessage");

            for (int i = 0; i < 10; i++)
            {
                await MessageBus.OnMessageReceivedAsync(testMessage, descriptor);
            }
            FakeConsumedMessageStorageProvider.SaveAsyncParameters.Count.ShouldBe(1);
        }
Exemplo n.º 3
0
        public async Task DuplicateMessageReceiveTest2()
        {
            var testMessage = new TestMessage()
            {
                TestTitle = "test"
            };
            var descriptor = new RichMessageDescriptor(null, "", "TestMessage", false, null, null, Guid.NewGuid().ToString(), true, null);

            for (int i = 0; i < 10; i++)
            {
                await MessageBus.OnMessageReceivedAsync(testMessage, descriptor);
            }
            FakeConsumedMessageStorageProvider.SaveAsyncParameters.Count.ShouldBe(1);
        }
Exemplo n.º 4
0
        public async Task DuplicateMessageReceiveTest3()
        {
            var testMessage = new TestMessage()
            {
                TestTitle = "test"
            };
            var raw        = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(testMessage));
            var descriptor = new RichMessageDescriptor(raw, "", "TestMessage", false, null, null, null, true, null);

            for (int i = 0; i < 10; i++)
            {
                await MessageBus.OnMessageReceivedAsync(testMessage, descriptor);
            }
            FakeConsumedMessageStorageProvider.SaveAsyncParameters.Count.ShouldBe(1);
        }
Exemplo n.º 5
0
        public async Task EFDuplicateMessageConsumeTest()
        {
            var testMessage = new TestMessage()
            {
                Name = "test"
            };

            var descriptor = new RichMessageDescriptor("", nameof(TestMessage));

            for (int i = 0; i < 10; i++)
            {
                await MessageBus.OnMessageReceivedAsync(testMessage, descriptor);
            }

            UsingDbContext(context =>
            {
                context.TestConsumedMessageLogs.ShouldHaveSingleItem();
            });
        }
Exemplo n.º 6
0
        public async ValueTask <IActionResult> Index(
            [FromServices] IRepository <WebEntity> repository,
            [FromServices] IRepository <WebEntity, int> repositoryWithKey,
            [FromServices] IAsyncRepository <WebEntity> asyncRepository,
            [FromServices] IAsyncRepository <WebEntity, int> asyncRepositoryWithKey,
            [FromServices] IMessageBus messageBus)
        {
            var repositoryStatus = "OK";
            var messageBusStatus = "OK";

            try
            {
                var hashSet = new HashSet <DbContext>
                {
                    repository.GetDbContext(),
                    repositoryWithKey.GetDbContext(),
                    asyncRepository.GetDbContext(),
                    asyncRepositoryWithKey.GetDbContext()
                };
                Debug.Assert(hashSet.Single() != null);
            }
            catch (Exception)
            {
                repositoryStatus = "Error";
            }
            try
            {
                var message    = new WebTestMessage();
                var descriptor = new RichMessageDescriptor("", nameof(WebTestMessage).ToLowerInvariant());
                await messageBus.OnMessageReceivedAsync(message, descriptor);
            }
            catch (Exception)
            {
                messageBusStatus = "Error";
            }
            return(Json(new
            {
                RepositoryStatus = repositoryStatus,
                MessageBusStatus = messageBusStatus
            }));
        }
Exemplo n.º 7
0
        public async Task MessageHasherTest()
        {
            var hasher = Resolve <IMessageHasher>();

            var testMessage = new TestMessage()
            {
                TestTitle = "test"
            };
            var descriptor = new RichMessageDescriptor("", "TestMessage");
            var hashes     = new List <string>();

            for (int i = 0; i < 10; i++)
            {
                var hash = await hasher.HashAsync(descriptor, testMessage);

                hashes.Add(hash);
            }
            hashes.Distinct().ShouldHaveSingleItem();

            hashes.Clear();

            for (int i = 0; i < 10; i++)
            {
                var hash = await hasher.HashAsync(descriptor, testMessage, HashAlgorithmName.MD5);

                hashes.Add(hash);
            }
            hashes.Distinct().ShouldHaveSingleItem();
            hashes.Clear();

            for (int i = 0; i < 10; i++)
            {
                var hash = await hasher.HashAsync(descriptor, testMessage, HashAlgorithmName.SHA512);

                hashes.Add(hash);
            }
            hashes.Distinct().ShouldHaveSingleItem();
            hashes.Clear();
        }
Exemplo n.º 8
0
        public void MessageScopeTest()
        {
            //Arrange
            var message = new TestMessage
            {
                TestTitle = "TEST"
            };
            var descriptor = new RichMessageDescriptor("", nameof(TestMessage).ToLowerInvariant());

            descriptor.Headers.Add(SessionConsts.CityId, TestConsts.CITY_ID);

            descriptor.Headers.Add(SessionConsts.CompanyId, TestConsts.COMPANY_ID);
            descriptor.Headers.Add(SessionConsts.CompanyName, UrlEncode(TestConsts.COMPANY_NAME));

            descriptor.Headers.Add(SessionConsts.StoreId, TestConsts.STORE_ID);
            descriptor.Headers.Add(SessionConsts.StoreName, UrlEncode(TestConsts.STORE_NAME));

            descriptor.Headers.Add(SessionConsts.BrokerId, TestConsts.BROKER_ID);
            descriptor.Headers.Add(SessionConsts.BrokerName, UrlEncode(TestConsts.BROKER_NAME));

            descriptor.Headers.Add(SessionConsts.OrganizationId, TestConsts.ORGANIZATION_ID);
            descriptor.Headers.Add(SessionConsts.OrganizationName, UrlEncode(TestConsts.ORGANIZATION_NAME));

            descriptor.Headers.Add(SessionConsts.CurrentUserId, TestConsts.CURRENT_USER_ID);
            descriptor.Headers.Add(SessionConsts.CurrentUserName, UrlEncode(TestConsts.CURRENT_USER_NAME));

            //Action
            var scope = _messageScopeCreator.CreateScope(message, descriptor);

            var coreSessionProvider = (ICoreSessionProvider)scope.Resolve(typeof(ICoreSessionProvider));

            //Assert
            coreSessionProvider.ShouldNotBeNull();

            Resolve <ICoreSessionProvider>().ShouldNotBeOfType <MessageCoreSessionProvider>();

            coreSessionProvider.ShouldBeOfType <MessageCoreSessionProvider>();
            (coreSessionProvider as MessageCoreSessionProvider).MessageDescriptor.ShouldBe(descriptor);

            var session = coreSessionProvider.Session;

            session.City.ShouldNotBeNull();
            session.City.Id.ShouldBe(TestConsts.CITY_ID);

            session.Company.ShouldNotBeNull();
            session.Company.Id.ShouldNotBeNull();
            session.Company.Id.Value.ShouldBe(Guid.Parse(TestConsts.COMPANY_ID));
            session.Company.Name.ShouldNotBeNullOrWhiteSpace();
            session.Company.Name.ShouldBe(TestConsts.COMPANY_NAME);

            session.Store.ShouldNotBeNull();
            session.Store.Id.ShouldNotBeNull();
            session.Store.Id.Value.ShouldBe(Guid.Parse(TestConsts.STORE_ID));
            session.Store.Name.ShouldNotBeNullOrWhiteSpace();
            session.Store.Name.ShouldBe(TestConsts.STORE_NAME);

            session.Broker.ShouldNotBeNull();
            session.Broker.Id.ShouldNotBeNullOrWhiteSpace();
            session.Broker.Id.ShouldBe(TestConsts.BROKER_ID);
            session.Broker.Name.ShouldNotBeNullOrWhiteSpace();
            session.Broker.Name.ShouldBe(TestConsts.BROKER_NAME);

            session.Organization.ShouldNotBeNull();
            session.Organization.Id.ShouldNotBeNullOrWhiteSpace();
            session.Organization.Id.ShouldBe(TestConsts.ORGANIZATION_ID);
            session.Organization.Name.ShouldNotBeNullOrWhiteSpace();
            session.Organization.Name.ShouldBe(TestConsts.ORGANIZATION_NAME);

            session.User.ShouldNotBeNull();
            session.User.Id.ShouldNotBeNullOrWhiteSpace();
            session.User.Id.ShouldBe(TestConsts.CURRENT_USER_ID);
            session.User.Name.ShouldNotBeNullOrWhiteSpace();
            session.User.Name.ShouldBe(TestConsts.CURRENT_USER_NAME);

            scope.Dispose();

            Resolve <ICoreSessionProvider>().ShouldNotBeOfType <MessageCoreSessionProvider>();

            try
            {
                scope.Resolve(typeof(ICoreSessionProvider));
            }
            catch (ObjectDisposedException)
            {
                return;
            }

            throw new InvalidOperationException("Code must not reach here");
        }