public void Test(string uri, int errorCount) { DmarcUri dmarcUri = _parser.Parse(uri); Assert.That(dmarcUri.Uri?.ToString(), Is.EqualTo(errorCount == 0 ? uri : null)); Assert.That(dmarcUri.ErrorCount, Is.EqualTo(errorCount)); }
public void EmptyStringProvidedUriReturnedWithError() { DmarcUri dmarcUri = new DmarcUri(null); dmarcUri.AddError(new Error(ErrorType.Error, string.Empty)); A.CallTo(() => _dmarcUriParser.Parse(null)).Returns(dmarcUri); UriTag uriTag = _parser.Parse(string.Empty); Assert.That(uriTag.Uri, Is.SameAs(dmarcUri)); Assert.That(uriTag.MaxReportSize, Is.Null); Assert.That(uriTag.AllErrorCount, Is.EqualTo(1)); A.CallTo(() => _dmarcUriParser.Parse(null)).MustHaveHappened(Repeated.Exactly.Once); A.CallTo(() => _maxReportSizeParser.Parse(SizeString)).MustNotHaveHappened(); }
public DmarcUri Parse(string value) { Uri uri = value != null && Uri.IsWellFormedUriString(value, UriKind.Absolute) ? new Uri(value, UriKind.Absolute) : null; DmarcUri dmarcUri = new DmarcUri(uri); if (uri == null) { string errorMessage = string.Format(DmarcParserResource.InvalidValueErrorMessage, "uri", value); dmarcUri.AddError(new Error(ErrorType.Error, errorMessage)); } return(dmarcUri); }
public void OnlyUriTokenPresentUriWithNullMaxReportSizeReturned() { string value = $"{UriString}"; DmarcUri dmarcUri = new DmarcUri(new Uri(UriString)); A.CallTo(() => _dmarcUriParser.Parse(UriString)).Returns(dmarcUri); UriTag uriTag = _parser.Parse(value); Assert.That(uriTag.Uri, Is.SameAs(dmarcUri)); Assert.That(uriTag.MaxReportSize, Is.Null); Assert.That(uriTag.ErrorCount, Is.Zero); A.CallTo(() => _dmarcUriParser.Parse(UriString)).MustHaveHappened(Repeated.Exactly.Once); A.CallTo(() => _maxReportSizeParser.Parse(SizeString)).MustNotHaveHappened(); }
public UriTag Parse(string uriString) { string[] tokens = uriString?.Split(new[] { Separator }, StringSplitOptions.RemoveEmptyEntries).Select(_ => _.Trim()).ToArray() ?? new string[0]; DmarcUri dmarcUri = _dmarcUriParser.Parse(tokens.ElementAtOrDefault(0)); MaxReportSize maxReportSize = tokens.Length > 1 ? _maxReportSizeParser.Parse(tokens[1]) : null; UriTag uriTag = new UriTag(uriString, dmarcUri, maxReportSize); if (tokens.Length > 2) { string unexpectedValues = string.Join(",", tokens.Skip(2)); string unexpectedValuesErrorMessage = string.Format(DmarcParserResource.UnexpectedValueErrorMessage, unexpectedValues, "uri", unexpectedValues); uriTag.AddError(new Error(ErrorType.Error, unexpectedValuesErrorMessage)); } return(uriTag); }
public void ExtraTokensFoundUriReturnedWithError() { string value = $"{UriString}!{SizeString}!{SizeString}"; DmarcUri dmarcUri = new DmarcUri(new Uri(UriString)); A.CallTo(() => _dmarcUriParser.Parse(UriString)).Returns(dmarcUri); MaxReportSize maxReportSize = new MaxReportSize(50, Unit.M); A.CallTo(() => _maxReportSizeParser.Parse(SizeString)).Returns(maxReportSize); UriTag uriTag = _parser.Parse(value); Assert.That(uriTag.Uri, Is.SameAs(dmarcUri)); Assert.That(uriTag.MaxReportSize, Is.SameAs(maxReportSize)); Assert.That(uriTag.ErrorCount, Is.EqualTo(1)); A.CallTo(() => _dmarcUriParser.Parse(UriString)).MustHaveHappened(Repeated.Exactly.Once); A.CallTo(() => _maxReportSizeParser.Parse(SizeString)).MustHaveHappened(Repeated.Exactly.Once); }
public void UriAndMaxReportSizeTokensPresentFullyFormedUriTagReturned() { string value = $"{UriString}!{SizeString}"; DmarcUri dmarcUri = new DmarcUri(new Uri(UriString)); A.CallTo(() => _dmarcUriParser.Parse(UriString)).Returns(dmarcUri); MaxReportSize maxReportSize = new MaxReportSize(50, Unit.M); A.CallTo(() => _maxReportSizeParser.Parse(SizeString)).Returns(maxReportSize); UriTag uriTag = _parser.Parse(value); Assert.That(uriTag.Uri, Is.SameAs(dmarcUri)); Assert.That(uriTag.MaxReportSize, Is.SameAs(maxReportSize)); Assert.That(uriTag.ErrorCount, Is.Zero); A.CallTo(() => _dmarcUriParser.Parse(UriString)).MustHaveHappened(Repeated.Exactly.Once); A.CallTo(() => _maxReportSizeParser.Parse(SizeString)).MustHaveHappened(Repeated.Exactly.Once); }