public async Task should_fail_when_endpoint_not_found() { var endpoint = new Mongo.Infrastructure.Entities.ServiceEndpoint() { Id = Guid.NewGuid(), Address = "ipsum", Protocol = "dolor", Active = false }; var service = new Mongo.Infrastructure.Entities.Service() { Id = Guid.NewGuid(), Active = false, Name = "lorem", Endpoints = new[] { endpoint } }; var mockRepo = RepositoryUtils.MockRepository <Mongo.Infrastructure.Entities.Service>(service); var mockDbContext = new Mock <IDbContext>(); mockDbContext.Setup(db => db.Services).Returns(mockRepo.Object); var sut = new RemoveEndpointValidator(mockDbContext.Object); var command = new RemoveEndpoint(service.Id, Guid.NewGuid()); var result = await sut.ValidateAsync(command); result.Success.Should().BeFalse(); result.Errors.Any(e => e.Context == "endpoint" && e.Message.Contains(command.EndpointId.ToString())).Should().BeTrue(); }
public async Task <IActionResult> DeleteEndpoint([FromBody] RemoveEndpoint model) { if (null == model) { throw new ArgumentNullException(nameof(model)); } await _servicesProxy.DeleteEndpoint(model); return(this.Ok()); }
public async Task should_throw_when_service_not_found() { var command = new RemoveEndpoint(Guid.NewGuid(), Guid.NewGuid()); var mockRepo = RepositoryUtils.MockRepository <Mongo.Infrastructure.Entities.Service>(); var mockDbContext = new Mock <IDbContext>(); mockDbContext.Setup(db => db.Services).Returns(mockRepo.Object); var validator = new NullValidator <RemoveEndpoint>(); var sut = new RemoveEndpointHandler(mockDbContext.Object, validator); await Assert.ThrowsAsync <NullReferenceException>(() => sut.Handle(command)); }
public async Task should_not_remove_endpoints_if_none_found() { var endpoint1 = new Mongo.Infrastructure.Entities.ServiceEndpoint() { Id = Guid.NewGuid(), Active = false, Address = "dolor", Protocol = "ipsum" }; var endpoint2 = new Mongo.Infrastructure.Entities.ServiceEndpoint() { Id = Guid.NewGuid(), Active = false, Address = "dolor", Protocol = "amet" }; var service = new Mongo.Infrastructure.Entities.Service() { Id = Guid.NewGuid(), Name = "lorem", Active = false, Endpoints = new[] { endpoint1, endpoint2 } }; var mockRepo = RepositoryUtils.MockRepository(service); var mockDbContext = new Mock <IDbContext>(); mockDbContext.Setup(db => db.Services).Returns(mockRepo.Object); var validator = new NullValidator <RemoveEndpoint>(); var sut = new RemoveEndpointHandler(mockDbContext.Object, validator); var command = new RemoveEndpoint(service.Id, Guid.NewGuid()); await sut.Handle(command); mockRepo.Verify(m => m.UpsertOneAsync(It.IsAny <Expression <Func <Mongo.Infrastructure.Entities.Service, bool> > >(), It.Is <Mongo.Infrastructure.Entities.Service>(r => r.Id == service.Id && null != r.Endpoints && 2 == r.Endpoints.Count()) ), Times.Once()); }
public async Task DeleteEndpoint(RemoveEndpoint dto) { if (null == dto) { throw new ArgumentNullException(nameof(dto)); } var request = new RequestData("/services/endpoint/", dto); var response = await _servicesApiClient.DeleteAsync(request); if (null == response) { throw new System.Net.Http.HttpRequestException($"unable to perform DELETE request to '{request.Url}'"); } await response.AssertSuccessfulAsync(); }
public async Task should_throw_when_service_has_null_endpoints() { var command = new RemoveEndpoint(Guid.NewGuid(), Guid.NewGuid()); var service = new Mongo.Infrastructure.Entities.Service() { Id = command.ServiceId, Active = false, Endpoints = null }; var mockRepo = RepositoryUtils.MockRepository(service); var mockDbContext = new Mock <IDbContext>(); mockDbContext.Setup(db => db.Services).Returns(mockRepo.Object); var validator = new NullValidator <RemoveEndpoint>(); var sut = new RemoveEndpointHandler(mockDbContext.Object, validator); await Assert.ThrowsAsync <ArgumentNullException>(() => sut.Handle(command)); }
public async Task should_remove_endpoint() { var command = new RemoveEndpoint(Guid.NewGuid(), Guid.NewGuid()); var service = new Mongo.Infrastructure.Entities.Service() { Id = command.ServiceId, Active = false, Endpoints = new[] { new Mongo.Infrastructure.Entities.ServiceEndpoint() { Id = command.EndpointId, Active = false, } } }; var mockRepo = RepositoryUtils.MockRepository(service); var mockDbContext = new Mock <IDbContext>(); mockDbContext.Setup(db => db.Services).Returns(mockRepo.Object); var validator = new NullValidator <RemoveEndpoint>(); var sut = new RemoveEndpointHandler(mockDbContext.Object, validator); await sut.Handle(command); mockRepo.Verify(m => m.UpsertOneAsync(It.IsAny <Expression <Func <Mongo.Infrastructure.Entities.Service, bool> > >(), It.Is <Mongo.Infrastructure.Entities.Service>(r => r.Id == command.ServiceId && r.Active == false && null != r.Endpoints && !r.Endpoints.Any(e => e.Id == command.EndpointId)) ), Times.Once()); }