コード例 #1
0
        public async Task Should_consume_submit_order_commands()
        {
            var harness = new InMemoryTestHarness {
                TestTimeout = TimeSpan.FromSeconds(5)
            };
            ConsumerTestHarness <SubmitOrderConsumer> consumer = harness.Consumer <SubmitOrderConsumer>();

            await harness.Start();

            try
            {
                var orderId = NewId.NextGuid();

                await harness.InputQueueSendEndpoint.Send <SubmitOrder>(new
                {
                    OrderId = orderId,
                    InVar.Timestamp,
                    CustomerNumber = "12345"
                });

                consumer.Consumed.Select <SubmitOrder>().Should().NotBeNullOrEmpty();
                harness.Sent.Select <OrderSubmissionAccepted>().Should().BeEmpty(); // because we do not set a RequestId when not using a request client
                harness.Sent.Select <OrderSubmissionRejected>().Should().BeEmpty();
            }
            finally
            {
                await harness.Stop();
            }
        }
コード例 #2
0
        public async Task Should_publish_order_submitted_event()
        {
            var harness = new InMemoryTestHarness();
            ConsumerTestHarness <SubmitOrderConsumer> consumer = harness.Consumer <SubmitOrderConsumer>();

            await harness.Start();

            try
            {
                Guid orderId = NewId.NextGuid();

                await harness.InputQueueSendEndpoint.Send <SubmitOrder>(new
                {
                    OrderId = orderId,
                    InVar.Timestamp,
                    CustomerNumber = "12345"
                });

                harness.Published.Select <OrderSubmitted>().Should().NotBeNullOrEmpty();
            }
            finally
            {
                await harness.Stop();
            }
        }
コード例 #3
0
        public async Task FixtureSetUp()
        {
            _fixture         = new Fixture();
            _repoMock        = new Mock <ISightingRepository <StubReportedSighting> >();
            _protoTranslator = new Mock <IProtocolTranslator>();
            _repertoir       = new Mock <ISightingAnalyzerRepertoire>();
            _routeRegistry   = new Mock <IRouteRegistry>();
            _harness         = new InMemoryTestHarness();
            _consumer        = _harness.Consumer(() => new SightingInvestigationConsumer <StubReportedSighting>(
                                                     _repoMock.Object, _protoTranslator.Object,
                                                     _repertoir.Object, _routeRegistry.Object));

            var ev = _fixture.Create <NewSightingReported>();
            var chiefInvestigatorQ = new Uri("mq://chiefInspectorJapp");
            var dbRecord           = new StubReportedSighting();
            var investigateCommand = new InvestigateSighting {
                Origin = "meh"
            };

            _repertoir.Setup(e => e.All()).Returns(new[] { new RiggedAnalyzer(true), new RiggedAnalyzer(false) });

            _routeRegistry.Setup(e => e.For <InvestigateSighting>()).Returns(chiefInvestigatorQ);
            _protoTranslator.Setup(e => e.TranslateToRecord <StubReportedSighting>(It.IsAny <NewSightingReported>(), It.Is <IAnalysisResults[]>(p => p.Length == 2)))
            .Returns(dbRecord);
            _protoTranslator.Setup(e => e.Translate(It.IsAny <NewSightingReported>(), It.Is <IAnalysisResults[]>(p => p.All(x => x.IsSuspicious))))
            .Returns(investigateCommand);
            _repoMock.Setup(e => e.Add(dbRecord)).Returns(dbRecord);

            await _harness.Start();

            await _harness.InputQueueSendEndpoint.Send(ev);
        }
コード例 #4
0
        public async Task Should_keep_em_separated()
        {
            var internalHarness = new InMemoryTestHarness("internal");
            var externalHarness = new InMemoryTestHarness("external");

            ConsumerTestHarness <RelayConsumer> internalConsumer = internalHarness.Consumer(() => new RelayConsumer(externalHarness.Bus));
            ConsumerTestHarness <RelayConsumer> externalConsumer = externalHarness.Consumer(() => new RelayConsumer(internalHarness.Bus));

            ConsumerTestHarness <RealConsumer> realConsumer = internalHarness.Consumer <RealConsumer>();

            await internalHarness.Start();

            try
            {
                await externalHarness.Start();

                try
                {
                    await externalHarness.Bus.Publish(new A());

                    realConsumer.Consumed.Select <A>().Any().ShouldBeTrue();
                }
                finally
                {
                    await externalHarness.Stop();
                }
            }
            finally
            {
                await internalHarness.Stop();
            }
        }
