static private GetSyncAddItem ( Microsoft.Protocols.TestSuites.Common.DataStructures syncStore, string subject ) : |
||
syncStore | Microsoft.Protocols.TestSuites.Common.DataStructures | The sync result. |
subject | string | The email subject. |
return |
/// <summary> /// Get the specified email item. /// </summary> /// <param name="emailSubject">The subject of the email item.</param> /// <param name="folderCollectionId">The serverId of the default folder.</param> /// <param name="bodyPreference">The preference information related to the type and size of information that is returned from fetching.</param> /// <returns>The result of getting the specified email item.</returns> private SyncStore GetSyncResult(string emailSubject, string folderCollectionId, Request.BodyPreference bodyPreference) { SyncStore syncItemResult; Microsoft.Protocols.TestSuites.Common.DataStructures.Sync item = null; int counter = 0; int waitTime = int.Parse(Common.GetConfigurationPropertyValue("WaitTime", this.Site)); int retryCount = int.Parse(Common.GetConfigurationPropertyValue("RetryCount", this.Site)); do { Thread.Sleep(waitTime); // Get the new added email item syncItemResult = this.SyncChanges(this.GetInitialSyncKey(folderCollectionId), folderCollectionId, bodyPreference); if (syncItemResult != null && syncItemResult.CollectionStatus == 1) { item = TestSuiteHelper.GetSyncAddItem(syncItemResult, emailSubject); } counter++; }while ((syncItemResult == null || item == null) && counter < retryCount); Site.Assert.IsNotNull(item, "The email item with subject {0} should be found. Retry count: {1}", emailSubject, counter); // Verify sync result Site.Assert.AreEqual <byte>( 1, syncItemResult.CollectionStatus, "If the Sync command executes successfully, the status in response should be 1."); return(syncItemResult); }
/// <summary> /// Synchronize item with specified subject. /// </summary> /// <param name="subject">The subject of the item.</param> /// <param name="collectionId">The collection id which to sync with.</param> /// <param name="commands">The sync commands.</param> /// <param name="bodyPreferences">The bodyPreference in the options element.</param> /// <param name="bodyPartPreferences">The bodyPartPreference in the options element.</param> /// <returns>The item with specified subject.</returns> protected DataStructures.Sync GetSyncResult(string subject, string collectionId, object[] commands, Request.BodyPreference[] bodyPreferences, Request.BodyPartPreference[] bodyPartPreferences) { DataStructures.SyncStore syncStore; DataStructures.Sync item = null; SyncRequest request = TestSuiteHelper.CreateSyncRequest(this.GetInitialSyncKey(collectionId), collectionId, commands, bodyPreferences, bodyPartPreferences); int counter = 0; int waitTime = int.Parse(Common.GetConfigurationPropertyValue("WaitTime", this.Site)); int retryCount = int.Parse(Common.GetConfigurationPropertyValue("RetryCount", this.Site)); do { Thread.Sleep(waitTime); syncStore = this.ASAIRSAdapter.Sync(request); if (syncStore != null && syncStore.CollectionStatus == 1) { item = TestSuiteHelper.GetSyncAddItem(syncStore, subject); } counter++; }while ((syncStore == null || item == null) && counter < retryCount); this.Site.Assert.IsNotNull(item, "The email item with subject {0} should be found, retry count: {1}.", subject, counter); this.SyncKey = syncStore.SyncKey; return(item); }
public void MSASAIRS_S06_TC01_MeetingResponseWithPlainTextBody() { Site.Assume.AreNotEqual <string>("12.1", Common.GetConfigurationPropertyValue("ActiveSyncProtocolVersion", this.Site), "The Body element under meetingresponse:SendResponse element is supported when the MS-ASProtocolVersion header is set to 16.0. MS-ASProtocolVersion header value is determined using Common PTFConfig property named ActiveSyncProtocolVersion."); Site.Assume.AreNotEqual <string>("14.0", Common.GetConfigurationPropertyValue("ActiveSyncProtocolVersion", this.Site), "The Body element under meetingresponse:SendResponse element is supported when the MS-ASProtocolVersion header is set to 16.0. MS-ASProtocolVersion header value is determined using Common PTFConfig property named ActiveSyncProtocolVersion."); Site.Assume.AreNotEqual <string>("14.1", Common.GetConfigurationPropertyValue("ActiveSyncProtocolVersion", this.Site), "The Body element under meetingresponse:SendResponse element is supported when the MS-ASProtocolVersion header is set to 16.0. MS-ASProtocolVersion header value is determined using Common PTFConfig property named ActiveSyncProtocolVersion."); #region Call Sync command with Add element to add a no recurrence meeting to the server. string subject = Common.GenerateResourceName(Site, "Subject"); string attendeeEmail = Common.GetMailAddress(this.User2Information.UserName, this.User2Information.UserDomain); Dictionary <Request.ItemsChoiceType8, object> elementsToValueMap = TestSuiteHelper.SetMeetingProperties(subject, attendeeEmail, this.Site); DateTime startTime = DateTime.Now.AddMinutes(-5); DateTime endTime = startTime.AddHours(1); elementsToValueMap.Add(Request.ItemsChoiceType8.StartTime, startTime.ToString("yyyyMMddTHHmmssZ")); elementsToValueMap.Add(Request.ItemsChoiceType8.EndTime, endTime.ToString("yyyyMMddTHHmmssZ")); this.SyncAddMeeting(this.User1Information.CalendarCollectionId, elementsToValueMap); this.RecordCaseRelativeItems(this.User1Information.UserName, this.User1Information.CalendarCollectionId, subject); #endregion #region Call Sync command to get the added calendar item. SyncStore getChangeResult = this.GetSyncResult(subject, this.User1Information.CalendarCollectionId, null); Microsoft.Protocols.TestSuites.Common.DataStructures.Sync resultItem = TestSuiteHelper.GetSyncAddItem(getChangeResult, subject); #endregion #region Call SendMail command to send the meeting request to attendee without setting BusyStatus. Calendar calendarItem = resultItem.Calendar; calendarItem.BusyStatus = null; this.SendMeetingRequest(subject, calendarItem); #endregion #region Call Sync command to get the meeting request and accept it. this.SwitchUser(this.User2Information, true); // Sync mailbox changes SyncStore syncChangeResult = this.GetSyncResult(subject, this.User2Information.InboxCollectionId, null); Microsoft.Protocols.TestSuites.Common.DataStructures.Sync meetingRequestEmail = TestSuiteHelper.GetSyncAddItem(syncChangeResult, subject); Request.MeetingResponseRequestSendResponse sendResoponse = new Request.MeetingResponseRequestSendResponse() { Body = new Request.Body() { Type = 1, Data = "Accept this meeting." } }; // Accept the meeting request // Create a meeting response request item Request.MeetingResponseRequest meetingResponseRequestItem = new Request.MeetingResponseRequest { UserResponse = 1, CollectionId = this.User2Information.InboxCollectionId, RequestId = meetingRequestEmail.ServerId, SendResponse = sendResoponse, }; // Create a meeting response request MeetingResponseRequest meetingRequest = Common.CreateMeetingResponseRequest(new Request.MeetingResponseRequest[] { meetingResponseRequestItem }); MeetingResponseResponse response = this.ASAIRSAdapter.MeetingResponse(meetingRequest); this.Site.CaptureRequirementIfAreEqual <int>( 1, int.Parse(response.ResponseData.Result[0].Status), 1331, @"[In Body] When the Body element is a child of the meetingresponse:SendResponse element [or the composemail:SmartForward element], it has only the child elements Type and Data."); this.Site.CaptureRequirementIfAreEqual <int>( 1, int.Parse(response.ResponseData.Result[0].Status), 1333, @"[In Body] The Body element is a child of the meetingresponse:SendResponse element and the composemail:SmartForward element only when protocol version 16.0 is used."); // Because the Type element is 1 and client call the MeetingResponse command successful. // So R1400 will be verified. this.Site.CaptureRequirementIfAreEqual <int>( 1, int.Parse(response.ResponseData.Result[0].Status), 1400, @"[In Type (Body)] For calendar items in protocol version 16.0, the only valid values for this element [Type] is 1 (plain text)."); #endregion #region Call Sync command to get the calendar item. SyncStore getCalendarItemsResult = this.GetSyncResult(subject, this.User2Information.CalendarCollectionId, null); Microsoft.Protocols.TestSuites.Common.DataStructures.Sync calendarResult = TestSuiteHelper.GetSyncAddItem(getCalendarItemsResult, subject); Site.Assert.IsNotNull(calendarResult.Calendar.BusyStatus, "Element BusyStatus should be present."); #endregion }