public async Task <IActionResult> AddDomain([FromBody] DomainForCreation domain) { string email = User.GetEmail(); ValidationResult validationResult = _domainForCreationValidator.Validate(domain); if (!validationResult.IsValid) { _log.LogWarning($"User {email} made bad request: {validationResult.GetErrorString()}"); return(BadRequest(new ErrorResponse(validationResult.GetErrorString()))); } if (!User.IsAdmin()) { ValidationResult publicDomainValidationResult = _publicDomainForCreationValidator.Validate(new PublicDomainForCreation { Name = domain.Name }); if (!publicDomainValidationResult.IsValid) { _log.LogWarning($"User {email} made bad request: {publicDomainValidationResult.GetErrorString()}"); return(BadRequest(new ErrorResponse(publicDomainValidationResult.GetErrorString()))); } } OrganisationalDomain organisationalDomain = await _organisationalDomainProvider.GetOrganisationalDomain(domain.Name); int?userId = User.GetId(); if (!userId.HasValue) { return(BadRequest(new ErrorResponse("Unable to retrieve user id"))); } if (!organisationalDomain.IsOrgDomain && !organisationalDomain.IsTld) { _log.LogDebug( $"{domain.Name} is not an organisational domain adding {organisationalDomain.OrgDomain}"); Domain.Domain newOrgDomain = await _domainDao.CreateDomain(organisationalDomain.OrgDomain, userId.Value); await _publisher.Publish(new DomainCreated(newOrgDomain.Name, email, DateTime.UtcNow), _config.PublisherConnectionString); } Domain.Domain newDomain = await _domainDao.CreateDomain(domain.Name, userId.Value); await _publisher.Publish(new DomainCreated(domain.Name, email, DateTime.UtcNow), _config.PublisherConnectionString); return(CreatedAtRoute(nameof(GetDomain), new { id = newDomain.Id }, newDomain)); }
public async Task InvalidDomainBadRequestResponse() { SetSid("1", "*****@*****.**", _domainContoller); DomainForCreation request = new DomainForCreation { Name = "abcgovuk" }; var validationResult = new ValidationResult(new List <ValidationFailure> { new ValidationFailure(string.Empty, string.Empty) }); A.CallTo(() => _domainForCreationValidator.Validate(request)).Returns(validationResult); IActionResult result = await _domainContoller.AddDomain(request); Assert.That(result, Is.TypeOf <BadRequestObjectResult>()); A.CallTo(() => _domainDao.CreateDomain(A <string> ._, A <int> ._)).MustNotHaveHappened(); A.CallTo(() => _publisher.Publish(A <string> ._, A <string> ._)).MustNotHaveHappened(); A.CallTo(() => _publisherConfig.PublisherConnectionString).MustNotHaveHappened(); }