コード例 #5
0
        public async Task Should_respond_with_rejected_if_customer_is_test()
        {
            var harness = new InMemoryTestHarness();
            ConsumerTestHarness <SubmitOrderConsumer> consumer = harness.Consumer <SubmitOrderConsumer>();

            await harness.Start();

            try
            {
                Guid orderId = NewId.NextGuid();

                IRequestClient <SubmitOrder> requestClient = await harness.ConnectRequestClient <SubmitOrder>();

                Response <OrderSubmissionRejected> response = await requestClient.GetResponse <OrderSubmissionRejected>(new
                {
                    OrderId = orderId,
                    InVar.Timestamp,
                    CustomerNumber = "TEST12345"
                });

                // assert
                response.Message.OrderId.Should().Be(orderId);
                consumer.Consumed.Select <SubmitOrder>().Should().NotBeNullOrEmpty();
                harness.Sent.Select <OrderSubmissionRejected>().Should().NotBeNullOrEmpty();
            }
            finally
            {
                await harness.Stop();
            }
        }
コード例 #6
0
 public ValidRdfParseTests(ParseFileTestFixture fixture)
 {
     //_fixture = fixture;
     _blobStorage = fixture.BlobStorage;
     _harness     = new InMemoryTestHarness();
     _consumer    = _harness.Consumer(() => new ParseFileCommandHandler(fixture.BlobStorage));
 }
コード例 #7
0
        public async Task A_consumer_is_being_tested()
        {
            var builder = new ContainerBuilder();

            builder.RegisterType <MyConsumer>();
            builder.RegisterGeneric(typeof(ValidatorFilter <>));

            builder.RegisterType <AValidator>()
            .As <IValidator <A> >();

            builder.RegisterType <ConsumerConfigurationObserver>()
            .SingleInstance();

            _container = builder.Build();

            _observer = _container.Resolve <ConsumerConfigurationObserver>();

            _harness = new InMemoryTestHarness();
            _harness.OnConfigureBus += ConfigureBus;
            _consumer = _harness.Consumer(new ScopeConsumerFactory <MyConsumer>(new AutofacConsumerScopeProvider(new SingleLifetimeScopeProvider(_container),
                                                                                                                 "message", (b, ct) =>
            {
            })));

            await _harness.Start();
        }
コード例 #8
0
        public async Task A_consumer_is_being_tested()
        {
            _harness = new InMemoryTestHarness();
            _fakeConsumerTestHarness = _harness.Consumer(() => new FakeFailureConsumer());

            _personSearchObserver       = new Mock <ILogger <PersonSearchObserver> >();
            _providerProfileOptiosnMock = new Mock <IOptions <ProviderProfileOptions> >();

            _providerProfileOptiosnMock.Setup(x => x.Value).Returns(new ProviderProfileOptions()
            {
                Name = "Adapter Tester"
            });

            await _harness.Start();

            _harness.Bus.ConnectConsumeMessageObserver(new PersonSearchObserver(_providerProfileOptiosnMock.Object,
                                                                                _personSearchObserver.Object));

            await _harness.BusControl.Publish <PersonSearchOrdered>(new PersonSearchOrderedTest()
            {
                SearchRequestId = Guid.NewGuid(),
                TimeStamp       = DateTime.Now,
                Person          = new Person()
                {
                    FirstName   = "",
                    LastName    = "lastName",
                    DateOfBirth = new DateTime(2001, 1, 1)
                }
            });
        }
