public void GetMeetingNotificationMessageTest()
        {
            NotificationReportController notificationReportController = new NotificationReportController(this.notificationReportManager.Object, this.logger);
            MeetingInviteMessage         notificationMessage          = new MeetingInviteMessage();

            _ = this.notificationReportManager
                .Setup(notificationReportManager => notificationReportManager.GetMeetingNotificationMessage(It.IsAny <string>(), It.IsAny <string>()))
                .Returns(Task.FromResult(notificationMessage));
            var result = notificationReportController.GetMeetingNotificationMessage(this.applicationName, this.notificationId);

            Assert.AreEqual(result.Status.ToString(), "RanToCompletion");
            this.notificationReportManager.Verify(mgr => mgr.GetMeetingNotificationMessage(It.IsAny <string>(), It.IsAny <string>()), Times.Once);
            Assert.Pass();
        }
Exemplo n.º 2
0
        /// <summary>
        /// calls the meetingMessage report endpoint to get the message including body
        /// </summary>
        /// <param name="notificationId">notificationId .</param>
        /// <param name="httpClient">httpClient object .</param>
        /// <returns>MeetingInviteMessage corresponding to the notificationId</returns>
        private async Task <MeetingInviteMessage> GetMeetingNotificationMessage(string notificationId, HttpClient httpClient)
        {
            MeetingInviteMessage inviteMessage = null;
            string notificationMessageEndpoint = $"{this.Configuration[FunctionalConstants.NotificationHandlerUrl]}/v1/report/meetingMessage/{this.Configuration[FunctionalConstants.Application]}/{notificationId}";
            var    response = await httpClient.GetAsync(notificationMessageEndpoint).ConfigureAwait(false);

            if (!response.IsSuccessStatusCode)
            {
                var content = await response.Content.ReadAsStringAsync();
            }
            else
            {
                var Result = response.Content.ReadAsStringAsync().Result;
                inviteMessage = JsonConvert.DeserializeObject <MeetingInviteMessage>(Result);
            }
            return(inviteMessage);
        }
