Beispiel #1
0
        public async Task NoAllMechanismNoError()
        {
            DomainSpfRecord spfRecord = new DomainSpfRecord("domain1", new SpfRecord(new List <string>(), new Version(string.Empty), new List <Term>()));

            List <Error> errors = await _rule.Evaluate(spfRecord);

            Assert.That(!errors.Any());
        }
        public async Task Test(List <Term> terms, bool isErrorExpected)
        {
            DomainSpfRecord spfRecord = new DomainSpfRecord("domain1", new SpfRecord(new List <string>(), new Version(string.Empty), terms));

            List <Error> errors = await _rule.Evaluate(spfRecord);

            Assert.That(errors.Count, Is.EqualTo(isErrorExpected ? 1 : 0));
        }
        public async Task NoPtrTermNoError()
        {
            Ptr             ptr       = null;
            DomainSpfRecord spfRecord = new DomainSpfRecord("domain1", new SpfRecord(new List <string>(), new Version(string.Empty), new List <Term> {
                ptr
            }));

            List <Error> error = await _rule.Evaluate(spfRecord);

            Assert.That(error.Count, Is.EqualTo(0));
        }
        public async Task NoInfoMessageWhenMxNotPresent()
        {
            Mx mx = null;
            DomainSpfRecord spfRecord = new DomainSpfRecord("domain1", new SpfRecord(new List <string>(), new Version(string.Empty), new List <Term> {
                mx
            }));

            List <Error> error = await _rule.Evaluate(spfRecord);

            Assert.That(error.Count, Is.EqualTo(0));
        }
        public async Task PtrTermError()
        {
            Ptr             ptr       = new Ptr(string.Empty, Qualifier.Fail, new DomainSpec(string.Empty));
            DomainSpfRecord spfRecord = new DomainSpfRecord("domain1", new SpfRecord(new List <string>(), new Version(string.Empty), new List <Term> {
                ptr
            }));

            List <Error> error = await _rule.Evaluate(spfRecord);

            Assert.That(error.Count, Is.EqualTo(1));
            Assert.That(error[0].Message, Is.EqualTo("domain1: Record should not contain “ptr”."));
        }
Beispiel #6
0
        public async Task AllIsNotLastMechanismError()
        {
            Include         include   = new Include(string.Empty, Qualifier.Pass, new DomainSpec(string.Empty));
            All             all       = new All(string.Empty, Qualifier.Fail);
            DomainSpfRecord spfRecord = new DomainSpfRecord("domain", new SpfRecord(new List <string>(), new Version(""), new List <Term> {
                all, include
            }));

            List <Error> errors = await _rule.Evaluate(spfRecord);

            Assert.That(errors.Count, Is.EqualTo(1));
        }
Beispiel #7
0
        public async Task AllIsLastMechanismNoError()
        {
            All             all       = new All(string.Empty, Qualifier.Fail);
            Include         include   = new Include(string.Empty, Qualifier.Pass, new DomainSpec(string.Empty));
            DomainSpfRecord spfRecord = new DomainSpfRecord("domain1", new SpfRecord(new List <string>(), new Version(""), new List <Term> {
                include, all
            }));

            List <Error> errors = await _rule.Evaluate(spfRecord);

            Assert.That(!errors.Any());
        }
        public async Task InfoMessageWhenMxPresent()
        {
            Mx mx = new Mx(string.Empty, (Qualifier)999, null, null);
            DomainSpfRecord spfRecord = new DomainSpfRecord("domain1", new SpfRecord(new List <string>(), new Version(string.Empty), new List <Term> {
                mx
            }));

            List <Error> error = await _rule.Evaluate(spfRecord);

            Assert.That(error.Count, Is.EqualTo(1));
            Assert.AreEqual("The use of the mx mechanism is not recommended", error[0].Message);
            Assert.AreEqual(ErrorType.Info, error[0].ErrorType);
        }
        public async Task TwoRedirectTermsError()
        {
            List <Term> terms = Enumerable.Range(0, 2)
                                .Select(_ => new Redirect(string.Empty, new DomainSpec(string.Empty)))
                                .Cast <Term>()
                                .ToList();

            DomainSpfRecord spfRecord = new DomainSpfRecord("domain1", new SpfRecord(new List <string>(), new Version(string.Empty), terms));

            List <Error> errors = await _rule.Evaluate(spfRecord);

            Assert.That(errors.Count, Is.EqualTo(1));
        }
Beispiel #10
0
        public async Task RedirectWithNoAllShouldHaveNoError()
        {
            Include         include   = new Include(string.Empty, Qualifier.Pass, new DomainSpec(string.Empty));
            All             all       = new All(string.Empty, Qualifier.Fail);
            Redirect        redirect  = new Redirect("ncsc.gov.uk", new DomainSpec("ncsc.gov.uk"));
            DomainSpfRecord spfRecord = new DomainSpfRecord("domain1", new SpfRecord(new List <string>(), new Version(""), new List <Term> {
                all, include, redirect
            }));

            List <Error> errors = await _rule.Evaluate(spfRecord);

            Assert.That(!errors.Any());
        }
        public async Task Test(int occurances)
        {
            List <Term> terms = Enumerable.Range(0, occurances)
                                .Select(_ => new Explanation(string.Empty, new DomainSpec(string.Empty)))
                                .Cast <Term>()
                                .ToList();

            DomainSpfRecord spfRecord = new DomainSpfRecord("domain1", new SpfRecord(new List <string>(), new Version(string.Empty), terms));

            List <Error> errors = await _rule.Evaluate(spfRecord);

            Assert.That(errors.Count, Is.EqualTo(0));
        }
        public async Task Test(bool isAllTerm, bool isRedirectTerm, bool isImplicitAll = false)
        {
            List <Term> terms = new List <Term>
            {
                isAllTerm ? new All(string.Empty, Qualifier.Fail, isImplicitAll) : null,
                isRedirectTerm ? new Redirect(string.Empty, new DomainSpec(string.Empty)) : null
            };

            DomainSpfRecord spfRecord = new DomainSpfRecord("domain1", new SpfRecord(new List <string>(), new Version(string.Empty), terms));

            List <Error> errors = await _rule.Evaluate(spfRecord);

            Assert.That(errors.Count, Is.EqualTo(0));
        }
        public async Task MoreThanOneExpGivesError()
        {
            List <Term> terms = Enumerable.Range(0, 2)
                                .Select(_ => new Explanation(string.Empty, new DomainSpec(string.Empty)))
                                .Cast <Term>()
                                .ToList();

            DomainSpfRecord spfRecord = new DomainSpfRecord("domain1", new SpfRecord(new List <string>(), new Version(string.Empty), terms));

            List <Error> errors = await _rule.Evaluate(spfRecord);

            Assert.That(errors.Count, Is.EqualTo(1));
            Assert.That(errors[0].Message, Is.EqualTo(@"domain1: Record should not contain 'exp' more than once. This record has 2 'exp' terms."));
        }
        public async Task ErrorIfRedirectAndAll()
        {
            List <Term> terms = new List <Term>
            {
                new All(string.Empty, Qualifier.Fail),
                new Redirect(string.Empty, new DomainSpec(string.Empty))
            };

            DomainSpfRecord spfRecord = new DomainSpfRecord("domain1", new SpfRecord(new List <string>(), new Version(string.Empty), terms));

            List <Error> errors = await _rule.Evaluate(spfRecord);

            Assert.That(errors.Count, Is.EqualTo(1));
            Assert.That(errors[0].Message, Is.EqualTo("domain1: Record should not contain both 'redirect' and 'all'."));
        }