コード例 #9
0
        public async Task Send_message_to_test_consumer()
        {
            // add migrations by calling
            // dotnet ef migrations add --context auditdbcontext --output-dir Migrations\\Audit audit_init
            DbContextOptionsBuilder <AuditDbContext> optionsBuilder = new DbContextOptionsBuilder <AuditDbContext>().
                                                                      UseSqlServer(LocalDbConnectionStringProvider.GetLocalDbConnectionString(),
                                                                                   m =>
            {
                var executingAssembly = typeof(ContextFactory).GetTypeInfo().Assembly;

                m.MigrationsAssembly(executingAssembly.GetName().Name);
                m.MigrationsHistoryTable("__AuditEFMigrationHistoryAudit");
            });

            _store = new EntityFrameworkAuditStore(optionsBuilder.Options, "EfCoreAudit");
            using (var dbContext = _store.AuditContext)
            {
                await dbContext.Database.MigrateAsync();

                await dbContext.Database.ExecuteSqlRawAsync("TRUNCATE TABLE EfCoreAudit");
            }

            _harness = new InMemoryTestHarness();
            _harness.OnConnectObservers += bus =>
            {
                bus.ConnectSendAuditObservers(_store);
                bus.ConnectConsumeAuditObserver(_store);
            };
            _consumer = _harness.Consumer <TestConsumer>();

            await _harness.Start();

            await _harness.InputQueueSendEndpoint.Send(new A());
        }
コード例 #10
0
        public async Task A_consumer_is_being_tested()
        {
            _loggerMock                = new Mock <ILogger <SearchRequestConsumer> >();
            _providerProfileMock       = new Mock <IOptions <ProviderProfileOptions> >();
            _retryConfigurationMock    = new Mock <IOptions <RetryConfiguration> >();
            _personSearchValidatorMock = new Mock <IValidator <Person> >();

            _personSearchValidatorMock.Setup(x => x.Validate(It.Is <Person>(person => !string.IsNullOrEmpty(person.FirstName))))
            .Returns(new ValidationResult(Enumerable.Empty <ValidationFailure>()));

            _personSearchValidatorMock.Setup(x => x.Validate(It.Is <Person>(person => string.IsNullOrEmpty(person.FirstName))))
            .Returns(new ValidationResult(new List <ValidationFailure>()
            {
                new ValidationFailure("firstName", "firstName is required.")
            }));

            _harness = new InMemoryTestHarness();
            _sut     = _harness.Consumer(() => new SearchRequestConsumer(_personSearchValidatorMock.Object, _providerProfileMock.Object, _retryConfigurationMock.Object, _loggerMock.Object));

            await _harness.Start();

            await _harness.BusControl.Publish <PersonSearchOrdered>(new PersonSearchOrderedTest()
            {
                SearchRequestId = validGuid,
                TimeStamp       = DateTime.Now,
                Person          = new Person()
                {
                    FirstName   = "firstName",
                    LastName    = "lastName",
                    DateOfBirth = new DateTime(2001, 1, 1)
                },
                SearchRequestKey = "SearchRequestKey"
            });

            await _harness.BusControl.Publish <PersonSearchOrdered>(new PersonSearchOrderedTest()
            {
                SearchRequestId = validGuid,
                TimeStamp       = DateTime.Now,
                Person          = new Person()
                {
                    FirstName   = "exception",
                    LastName    = "lastName",
                    DateOfBirth = new DateTime(2001, 1, 1)
                },
                SearchRequestKey = "SearchRequestKey"
            });

            await _harness.BusControl.Publish <PersonSearchOrdered>(new PersonSearchOrderedTest()
            {
                SearchRequestId = inValidGuid,
                TimeStamp       = DateTime.Now,
                Person          = new Person()
                {
                    FirstName   = "",
                    LastName    = "lastName",
                    DateOfBirth = new DateTime(2001, 1, 1)
                },
                SearchRequestKey = "SearchRequestKey"
            });
        }
コード例 #11
0
        public async Task A_consumer_is_being_tested()
        {
            var builder = new ContainerBuilder();

            builder.RegisterType <MyConsumer>();
            builder.RegisterGeneric(typeof(ValidatorFilter <>));

            builder.RegisterType <AValidator>()
            .As <IValidator <A> >();

            builder.RegisterType <ConsumerConfigurationObserver>()
            .SingleInstance();

            _container = builder.Build();

            _observer = _container.Resolve <ConsumerConfigurationObserver>();

            _harness = new InMemoryTestHarness();
            _harness.OnConfigureBus += ConfigureBus;
            _consumer = _harness.Consumer(new AutofacConsumerFactory <MyConsumer>(_container, "message"));

            await _harness.Start();

            Console.WriteLine(_harness.Bus.GetProbeResult().ToJsonString());
        }
