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”.")); }
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)); }
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)); }
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'.")); }