Exemplo n.º 3
0
        /// <summary>
        /// sends invite using template
        /// </summary>
        /// <param name="mailTemplate"> template .</param>
        /// <param name="TemplateData">template  data params .</param>
        private async Task SendMeetingInviteTemplateTest(MailTemplate mailTemplate, string TemplateData)
        {
            var date = DateTime.UtcNow;
            var meetingInviteItems = new MeetingNotificationItem[]
            {
                new MeetingNotificationItem()
                {
                    From = this.Configuration[FunctionalConstants.ToAddress],
                    RequiredAttendees = this.Configuration[FunctionalConstants.ToAddress],
                    Subject           = "Meeting Invite Functional Testing of Template through send endpoint",
                    Start             = date,
                    End          = date.AddHours(1),
                    Priority     = NotificationPriority.Low,
                    TemplateId   = mailTemplate.TemplateId,
                    TemplateData = TemplateData
                }
            };

            var    stringContent = new StringContent(JsonConvert.SerializeObject(meetingInviteItems), Encoding.UTF8, FunctionalConstants.ContentType);
            string notificationServiceEndpoint = $"{this.Configuration[FunctionalConstants.NotificationServiceUrl]}/v1/meetinginvite/send/{this.Configuration[FunctionalConstants.Application]}";

            using (HttpClient httpClient = new HttpClient())
            {
                string bearerToken = await this.tokenUtility.GetTokenAsync();

                if (bearerToken != null)
                {
                    httpClient.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue(FunctionalConstants.Bearer, bearerToken);

                    var response = await httpClient.PostAsync(notificationServiceEndpoint, stringContent).ConfigureAwait(false);

                    if (!response.IsSuccessStatusCode)
                    {
                        var content = await response.Content.ReadAsStringAsync();

                        Assert.Fail();
                    }
                    else
                    {
                        var Result = response.Content.ReadAsStringAsync().Result;
                        var notificationResponses = JsonConvert.DeserializeObject <List <NotificationResponse> >(Result);
                        var notificationResponse  = notificationResponses.FirstOrDefault();
                        Assert.IsTrue(notificationResponse.Status == NotificationItemStatus.Sent);
                        MeetingInviteMessage inviteMessage = await GetMeetingNotificationMessage(notificationResponse.NotificationId, httpClient);

                        if (inviteMessage != null)
                        {
                            var templateBody = ConvertText(mailTemplate.Content, TemplateData);
                            Assert.IsTrue(meetingInviteItems[0].Subject == inviteMessage.Subject);
                            Assert.IsTrue(templateBody == inviteMessage.Body);
                        }
                        else
                        {
                            Assert.Fail();
                        }
                    }
                }
                else
                {
                    Assert.Fail();
                }
            }
        }
        /// <summary>
        /// Test meeting invite queue, meeting invite report and meeting invite message including body
        /// </summary>
        public async Task MeetingInvitesQueueReportMessageTest()
        {
            var date = DateTime.UtcNow;
            var meetingInviteItems = new MeetingNotificationItem[]
            {
                new MeetingNotificationItem()
                {
                    From = this.Configuration[FunctionalConstants.ToAddress],
                    RequiredAttendees = this.Configuration[FunctionalConstants.ToAddress],
                    Subject           = "Functional Testing of Meeting Invites Queue endpoint",
                    Body     = "Lets meet!",
                    Start    = date,
                    End      = date.AddHours(1),
                    Priority = NotificationPriority.Normal
                }
            };

            var    stringContent = new StringContent(JsonConvert.SerializeObject(meetingInviteItems), Encoding.UTF8, FunctionalConstants.ContentType);
            string meetingInviteQueueEndpoint = $"{this.Configuration[FunctionalConstants.NotificationHandlerUrl]}/v1/meetinginvite/queue/{this.Configuration[FunctionalConstants.Application]}";

            using (HttpClient httpClient = new HttpClient())
            {
                string bearerToken = await this.tokenUtility.GetTokenAsync();

                if (bearerToken != null)
                {
                    httpClient.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue(FunctionalConstants.Bearer, bearerToken);

                    var response = await httpClient.PostAsync(meetingInviteQueueEndpoint, stringContent).ConfigureAwait(false);

                    if (!response.IsSuccessStatusCode)
                    {
                        var content = await response.Content.ReadAsStringAsync();

                        Assert.Fail();
                    }
                    else
                    {
                        var Result = response.Content.ReadAsStringAsync().Result;
                        var notificationResponses = JsonConvert.DeserializeObject <List <NotificationResponse> >(Result);
                        var notificationResponse  = notificationResponses.FirstOrDefault();
                        Assert.IsTrue(notificationResponse.Status == NotificationItemStatus.Queued);

                        var notificationId = notificationResponse.NotificationId;
                        MeetingInviteMessage inviteMessage = await GetMeetingNotificationMessage(notificationId, httpClient);

                        if (inviteMessage != null)
                        {
                            Assert.IsTrue(meetingInviteItems[0].Subject == inviteMessage.Subject);
                            Assert.IsTrue(meetingInviteItems[0].Body == inviteMessage.Body);
                        }
                        else
                        {
                            Assert.Fail();
                        }

                        int retryCount = int.TryParse(Configuration[FunctionalConstants.RetryCount], out retryCount) ? retryCount : 2;
                        int delayTime  = int.TryParse(Configuration[FunctionalConstants.DelayTimeInMilliSeconds], out delayTime) ? delayTime : 5000;


                        for (int i = 0; i < retryCount; i++)
                        {
                            MeetingInviteReportResponse inviteReportResponse = await GetMeetingInviteReportTest(notificationId, httpClient);

                            if (inviteReportResponse != null)
                            {
                                NotificationItemStatus notificationItemStatus = Enum.TryParse <NotificationItemStatus>(inviteReportResponse.Status, out notificationItemStatus) ? notificationItemStatus : NotificationItemStatus.Queued;
                                switch (notificationItemStatus)
                                {
                                case NotificationItemStatus.Failed:
                                case NotificationItemStatus.FakeMail:
                                case NotificationItemStatus.Invalid:
                                {
                                    Assert.Fail();
                                    break;
                                }

                                case NotificationItemStatus.Sent:
                                {
                                    Assert.Pass();
                                    break;
                                }

                                case NotificationItemStatus.Queued:
                                case NotificationItemStatus.Processing:
                                case NotificationItemStatus.Retrying:
                                {
                                    if (i == retryCount - 1)
                                    {
                                        Assert.Fail();
                                        break;
                                    }
                                    await Task.Delay(delayTime);

                                    continue;
                                }
                                }
                            }
                            else
                            {
                                Assert.Fail();
                            }
                        }
                    }
                }
                else
                {
                    Assert.Fail();
                }
            }
        }
        /// <summary>
        /// Test meeting invite with attachment through queue endpoint
        /// </summary>
        public async Task QueueMeetingInvitesWithAttachmentAndMeetingInviteReportTest()
        {
            var date = DateTime.UtcNow;
            var meetingInviteItems = new MeetingNotificationItem[]
            {
                new MeetingNotificationItem()
                {
                    From = this.Configuration[FunctionalConstants.ToAddress],
                    RequiredAttendees = this.Configuration[FunctionalConstants.ToAddress],
                    Subject           = "Functional Testing of Meeting Invites Queue endpoint with attachments",
                    Body        = "Lets meet!",
                    Start       = date,
                    End         = date.AddHours(1),
                    Priority    = NotificationPriority.Normal,
                    Attachments = new NotificationAttachment[]
                    {
                        new NotificationAttachment()
                        {
                            FileBase64 = "VEhpcyBpcyBhIHRlc3QgYXR0YWNobWVudCBmaWxlLg==",
                            FileName   = "Test.txt"
                        },
                    },
                }
            };

            var    stringContent = new StringContent(JsonConvert.SerializeObject(meetingInviteItems), Encoding.UTF8, FunctionalConstants.ContentType);
            string meetingInviteQueueEndpoint = $"{this.Configuration[FunctionalConstants.NotificationHandlerUrl]}/v1/meetinginvite/queue/{this.Configuration[FunctionalConstants.Application]}";

            using (HttpClient httpClient = new HttpClient())
            {
                string bearerToken = await this.tokenUtility.GetTokenAsync();

                if (bearerToken != null)
                {
                    httpClient.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue(FunctionalConstants.Bearer, bearerToken);

                    var response = await httpClient.PostAsync(meetingInviteQueueEndpoint, stringContent).ConfigureAwait(false);

                    if (!response.IsSuccessStatusCode)
                    {
                        var content = await response.Content.ReadAsStringAsync();

                        Assert.Fail();
                    }
                    else
                    {
                        var Result = response.Content.ReadAsStringAsync().Result;
                        var notificationResponses = JsonConvert.DeserializeObject <List <NotificationResponse> >(Result);
                        var notificationResponse  = notificationResponses.FirstOrDefault();
                        Assert.IsTrue(notificationResponse.Status == NotificationItemStatus.Queued);

                        var notificationId = notificationResponse.NotificationId;
                        MeetingInviteMessage inviteMessage = await GetMeetingNotificationMessage(notificationId, httpClient);

                        if (inviteMessage != null)
                        {
                            Assert.IsTrue(meetingInviteItems[0].Subject == inviteMessage.Subject);
                            Assert.IsTrue(meetingInviteItems[0].Body == inviteMessage.Body);
                            Assert.IsTrue(meetingInviteItems[0].Attachments.FirstOrDefault().FileName == inviteMessage.Attachments.FirstOrDefault().Name);
                            Assert.IsTrue(meetingInviteItems[0].Attachments.FirstOrDefault().FileBase64 == inviteMessage.Attachments.FirstOrDefault().ContentBytes);
                        }
                        else
                        {
                            Assert.Fail();
                        }
                    }
                }
                else
                {
                    Assert.Fail();
                }
            }
        }