public async Task DownloadMeetingTests() { this.EncryptionService = new Mock <IEncryptionService>(); var notificationId = Guid.NewGuid().ToString(); var notifications = new List <MeetingNotificationItemEntity> { new MeetingNotificationItemEntity { NotificationId = notificationId } }; var blobEmailData = new BlobEmailData { NotificationId = notificationId, Body = "Test Body", Attachments = new List <NotificationAttachmentEntity> { new NotificationAttachmentEntity { FileBase64 = "VEhpcyBpcyBhIHRlc3QgYXR0YWNobWVudCBmaWxlLg==", FileName = "Test.txt", IsInline = true } }, }; _ = this.MockedCloudStorageClient.Setup(x => x.DownloadBlobAsync($"TestApp/{ApplicationConstants.MeetingNotificationsFolderName}/{notificationId}")).ReturnsAsync("Test Encrypted String"); _ = this.EncryptionService.Setup(x => x.Decrypt(It.Is <string>(x => x == "Test Encrypted String"))).Returns(JsonConvert.SerializeObject(blobEmailData)); var repo = new MailAttachmentRepository(this.Logger, this.MockedCloudStorageClient.Object, this.EncryptionService.Object); var updatednotifications = await repo.DownloadMeetingInvite(notifications, "TestApp").ConfigureAwait(false); Assert.IsTrue(updatednotifications.Count == 1); Assert.IsTrue(updatednotifications.First().Body.Equals("Test Body")); Assert.IsTrue(updatednotifications.First().Attachments.Any(x => x.FileBase64.Equals("VEhpcyBpcyBhIHRlc3QgYXR0YWNobWVudCBmaWxlLg=="))); Assert.IsTrue(updatednotifications.First().Attachments.Any(x => x.FileName.Equals("Test.txt"))); Assert.IsTrue(updatednotifications.First().Attachments.Any(x => x.IsInline)); this.MockedCloudStorageClient.Verify(x => x.DownloadBlobAsync($"TestApp/{ApplicationConstants.MeetingNotificationsFolderName}/{notificationId}"), Times.Once); this.EncryptionService.Verify(x => x.Decrypt(It.Is <string>(x => x == "Test Encrypted String")), Times.Once); }
/// <inheritdoc/> public async Task <IList <MeetingNotificationItemEntity> > UploadMeetingInvite(IList <MeetingNotificationItemEntity> meetingNotificationItemEntities, string applicationName) { var traceProps = new Dictionary <string, string>(); traceProps[AIConstants.Application] = applicationName; traceProps[AIConstants.MeetingNotificationCount] = meetingNotificationItemEntities?.Count.ToString(CultureInfo.InvariantCulture); this.logger.TraceInformation($"Started {nameof(this.UploadMeetingInvite)} method of {nameof(MailAttachmentRepository)}.", traceProps); IList <MeetingNotificationItemEntity> notificationEntities = new List <MeetingNotificationItemEntity>(); if (!(meetingNotificationItemEntities is null) && meetingNotificationItemEntities.Count > 0) { foreach (var item in meetingNotificationItemEntities) { var notificationEntity = item; var blobEmailData = new BlobEmailData { NotificationId = item.NotificationId, Body = item.Body, Attachments = item.Attachments, TemplateData = item.TemplateData, }; var blobpath = this.GetBlobPath(applicationName, item.NotificationId, ApplicationConstants.MeetingNotificationsFolderName); var uloadedblobpath = await this.cloudStorageClient.UploadBlobAsync(blobpath, this.encryptionService.Encrypt(JsonConvert.SerializeObject(blobEmailData))).ConfigureAwait(false); notificationEntities.Add(item); } } this.logger.TraceInformation($"Finished {nameof(this.UploadEmail)} method of {nameof(MailAttachmentRepository)}.", traceProps); return(notificationEntities); }
/// <inheritdoc/> public async Task <IList <EmailNotificationItemEntity> > UploadEmail(IList <EmailNotificationItemEntity> emailNotificationItemEntities, string notificationType, string applicationName) { this.logger.TraceInformation($"Started {nameof(this.UploadEmail)} method of {nameof(MailAttachmentRepository)}."); IList <EmailNotificationItemEntity> notificationEntities = new List <EmailNotificationItemEntity>(); if (!(emailNotificationItemEntities is null) && emailNotificationItemEntities.Count > 0) { foreach (var item in emailNotificationItemEntities) { var notificationEntity = item; var blobEmailData = new BlobEmailData { NotificationId = item.NotificationId, Body = item.Body, Attachments = item.Attachments, TemplateData = item.TemplateData, }; var blobpath = this.GetBlobPath(applicationName, item.NotificationId, Constants.EmailNotificationsFolderName); var uloadedblobpath = await this.cloudStorageClient.UploadBlobAsync(blobpath, this.encryptionService.Encrypt(JsonConvert.SerializeObject(blobEmailData))).ConfigureAwait(false); notificationEntities.Add(notificationEntity); } } this.logger.TraceInformation($"Finished {nameof(this.UploadEmail)} method of {nameof(MailAttachmentRepository)}."); return(notificationEntities); }