コード例 #12
0
        public async Task Should_not_publish_order_submitted_event_when_rejected()
        {
            var harness = new InMemoryTestHarness {
                TestTimeout = TimeSpan.FromSeconds(5)
            };
            ConsumerTestHarness <SubmitOrderConsumer> consumer = harness.Consumer <SubmitOrderConsumer>();

            await harness.Start();

            try
            {
                var orderId = NewId.NextGuid();

                await harness.InputQueueSendEndpoint.Send <SubmitOrder>(new
                {
                    OrderId = orderId,
                    InVar.Timestamp,
                    CustomerNumber = "TEST12345"
                });

                harness.Published.Select <OrderSubmitted>().Should().BeEmpty();
            }
            finally
            {
                await harness.Stop();
            }
        }
コード例 #13
0
ファイル: Batch_Specs.cs プロジェクト: orlando722/MassTransit
        public async Task A_consumer_is_being_tested()
        {
            _harness       = new InMemoryTestHarness();
            _batchConsumer = new TestBatchConsumer(_harness.GetTask <Batch <PingMessage> >());
            _consumer      = _harness.Consumer(() => _batchConsumer, c => c.Options <BatchOptions>(o => o.SetMessageLimit(2)));

            await _harness.Start();
        }
 public async Task SetUp()
 {
     _harness = new InMemoryTestHarness {
         TestTimeout = TimeSpan.FromSeconds(5)
     };
     _consumer = _harness.Consumer <SubmitOrderConsumer>();
     await _harness.Start();
 }
コード例 #15
0
        public async Task A_consumer_is_being_tested()
        {
            _harness  = new InMemoryTestHarness();
            _consumer = _harness.Consumer <TestConsumer>();

            await _harness.Start();

            await _harness.InputQueueSendEndpoint.Send(new A(), context => context.ResponseAddress = _harness.BusAddress);
        }
コード例 #16
0
ファイル: ValidCifParseTests.cs プロジェクト: xlgwr/osdr
        public ValidCifParseTests(ParseFileTestFixture fixture)
        {
            _blobStorage = fixture.BlobStorage;
            var settings = ConfigurationManager.AppSettings.TestHarnessSettings();

            _harness             = new InMemoryTestHarness();
            _harness.TestTimeout = TimeSpan.FromSeconds(settings.Timeout);
            _consumer            = _harness.Consumer(() => new ParseFileCommandHandler(fixture.BlobStorage));
        }
コード例 #17
0
        public async Task A_consumer_is_being_tested()
        {
            _harness  = new InMemoryTestHarness();
            _consumer = _harness.Consumer <TestConsumer>();

            await _harness.Start();

            await _harness.InputQueueSendEndpoint.Send(new A());
        }
コード例 #18
0
        public void SetUp()
        {
            userJwt = "Example_jwt";

            harness           = new InMemoryTestHarness();
            jwtValidationMock = new Mock <ITokenValidator>();

            consumerTestHarness = harness.Consumer(() => new CheckTokenConsumer(jwtValidationMock.Object));
        }
