public void Test(string value, PolicyType policyType, int errorCount)
        {
            SubDomainPolicy tag = (SubDomainPolicy)_parser.Parse(string.Empty, value);

            Assert.That(tag.PolicyType, Is.EqualTo(policyType));
            Assert.That(tag.ErrorCount, Is.EqualTo(errorCount));
        }
Ejemplo n.º 2
0
        public bool IsErrored(DmarcRecord record, out Error error)
        {
            SubDomainPolicy subDomainPolicy = record.Tags.OfType<SubDomainPolicy>().FirstOrDefault();
            
            if (record.IsOrgDomain == false && subDomainPolicy != null && !subDomainPolicy.IsImplicit)
            {
                error = new Error(ErrorType.Warning, string.Format(DmarcRulesResource.SubDomainIneffectualErrorMessage, record.Domain));
                return true;
            }

            error = null;
            return false;
        }
        public bool IsErrored(DmarcRecord record, out Error error)
        {
            SubDomainPolicy      subDomainPolicy = record.Tags.OfType <SubDomainPolicy>().FirstOrDefault();
            OrganisationalDomain orgDomain       = _organisationalDomainProvider.GetOrganisationalDomain(record.Domain)
                                                   .GetAwaiter().GetResult();

            if (orgDomain?.IsOrgDomain == false && subDomainPolicy != null && !subDomainPolicy.IsImplicit)
            {
                error = new Error(ErrorType.Warning, string.Format(DmarcRulesResource.SubDomainIneffectualErrorMessage, record.Domain));
                return(true);
            }

            error = null;
            return(false);
        }
        public bool IsErrored(DmarcRecord record, out Error error)
        {
            SubDomainPolicy subDomainPolicy = record.Tags.OfType <SubDomainPolicy>().FirstOrDefault();

            if (IsValid(subDomainPolicy, record.IsOrgDomain))
            {
                error = null;
                return(false);
            }

            string errorMessage = string.Format(DmarcRulesResource.SubdomainPolicyMustBeQuarantineOrRejectErrorMessage,
                                                subDomainPolicy?.PolicyType);

            error = new Error(ErrorType.Warning, errorMessage);
            return(true);
        }
        public Tag Parse(string tag, string value)
        {
            PolicyType policyType;

            if (!value.TryParseExactEnum(out policyType))
            {
                policyType = PolicyType.Unknown;
            }

            SubDomainPolicy policy = new SubDomainPolicy(tag, policyType);

            if (policyType == PolicyType.Unknown)
            {
                string errorMessage = string.Format(DmarcParserResource.InvalidValueErrorMessage, Tag, value);
                policy.AddError(new Error(ErrorType.Error, errorMessage));
            }

            return(policy);
        }
 public bool IsValid(SubDomainPolicy subDomainPolicy, bool isOrgDomain)
 {
     // Don't error on unknown because there will already be a parser error for this
     return(!isOrgDomain || subDomainPolicy == null || subDomainPolicy.PolicyType != PolicyType.None);
 }