/// <summary> /// calls the meetingInvites report endpoint. /// </summary> /// <param name="notificationId">notificationId .</param> /// <param name="httpClient">httpClient object .</param> /// <returns>MeetingInviteReportResponse corresponding to the notificationId</returns> private async Task <MeetingInviteReportResponse> GetMeetingInviteReportTest(string notificationId, HttpClient httpClient) { MeetingInviteReportResponse reportResponse = null; var reqcontent = "{\"applicationFilter\":[\"" + this.Configuration[FunctionalConstants.Application] + "\"], \"notificationIdsFilter\":[\"" + notificationId + "\"] }"; var stringContent = new StringContent(reqcontent, Encoding.UTF8, FunctionalConstants.ContentType); string inviteReportEndpoint = $"{this.Configuration[FunctionalConstants.NotificationHandlerUrl]}/v1/report/meetingInvites"; var response = await httpClient.PostAsync(inviteReportEndpoint, stringContent).ConfigureAwait(false); if (!response.IsSuccessStatusCode) { var content = await response.Content.ReadAsStringAsync(); Assert.Fail(); } else { var Result = response.Content.ReadAsStringAsync().Result; IList <MeetingInviteReportResponse> reportResponses = JsonConvert.DeserializeObject <IList <MeetingInviteReportResponse> >(Result); reportResponse = reportResponses.FirstOrDefault(); } return(reportResponse); }
/// <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(); } } }