コード例 #19
0
ファイル: FileTests.cs プロジェクト: xlgwr/osdr
        public FileTests(IndexingFixture indexingFixture)
        {
            _fileId     = Guid.NewGuid();
            index       = string.Empty;
            type        = string.Empty;
            doc         = null;
            docAsUpsert = null;
            string _someField = Guid.NewGuid().ToString();
            string _someValue = Guid.NewGuid().ToString();

            _fakeIndex = new List <IIndexRequest <dynamic> >();
            _mongoDb   = indexingFixture.MongoDb;
            var files = _mongoDb.GetCollection <BsonDocument>("Files");

            files.InsertOne(
                new BsonDocument("_id", _fileId)
                .Add("Name", "Processed.mol")
                .Add("Status", "Processed")
                .Add(_someField, _someValue));

            var list = new List <BsonDocument>();

            for (int i = 0; i < 10; i++)
            {
                list.Add(new BsonDocument("_id", Guid.NewGuid()).Add("Name", i.ToString()));
            }

            files.InsertMany(list);
            _file = _mongoDb.GetCollection <dynamic>("Files").Find(new BsonDocument("_id", _fileId)).First();
            ((IDictionary <string, object>)_file).Remove("_id");
            ((IDictionary <string, object>)_file).Add("id", _fileId);

            _elasticClientMock = new Mock <IElasticClient>();
            _elasticClientMock
            .Setup(m => m.IndexAsync <object>(It.IsAny <IIndexRequest>(), null, default(CancellationToken)))
            .Returns(Task.FromResult(new Mock <IIndexResponse>().Object))
            .Callback <IIndexRequest <object>, Func <IndexDescriptor <object>, IIndexRequest>, CancellationToken>((a, s, c) => {
                _fakeIndex.Add(a);
                index = a.Index.Name;
                type  = a.Type.Name;
            }).Verifiable();

            _elasticClientMock.Setup(m => m.UpdateAsync <object, object>(It.IsAny <IUpdateRequest <object, object> >(), default(CancellationToken)))
            .Returns(Task.FromResult(new Mock <IUpdateResponse <object> >().Object))
            .Callback <IUpdateRequest <object, object>, CancellationToken>((a, c) =>
            {
                index       = a.Index.Name;
                type        = a.Type.Name;
                docAsUpsert = a.DocAsUpsert;
                doc         = a.Doc as IDictionary <string, object>;
            }).Verifiable();

            _harness  = new InMemoryTestHarness();
            _consumer = _harness.Consumer(() => new FileEventHandler(_elasticClientMock.Object, _mongoDb, _blobStorage));

            _harness.Start().Wait();
        }
コード例 #20
0
        protected override Task Arrange()
        {
            _observer = new EndpointObserver(Harness);
            Harness.OnConfigureBus += cfg =>
            {
                cfg.ConnectBusObserver(new BusObserver(Harness, _observer));
            };

            Harness.OnConfigureReceiveEndpoint += x => x.ConcurrentMessageLimit = 1;

            _consumer = Harness.Consumer <SubmitOrderConsumer>();

            return(Task.CompletedTask);
        }
コード例 #21
0
        public async Task Send_message_to_test_consumer()
        {
            _harness = new InMemoryTestHarness();
            _harness.OnConfigureInMemoryBus += configurator => configurator.UseMongoDbAuditStore(Database, AuditCollectionName);

            ConsumerTestHarness <TestConsumer> consumer = _harness.Consumer <TestConsumer>();

            await _harness.Start();

            await _harness.InputQueueSendEndpoint.Send(new A());

            IReceivedMessage <A> consumed = consumer.Consumed.Select <A>().First();

            _audit = await GetAuditRecordsForMessage(consumed.Context.MessageId.Value);
        }
コード例 #22
0
        public async Task Send_message_to_test_consumer()
        {
            _harness = new InMemoryTestHarness();
            _harness.OnConfigureInMemoryBus += configurator => configurator.ConnectConsumeAuditObserver(AuditStore);

            ConsumerTestHarness <TestConsumer> consumer = _harness.Consumer <TestConsumer>();

            await _harness.Start();

            await _harness.InputQueueSendEndpoint.Send(new A());

            _consumed = consumer.Consumed.Select <A>().First();
            List <AuditDocument> audit = await GetAuditRecords("Consume");

            _auditDocument = audit.Single();
        }
コード例 #23
0
        public async Task Setup()
        {
            _consumer = Harness.Consumer <CreateCommandConsumer>();

            Harness.OnConfigureBus += configurator =>
            {
                var sec5 = TimeSpan.FromSeconds(5);
                configurator.UseRetry(x => x.Exponential(2, sec5, sec5, sec5));
            };

            await Harness.Start();

            await Harness.Bus.Publish(new CreateCommand
            {
                Name = "Test"
            });
        }
コード例 #24
0
        public async Task Send_message_to_test_consumer()
        {
            _harness = new InMemoryTestHarness();
            _harness.OnConfigureInMemoryBus += configurator =>
            {
                configurator.ConnectConsumeAuditObserver(AuditStore);
                configurator.ConnectSendAuditObservers(AuditStore);
            };

            ConsumerTestHarness <TestConsumer> consumer = _harness.Consumer <TestConsumer>();

            await _harness.Start();

            await _harness.InputQueueSendEndpoint.Send(new A());

            IReceivedMessage <A> consumed = consumer.Consumed.Select <A>().First();

            _audit = await GetAuditRecordsForMessage(consumed.Context.MessageId.Value);
        }
