public void RecordTagsMustExist() { AttachmentInfo attachmentInfo = CreateAttachmentInfo(AggregateReportDeserialiserTestsResource.NoRecordTags); EmailMetadata emailMetadata = CreateEmailMetadata(); Assert.Throws <ArgumentException>(() => _aggregateReportDeserialiser.Deserialise(attachmentInfo, emailMetadata)); }
public void PolicyPublishedTagsMustNotOccurMoreThanOnce() { AttachmentInfo attachmentInfo = CreateAttachmentInfo(AggregateReportDeserialiserTestsResource.MultiplePolicyPublishedTags); EmailMetadata emailMetadata = CreateEmailMetadata(); Assert.Throws <InvalidOperationException>(() => _aggregateReportDeserialiser.Deserialise(attachmentInfo, emailMetadata)); }
public AggregateReportInfo Deserialise(AttachmentInfo attachment, EmailMetadata emailMetadata) { using (Stream stream = attachment.GetStream()) { using (StreamReader streamReader = new StreamReader(stream)) { using (XmlReader reader = XmlReader.Create(streamReader)) { XDocument document = XDocument.Load(reader); XElement feedback = document.Root; if (document.Root.Name != "feedback") { throw new ArgumentException("Root of aggregate report must be feedback."); } ReportMetadata reportMetadata = _reportMetadataDeserialiser.Deserialise(feedback.Single("report_metadata")); PolicyPublished policyPublished = _policyPublishedDeserialiser.Deserialise(feedback.Single("policy_published")); IEnumerable <XElement> recordElements = feedback.Where("record").ToList(); if (!recordElements.Any()) { throw new ArgumentException("Aggregate report must contain at least 1 record."); } Record[] records = _recordDeserialiser.Deserialise(recordElements); Domain.Dmarc.AggregateReport aggregateReport = new Domain.Dmarc.AggregateReport(reportMetadata, policyPublished, records); return(new AggregateReportInfo(aggregateReport, emailMetadata, attachment.AttachmentMetadata)); } } } }
public void TagsMustBeDirectDecendants() { AttachmentInfo attachmentInfo = CreateAttachmentInfo(AggregateReportDeserialiserTestsResource.TagsNotDirectDescendants); EmailMetadata emailMetadata = CreateEmailMetadata(); Assert.Throws <InvalidOperationException>(() => _aggregateReportDeserialiser.Deserialise(attachmentInfo, emailMetadata)); }
public void RootMustBeFeedback() { AttachmentInfo attachmentInfo = CreateAttachmentInfo(AggregateReportDeserialiserTestsResource.RootNotFeedback); EmailMetadata emailMetadata = CreateEmailMetadata(); Assert.Throws <ArgumentException>(() => _aggregateReportDeserialiser.Deserialise(attachmentInfo, emailMetadata)); }
public AggregateReportInfo(Dmarc.AggregateReport aggregateReport, EmailMetadata emailMetadata, AttachmentMetadata attachmentMetadata) : base(emailMetadata) { AggregateReport = aggregateReport; AttachmentMetadata = attachmentMetadata; }
public AggregateReportInfo(Dmarc.AggregateReport aggregateReport, EmailMetadata emailMetadata, AttachmentInfo attachmentInfo) { AggregateReport = aggregateReport; AttachmentInfo = attachmentInfo; EmailMetadata = emailMetadata; }
public UserService(SignInManager <CBAUser> signInManager, UserManager <CBAUser> userManager, RoleManager <CBARole> roleManager, EmailMetadata emailMetadata, ApplicationDbContext context) { _signInManager = signInManager; _roleManager = roleManager; _userManager = userManager; _emailMetadata = emailMetadata; _context = context; }
public void CorrectlyFormedReportNoDeclarationGeneratesAggregateReportInfo() { AttachmentInfo attachmentInfo = CreateAttachmentInfo(AggregateReportDeserialiserTestsResource.CorrectlyFormedReportNoDeclaration); EmailMetadata emailMetadata = CreateEmailMetadata(); AggregateReportInfo aggregateReportInfo = _aggregateReportDeserialiser.Deserialise(attachmentInfo, emailMetadata); Assert.That(aggregateReportInfo, Is.Not.Null); }
public void RecordTagsCanOccurrMultipleTimes() { AttachmentInfo attachmentInfo = CreateAttachmentInfo(AggregateReportDeserialiserTestsResource.CorrectlyFormedReportNoDeclaration); EmailMetadata emailMetadata = CreateEmailMetadata(); AggregateReportInfo aggregateReportInfo = _aggregateReportDeserialiser.Deserialise(attachmentInfo, emailMetadata); Assert.That(aggregateReportInfo, Is.Not.Null); }
private AggregateReportInfo CreateAggregateReportInfo() { Dmarc.AggregateReport.Parser.Lambda.Domain.Dmarc.AggregateReport aggregateReport = new Dmarc.AggregateReport.Parser.Lambda.Domain.Dmarc.AggregateReport { Records = new Record[0] }; EmailMetadata emailMetadata = new EmailMetadata("", "", 1); AttachmentMetadata attachmentMetadata = new AttachmentMetadata(""); return(new AggregateReportInfo(aggregateReport, emailMetadata, attachmentMetadata)); }
private EmailMessage Map(MercuryRequest <ExpandoObject> request, EmailMetadata metadata, string body) { return(new EmailMessage { From = metadata.From ?? settings.From, Tos = request.Tos, Ccs = request.Ccs, Bccs = request.Bccs, Subject = metadata.Subject, Body = body }); }
private AggregateReportInfo CreateReportInfo(DkimAuthResult[] dkimAuthResults = null, SpfAuthResult[] spfAuthResults = null) { Domain.Dmarc.AggregateReport aggregateReport = new Domain.Dmarc.AggregateReport(1.0, new ReportMetadata("org", "*****@*****.**", "extra", "reportid", new DateRange(1, 2), new [] { "error" }), new PolicyPublished("abc.com", Alignment.r, Alignment.r, Disposition.none, Disposition.none, 0, "fo"), new Record[] { new Record(new Row("source", 1, new PolicyEvaluated(Disposition.none, DmarcResult.pass, DmarcResult.pass, new PolicyOverrideReason[0])), new Identifier("envelopeTo", "envelopeFrom", "headerFrom"), new AuthResult(dkimAuthResults ?? new DkimAuthResult[] {}, spfAuthResults ?? new SpfAuthResult[] {})) }); EmailMetadata emailMetadata = new EmailMetadata("org", "filename", 10); AttachmentInfo attachmentInfo = new AttachmentInfo(new AttachmentMetadata("filename"), Stream.Null); return(new AggregateReportInfo(aggregateReport, emailMetadata, attachmentInfo)); }
private static AggregateReportInfo Create(string requestId = "RequestId", string orginalUri = "OriginalUri", string emailFilename = "EmailFilename", long filesize = 1, string attachmentFilename = "AttachmentFilename") { AggregateReportDomain aggregateReport = new AggregateReportDomain { ReportMetadata = new ReportMetadata { Range = new DateRange() }, PolicyPublished = new PolicyPublished(), Records = new[] { new Record { Row = new Row { PolicyEvaluated = new PolicyEvaluated { Reasons = new [] { new PolicyOverrideReason(), } } }, Identifiers = new Identifier(), AuthResults = new AuthResult { Dkim = new [] { new DkimAuthResult() }, Spf = new [] { new SpfAuthResult() } } } } }; EmailMetadata emailMetadata = new EmailMetadata(requestId, string.Empty, orginalUri, emailFilename, filesize); AttachmentMetadata attachmentMetadata = new AttachmentMetadata(attachmentFilename); return(new AggregateReportInfo(aggregateReport, emailMetadata, attachmentMetadata)); }
public AggregateReportInfo Deserialise(AttachmentInfo attachment, EmailMetadata emailMetadata) { attachment.AttachmentStream.Seek(0, SeekOrigin.Begin); using (StreamReader streamReader = new StreamReader(attachment.AttachmentStream, Encoding.UTF8, true, 1024, true)) { using (XmlReader reader = XmlReader.Create(streamReader)) { XDocument document = XDocument.Load(reader); XElement feedback = document.Root; if (document.Root != null && document.Root.Name != "feedback") { throw new ArgumentException("Root of aggregate report must be feedback."); } XElement versionElement = feedback.SingleOrDefault("version"); double? version = double.TryParse(versionElement?.Value, out var candidateVersion) ? candidateVersion : (double?)null; ReportMetadata reportMetadata = _reportMetadataDeserialiser.Deserialise(feedback.Single("report_metadata")); PolicyPublished policyPublished = _policyPublishedDeserialiser.Deserialise(feedback.Single("policy_published")); IEnumerable <XElement> recordElements = feedback.Where("record").ToList(); if (!recordElements.Any()) { throw new ArgumentException("Aggregate report must contain at least 1 record."); } Record[] records = _recordDeserialiser.Deserialise(recordElements); Domain.Dmarc.AggregateReport aggregateReport = new Domain.Dmarc.AggregateReport(version, reportMetadata, policyPublished, records); return(new AggregateReportInfo(aggregateReport, emailMetadata, attachment)); } } }
private async Task SendAsync(EmailRequest request, EmailMetadata metadata, string body) { var msg = Map(request, metadata, body); await emailer.SendAsync(msg); }
protected ReportInfo(EmailMetadata emailMetadata) { EmailMetadata = emailMetadata; }