public void MSOXWSMTGS_S01_TC21_DeleteItemErrorSendMeetingCancellationsRequired()
{
#region Define a recurring calendar item
DateTime startTime = DateTime.Now;
DailyRecurrencePatternType pattern = new DailyRecurrencePatternType();
pattern.Interval = this.PatternInterval;
NumberedRecurrenceRangeType range = new NumberedRecurrenceRangeType();
range.NumberOfOccurrences = this.NumberOfOccurrences;
range.StartDate = startTime;
CalendarItemType calendarItem = new CalendarItemType();
calendarItem.UID = Guid.NewGuid().ToString();
calendarItem.Subject = this.Subject;
calendarItem.Start = startTime;
calendarItem.StartSpecified = true;
calendarItem.End = startTime.AddHours(this.TimeInterval);
calendarItem.EndSpecified = true;
calendarItem.Recurrence = new RecurrenceType();
calendarItem.Recurrence.Item = pattern;
calendarItem.Recurrence.Item1 = range;
#endregion
#region Create the recurring calendar item and extract the Id of an occurrence item
ItemInfoResponseMessageType item = this.CreateSingleCalendarItem(Role.Organizer, calendarItem, CalendarItemCreateOrDeleteOperationType.SendToNone);
OccurrenceItemIdType occurrenceItemId = new OccurrenceItemIdType();
occurrenceItemId.ChangeKey = item.Items.Items[0].ItemId.ChangeKey;
occurrenceItemId.RecurringMasterId = item.Items.Items[0].ItemId.Id;
occurrenceItemId.InstanceIndex = this.InstanceIndex;
#endregion
#region Get the targeted occurrence item
ItemInfoResponseMessageType getItem = this.GetSingleCalendarItem(Role.Organizer, occurrenceItemId);
Site.Assert.IsNotNull(getItem, @"Get the occurrence should be successful.");
RecurringMasterItemIdType invalidRecurringMasterItemId = new RecurringMasterItemIdType();
invalidRecurringMasterItemId.ChangeKey = getItem.Items.Items[0].ItemId.ChangeKey;
invalidRecurringMasterItemId.OccurrenceId = getItem.Items.Items[0].ItemId.Id;
#endregion
#region Delete the occurrence
DeleteItemType deleteItemRequest = new DeleteItemType();
deleteItemRequest.ItemIds = new BaseItemIdType[] { occurrenceItemId };
deleteItemRequest.DeleteType = DisposalType.HardDelete;
DeleteItemResponseType deleteItemResponse = this.MTGSAdapter.DeleteItem(deleteItemRequest);
// Add the debug information
Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSMTGS_R1209");
// Verify MS-OXWSMSG requirement: MS-OXWSMTGS_R1209
Site.CaptureRequirementIfAreEqual<ResponseClassType>(
ResponseClassType.Error,
deleteItemResponse.ResponseMessages.Items[0].ResponseClass,
1209,
@"[In Messages] If the request is unsuccessful, the DeleteItem operation returns a DeleteItemResponse element with the ResponseClass attribute of the DeleteItemResponseMessage element set to ""Error"". ");
// Add the debug information
Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSMTGS_R1213");
// Verify MS-OXWSMSG requirement: MS-OXWSMTGS_R1213
Site.CaptureRequirementIfAreEqual<ResponseCodeType>(
ResponseCodeType.ErrorSendMeetingCancellationsRequired,
deleteItemResponse.ResponseMessages.Items[0].ResponseCode,
1213,
@"[In Messages] ErrorSendMeetingCancellationsRequired: Occurs during a DeleteItem call, when the SendMeetingCancellations property is missing from the request and the item to delete is a calendar item. ");
#endregion
#region Clean up organizer's calendar folders.
this.CleanupFoldersByRole(Role.Organizer, new List<DistinguishedFolderIdNameType>() { DistinguishedFolderIdNameType.calendar });
#endregion
}