コード例 #25
0
            public async Task Setup()
            {
                _consumer = Harness.Consumer <TestCommandConsumer>();

                Harness.OnConfigureBus += cfg =>
                {
                    cfg.ReceiveEndpoint(Harness.InputQueueName + "_fault", x =>
                    {
                        _faultHandler = Harness.Handled <Fault <FailingCommand> >(x);
                    });
                };

                await Harness.Start();

                await Harness.InputQueueSendEndpoint.Send <FailingCommand>(new { CorrelationId = NewId.NextGuid() }, context =>
                {
                    context.CorrelationId = _correlationId;
                });
            }
コード例 #26
0
ファイル: AuditStore_Specs.cs プロジェクト: zzms/MassTransit
        public async Task Send_message_to_test_consumer()
        {
            _store = new EntityFrameworkAuditStore(
                LocalDbConnectionStringProvider.GetLocalDbConnectionString(), "audit");
            using (var dbContext = _store.AuditContext)
                await dbContext.Database.ExecuteSqlCommandAsync("TRUNCATE TABLE audit");

            _harness = new InMemoryTestHarness();
            _harness.OnConnectObservers += bus =>
            {
                bus.ConnectSendAuditObservers(_store);
                bus.ConnectConsumeAuditObserver(_store);
            };
            _consumer = _harness.Consumer <TestConsumer>();

            await _harness.Start();

            await _harness.InputQueueSendEndpoint.Send(new A());
        }
コード例 #27
0
        public FileEventHandlersTests(TestFixture fixture)
        {
            _fixture = fixture;

            _records   = _fixture.Database.GetCollection <BsonDocument>("Records");
            _files     = _fixture.Database.GetCollection <BsonDocument>("Files");
            _metadatas = _fixture.Database.GetCollection <BsonDocument>("Metadata");

            _testFileId = Guid.NewGuid();
            _files.InsertOne(new
            {
                _id        = _testFileId,
                Properties = new { Fields = new[] { "F1" } }
            }.ToBsonDocument());

            _fileEventsConsumer = _fixture.Harness.Consumer(() => new FileEventHandlers(_fixture.Database));

            _fixture.Harness.Start().Wait();
        }
コード例 #28
0
ファイル: Publish_Specs.cs プロジェクト: youqingz/MassTransit
            public async Task Setup()
            {
                _consumer = Harness.Consumer <TestCommandConsumer>();

                await Harness.Start();

                _publish = new PublishObserver(Harness);
                Harness.Bus.ConnectPublishObserver(_publish);

                _send = new SendObserver(Harness);
                Harness.Bus.ConnectSendObserver(_send);

                _correlationId = NewId.NextGuid();

                await Harness.Bus.Publish <TestEvent>(new
                {
                    CorrelationId = _correlationId
                });
            }
コード例 #29
0
        public async Task Should_be_able_to_create_standalone_consumer_test_in_memory()
        {
            var harness = new InMemoryTestHarness();
            ConsumerTestHarness <MyConsumer> consumer = harness.Consumer <MyConsumer>();

            await harness.Start();

            try
            {
                await harness.InputQueueSendEndpoint.Send(new PingMessage());

                Assert.That(harness.Consumed.Select <PingMessage>().Any(), Is.True);

                Assert.That(consumer.Consumed.Select <PingMessage>().Any(), Is.True);
            }
            finally
            {
                await harness.Stop();
            }
        }
コード例 #30
0
        public async Task A_consumer_is_being_tested()
        {
            _loggerMock            = LoggerUtils.LoggerMock <PersonSearchCompletedConsumer>();
            _searchApiNotifierMock = new Mock <ISearchApiNotifier <PersonSearchAdapterEvent> >();
            _harness   = new InMemoryTestHarness();
            _requestId = Guid.NewGuid();

            var fakePersonSearchStatus = new FakePersonSearchCompleted
            {
                SearchRequestId = _requestId,
                TimeStamp       = DateTime.Now
            };


            _sut = _harness.Consumer(() => new PersonSearchCompletedConsumer(_searchApiNotifierMock.Object, _loggerMock.Object));

            await _harness.Start();

            await _harness.BusControl.Publish <PersonSearchCompleted>(fakePersonSearchStatus);
        }