public void HandleEnqueueJobCommandEventStoreSavesJob() { // Arrange List <ISchedulerTask> tasks = new List <ISchedulerTask>(); ISchedulerTask task = MockRepository.GenerateMock <ISchedulerTask>(); tasks.Add(task); EnqueueJob command = new EnqueueJob(Guid.NewGuid(), tasks); // Act schedulerJobCommandHandlers.Handle(command); // Assert eventStore.AssertWasCalled(x => x.SaveEvents( Arg <Guid> .Matches(s => s.Equals(command.JobId)), Arg <IEnumerable <Event> > .Matches(s => s.Count() == 1 && ((JobCreated)s.ElementAt(0)).JobId.Equals(command.JobId) && ((JobCreated)s.ElementAt(0)).Tasks.Equals(tasks)), Arg <int> .Matches(s => s == 1) )); }
public IActionResult Post([FromBody] EnqueueJob jobDetails) { this.logger.LogDebug(1001, "Adding new job to the queue."); var newJobUuid = Guid.NewGuid(); var col = this.dbFactory.GetCollection <JobSpec <string> >(CollectionNames.Jobs); var messages = VerifyJobType(jobDetails.JobType); if (messages.Count() > 0) { var details = new ApiResponse <JobCreated>(); details.Messages.AddRange(messages); return(this.BadRequest(details)); } // TODO: Make Job expirary configurable via the settings db. col.InsertOne(new JobSpec <string> { Uuid = newJobUuid.ToString(), Type = jobDetails.JobType, Data = JsonConvert.SerializeObject(jobDetails.Data), Status = JobStatuses.New, ExpireAt = DateTime.Now.AddDays(3) }); // TODO: Make base URL configurable. -- CORPHQ_API_URL var baseUrl = new Uri("/api/v1/job/"); var jobUrl = new Uri(baseUrl, newJobUuid.ToString()); return(this.Created(jobUrl, new ApiResponse <JobCreated> { Result = new JobCreated { Uuid = newJobUuid } })); }
public IActionResult Post([FromBody] EnqueueJob jobDetails) { this.logger.LogDebug(1001, "Adding new job to the queue."); var newJobUuid = Guid.NewGuid(); var col = this.dbFactory.GetCollection <JobSpec <string> >(CollectionNames.Jobs); var messages = VerifyJobType(jobDetails.JobType); if (messages.Count() > 0) { var details = new ApiResponse <JobCreated>(); details.Messages.AddRange(messages); return(this.BadRequest(details)); } // TODO: Make Job expirary configurable via the settings db. col.InsertOne(new JobSpec <string> { Uuid = newJobUuid.ToString(), Type = jobDetails.JobType, Data = JsonConvert.SerializeObject(jobDetails.Data), Status = JobStatuses.New, ExpireAt = DateTime.Now.AddDays(3) }); using (var connection = this.connectionFactory.CreateConfiguredConnection()) using (var channel = connection.CreateModel()) { // TODO: Move channel queue declare to startup. channel.QueueDeclare( queue: "jobs", durable: true, exclusive: false, autoDelete: false, arguments: null); channel.BasicPublish( exchange: string.Empty, routingKey: "jobs", basicProperties: null, body: newJobUuid.ToByteArray()); } // TODO: Make base URL configurable. -- CORPHQ_API_URL var baseUrl = new Uri("http://127.0.0.1:5000/api/v1/job/"); var jobUrl = new Uri(baseUrl, newJobUuid.ToString()); return(this.Created(jobUrl, new ApiResponse <JobCreated> { Result = new JobCreated { Uuid = newJobUuid } })); }
public void CorrectNewJob(EnqueueJob job, int expectedStatus) { // Arrange var mockCollection = new Mock <IMongoCollection <JobSpec <string> > >(); this.dbFactoryMock.Setup(x => x.GetCollection <JobSpec <string> >(CollectionNames.Jobs, null, null)).Returns(mockCollection.Object); // Act var result = (ObjectResult)this.Controller.Post(job); var data = (ApiResponse <JobCreated>)result.Value; // Assert Assert.Equal(expectedStatus, result.StatusCode); }
public void CorrectNewJob(EnqueueJob job, int expectedStatus) { // Arrange var mockCollection = new Mock <IMongoCollection <JobSpec <string> > >(); var mockRabbitConnection = new Mock <IConnection>(); var mockRabbitChannel = new Mock <IModel>(); this.dbFactoryMock.Setup(x => x.GetCollection <JobSpec <string> >(CollectionNames.Jobs, null, null)).Returns(mockCollection.Object); this.connectionFactoryMock.Setup(x => x.CreateConfiguredConnection()).Returns(mockRabbitConnection.Object); mockRabbitConnection.Setup(x => x.CreateModel()).Returns(mockRabbitChannel.Object); // Act var result = (ObjectResult)this.Controller.Post(job); var data = (ApiResponse <JobCreated>)result.Value; // Assert Assert.Equal(expectedStatus, result.StatusCode); if (result.StatusCode < 300) { mockRabbitChannel.Verify(x => x.BasicPublish(string.Empty, "jobs", false, null, It.IsAny <byte[]>())); } }
public void HandleEnqueueJobCommandEventStoreSavesJob() { // Arrange List<ISchedulerTask> tasks = new List<ISchedulerTask>(); ISchedulerTask task = MockRepository.GenerateMock<ISchedulerTask>(); tasks.Add(task); EnqueueJob command = new EnqueueJob(Guid.NewGuid(), tasks); // Act schedulerJobCommandHandlers.Handle(command); // Assert eventStore.AssertWasCalled(x => x.SaveEvents( Arg<Guid>.Matches(s => s.Equals(command.JobId)), Arg<IEnumerable<Event>>.Matches(s => s.Count() == 1 && ((JobCreated)s.ElementAt(0)).JobId.Equals(command.JobId) && ((JobCreated)s.ElementAt(0)).Tasks.Equals(tasks)), Arg<int>.Matches(s => s == 1) )); }