Beispiel #1
0
        public async Task <IActionResult> GetDmarcReadModel(DomainRequest domainRequest)
        {
            ValidationResult validationResult = await _domainRequestValidator.ValidateAsync(domainRequest);

            if (!validationResult.IsValid)
            {
                _log.LogWarning($"Bad request: {validationResult.GetErrorString()}");
                return(BadRequest(new ErrorResponse(validationResult.GetErrorString())));
            }

            DmarcReadModel dmarc = await _domainStatusDao.GetDmarcReadModel(domainRequest.Id);

            if (dmarc == null)
            {
                Domain.Domain domain = await _domainStatusDao.GetDomain(domainRequest.Id);

                if (domain == null)
                {
                    return(NotFound(new ErrorResponse($"No domain found for ID {domainRequest.Id}.")));
                }
                return(new ObjectResult(new { records = (List <string>)null, pending = true }));
            }

            if (dmarc.HasDmarc)
            {
                return(new ObjectResult(dmarc.Model));
            }

            OrganisationalDomain organisationalDomain = await _organisationalDomainProvider.GetOrganisationalDomain(dmarc.Domain.Name);

            if (organisationalDomain.IsOrgDomain || organisationalDomain.IsTld)
            {
                return(new ObjectResult(dmarc.Model));
            }

            DmarcReadModel organisationalDomainDmarcRecord =
                await _domainStatusDao.GetDmarcReadModel(organisationalDomain.OrgDomain);

            if (organisationalDomainDmarcRecord == null)
            {
                return(new ObjectResult(dmarc.Model));
            }

            JObject readModel = JObject.Parse(organisationalDomainDmarcRecord.Model);

            readModel.AddFirst(new JProperty("inheritedFrom", JToken.FromObject(organisationalDomainDmarcRecord.Domain,
                                                                                new JsonSerializer {
                ContractResolver = new CamelCasePropertyNamesContractResolver()
            })));

            return(new ObjectResult(readModel.ToString()));
        }
        public async Task GetDmarcReadModelDomainHasDmarcRecordDmarcRecordReturned()
        {
            int    domainId  = 1;
            string readmodel = "{\"readModel\": \"Test\"}";

            DomainRequest request = new DomainRequest {
                Id = domainId
            };

            ValidationResult validationResult = new ValidationResult(new List <ValidationFailure>());

            A.CallTo(() => _domainRequestValidator.ValidateAsync(request, CancellationToken.None))
            .Returns(Task.FromResult(validationResult));

            A.CallTo(() => _domainStatusDao.GetDmarcReadModel(request.Id)).Returns(Task.FromResult(readmodel));

            IActionResult result = await _domainStatusController.GetDmarcReadModel(request);

            ObjectResult objectResult = result as ObjectResult;

            Assert.That(objectResult.Value, Is.TypeOf <string>());

            string dmarcReadModelString = objectResult.Value as string;

            Assert.That(dmarcReadModelString, Is.EqualTo(readmodel));

            A.CallTo(() => _domainStatusDao.GetDmarcReadModel(A <int> ._)).MustHaveHappened(Repeated.Exactly.Once);
            A.CallTo(() => _domainStatusDao.GetDmarcReadModel(A <string> ._)).MustNotHaveHappened();
        }
Beispiel #3
0
        public async Task <IActionResult> GetDmarcReadModel(DomainRequest domainRequest)
        {
            ValidationResult validationResult = await _domainRequestValidator.ValidateAsync(domainRequest);

            if (!validationResult.IsValid)
            {
                _log.LogWarning($"Bad request: {validationResult.GetErrorString()}");
                return(BadRequest(new ErrorResponse(validationResult.GetErrorString())));
            }

            string dmarc = await _domainStatusDao.GetDmarcReadModel(domainRequest.Id);

            if (dmarc == null)
            {
                Domain.Domain domain = await _domainStatusDao.GetDomain(domainRequest.Id);

                if (domain == null)
                {
                    return(NotFound(new ErrorResponse($"No domain found for ID {domainRequest.Id}.")));
                }

                return(new ObjectResult(new { records = (List <string>)null, pending = true }));
            }

            return(new ObjectResult(dmarc));
        }