/// <summary> /// Gets synchronization information that enables items to be synchronized between a client and a server. /// </summary> /// <param name="request">A request to the SyncFolderItems operation.</param> /// <returns>A response from the SyncFolderItems operation.</returns> public SyncFolderItemsResponseType SyncFolderItems(SyncFolderItemsType request) { if (request == null) { throw new ArgumentException("The SyncFolderItems request should not be null."); } SyncFolderItemsResponseType response = this.exchangeServiceBinding.SyncFolderItems(request); Site.Assert.IsNotNull(response, "If the operation is successful, the response should not be null."); this.VerifySoapVersion(); this.VerifyTransportType(); this.VerifySyncFolderItemsResponse(response, this.exchangeServiceBinding.IsSchemaValidated); return(response); }
/// <summary> /// The capture code of requirements in SyncFolderItems operation. /// </summary> /// <param name="syncFolderItemsResponse">The response message for SyncFolderItems operation</param> /// <param name="isSchemaValidated">A Boolean value indicates the schema validation result, true means the schema is validated, false means the schema is not validated.</param> private void VerifySyncFolderItemsResponse(SyncFolderItemsResponseType syncFolderItemsResponse, bool isSchemaValidated) { // Assert the response is not null Site.Assert.IsNotNull(syncFolderItemsResponse, "If the request is successful, the response should not be null."); // If only one item is created in test case. The count of items in SyncFolderItems operation response should be one. Site.Assert.AreEqual<int>(1, syncFolderItemsResponse.ResponseMessages.Items.Length, "The count of items in SyncFolderItems operation response should be one if only one item is created."); SyncFolderItemsResponseMessageType syncFolderItemsResponseMessage = (SyncFolderItemsResponseMessageType)syncFolderItemsResponse.ResponseMessages.Items[0]; // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSSYNC_R444"); // Verify MS-OXWSSYNC requirement: MS-OXWSSYNC_R444 Site.CaptureRequirementIfIsTrue( isSchemaValidated, 444, @"[In m:SyncFolderItemsResponseMessageType Complex Type] [The schema of ""SyncFolderItemsResponseMessageType"" is:] <xs:complexType name=""SyncFolderItemsResponseMessageType""> <xs:complexContent> <xs:extension base=""m:ResponseMessageType"" > <xs:sequence> <xs:element name=""SyncState"" type=""xs:string"" minOccurs=""0"" /> <xs:element name=""IncludesLastItemInRange"" type=""xs:boolean"" minOccurs=""0"" /> <xs:element name=""Changes"" type=""t:SyncFolderItemsChangesType"" minOccurs=""0"" /> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType>"); // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSSYNC_R51"); // Verify MS-OXWSSYNC requirement: MS-OXWSSYNC_R51 Site.CaptureRequirementIfIsTrue( isSchemaValidated, 51, @"[In m:SyncFolderItemsResponseMessageType Complex Type] The SyncFolderItemsResponseMessageType complex type specifies the status and results of a single call to the SyncFolderItems operation (section 3.1.4.2)."); // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSSYNC_R445"); // Verify MS-OXWSSYNC requirement: MS-OXWSSYNC_R445 Site.CaptureRequirementIfIsTrue( isSchemaValidated, 445, @"[In m:SyncFolderItemsResponseMessageType Complex Type] The type of SyncState is xs:string ([XMLSCHEMA2])."); // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSSYNC_R446"); // Verify MS-OXWSSYNC requirement: MS-OXWSSYNC_R446 Site.CaptureRequirementIfIsTrue( isSchemaValidated, 446, @"[In m:SyncFolderItemsResponseMessageType Complex Type] The type of IncludesLastItemInRange is xs:boolean ([XMLSCHEMA2])."); // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSSYNC_R69"); // Verify MS-OXWSSYNC requirement: MS-OXWSSYNC_R69 Site.CaptureRequirementIfIsTrue( isSchemaValidated, 69, @"[In m:SyncFolderItemsResponseMessageType Complex Type] The type of Changes is t:SyncFolderItemsChangesType (section 2.2.4.5)."); // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSSYNC_R451"); // Verify MS-OXWSSYNC requirement: MS-OXWSSYNC_R451 Site.CaptureRequirementIfIsTrue( isSchemaValidated, 451, @"[In t:SyncFolderItemsChangesType Complex Type] The SyncFolderItemsChangesType complex type specifies a sequenced array of change types that describe the differences between the items on the client and the items on the server. <xs:complexType name=""SyncFolderItemsChangesType""> <xs:sequence> <xs:choice maxOccurs=""unbounded"" minOccurs=""0"" > <xs:element name=""Create"" type=""t:SyncFolderItemsCreateOrUpdateType"" /> <xs:element name=""Update"" type=""t:SyncFolderItemsCreateOrUpdateType"" /> <xs:element name=""Delete"" type=""t:SyncFolderItemsDeleteType"" /> <xs:element name=""ReadFlagChange"" type=""t:SyncFolderItemsReadFlagType"" /> </xs:choice> </xs:sequence> </xs:complexType>"); if (null != syncFolderItemsResponseMessage.Changes && null != syncFolderItemsResponseMessage.Changes.Items) { // Verify the type of Create or Update. foreach (ItemsChoiceType1 itemsElementName in syncFolderItemsResponseMessage.Changes.ItemsElementName) { if (itemsElementName == ItemsChoiceType1.Create) { // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSSYNC_R130"); // Verify MS-OXWSSYNC requirement: MS-OXWSSYNC_R130 Site.CaptureRequirementIfIsTrue( isSchemaValidated, 130, @"[In t:SyncFolderItemsChangesType Complex Type] The type of Create is t:SyncFolderItemsCreateOrUpdateType (section 3.1.4.2.3.3)."); } else if (itemsElementName == ItemsChoiceType1.Update) { // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSSYNC_R452"); // Verify MS-OXWSSYNC requirement: MS-OXWSSYNC_R452 Site.CaptureRequirementIfIsTrue( isSchemaValidated, 452, @"[In t:SyncFolderItemsChangesType Complex Type] The type of Update is t:SyncFolderItemsCreateOrUpdateType."); } foreach (object item in syncFolderItemsResponseMessage.Changes.Items) { if (item.GetType() == typeof(SyncFolderItemsCreateOrUpdateType)) { // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSSYNC_R453"); // Verify MS-OXWSSYNC requirement: MS-OXWSSYNC_R453 Site.CaptureRequirementIfIsTrue( isSchemaValidated, 453, @"[In t:SyncFolderItemsCreateOrUpdateType Complex Type] The SyncFolderItemsCreateOrUpdateType complex type specifies a single item to create or update in the client data store. <xs:complexType name=""SyncFolderItemsCreateOrUpdateType""> <xs:choice> <xs:element name=""Item"" type=""t:ItemType"" /> <xs:element name=""Message"" type=""t:MessageType"" /> <xs:element name=""CalendarItem"" type=""t:CalendarItemType"" /> <xs:element name=""Contact"" type=""t:ContactItemType"" /> <xs:element name=""DistributionList"" type=""t:DistributionListType"" /> <xs:element name=""MeetingMessage"" type=""t:MeetingMessageType"" /> <xs:element name=""MeetingRequest"" type=""t:MeetingRequestMessageType"" /> <xs:element name=""MeetingResponse"" type=""t:MeetingResponseMessageType"" /> <xs:element name=""MeetingCancellation"" type=""t:MeetingCancellationMessageType"" /> <xs:element name=""Task"" type=""t:TaskType"" /> <xs:element name=""PostItem"" type=""t:PostItemType"" /> <xs:element name=""RoleMember"" type=""t:RoleMemberItemType"" /> <xs:element name=""Network"" type=""t:NetworkItemType"" /> <xs:element name=""Person"" type=""t:AbchPersonItemType"" /> <xs:element name=""Booking"" type=""t:BookingItemType"" /> </xs:choice> </xs:complexType>"); } else if (item.GetType() == typeof(SyncFolderItemsDeleteType)) { // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSSYNC_R133"); // Verify MS-OXWSSYNC requirement: MS-OXWSSYNC_R133 Site.CaptureRequirementIfIsTrue( isSchemaValidated, 133, @"[In t:SyncFolderItemsChangesType Complex Type] The type of Delete is t:SyncFolderItemsDeleteType (section 3.1.4.2.3.4)."); // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSSYNC_R183"); // Verify MS-OXWSSYNC requirement: MS-OXWSSYNC_R183 Site.CaptureRequirementIfIsTrue( isSchemaValidated, 183, @"[In t:SyncFolderItemsDeleteType Complex Type] The type of ItemId is t:ItemIdType ([MS-OXWSCORE] section 2.2.4.25)."); // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSSYNC_R454"); // Verify MS-OXWSSYNC requirement: MS-OXWSSYNC_R454 Site.CaptureRequirementIfIsTrue( isSchemaValidated, 454, @"[In t:SyncFolderItemsDeleteType Complex Type] The SyncFolderItemsDeleteType complex type specifies an item to delete from the client message store. <xs:complexType name=""SyncFolderItemsDeleteType""> <xs:sequence> <xs:element name=""ItemId"" type=""t:ItemIdType"" /> </xs:sequence> </xs:complexType>"); } else if (item.GetType() == typeof(SyncFolderItemsReadFlagType)) { // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSSYNC_R135"); // Verify MS-OXWSSYNC requirement: MS-OXWSSYNC_R135 Site.CaptureRequirementIfIsTrue( isSchemaValidated, 135, @"[In t:SyncFolderItemsChangesType Complex Type] The type of ReadFlagChange is t:SyncFolderItemsReadFlagType (section 3.1.4.2.3.5)."); // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSSYNC_R455"); // Verify MS-OXWSSYNC requirement: MS-OXWSSYNC_R455 Site.CaptureRequirementIfIsTrue( isSchemaValidated, 455, @"[In t:SyncFolderItemsReadFlagType Complex Type] The SyncFolderItemsReadFlagType complex type specifies whether an item on the server has been read. <xs:complexType name=""SyncFolderItemsReadFlagType""> <xs:sequence> <xs:element name=""ItemID"" type=""t:ItemIdType"" /> <xs:element name=""IsRead"" type=""xs:boolean"" /> </xs:sequence> </xs:complexType>"); // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSSYNC_R456"); // Verify MS-OXWSSYNC requirement: MS-OXWSSYNC_R456 Site.CaptureRequirementIfIsTrue( isSchemaValidated, 456, @"[In t:SyncFolderItemsReadFlagType Complex Type] The type of IsRead is xs:boolean ([XMLSCHEMA2])."); // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSSYNC_R193"); // Verify MS-OXWSSYNC requirement: MS-OXWSSYNC_R193 Site.CaptureRequirementIfIsTrue( isSchemaValidated, 193, @"[In t:SyncFolderItemsReadFlagType Complex Type] The type of ItemID is t:ItemIdType ([MS-OXWSCORE] section 2.2.4.25)."); } } } } // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSSYNC_R468"); // Verify MS-OXWSSYNC requirement: MS-OXWSSYNC_R468 Site.CaptureRequirementIfIsTrue( isSchemaValidated, 468, @"[In SyncFolderItems] The following is the WSDL port type specification of the SyncFolderItems operation. <wsdl:operation name=""SyncFolderItems""> <wsdl:input message=""tns:SyncFolderItemsSoapIn"" /> <wsdl:output message=""tns:SyncFolderItemsSoapOut"" /> </wsdl:operation>"); // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSSYNC_R469"); // Verify MS-OXWSSYNC requirement: MS-OXWSSYNC_R469 Site.CaptureRequirementIfIsTrue( isSchemaValidated, 469, @"[In SyncFolderItems] The following is the WSDL binding specification of the SyncFolderItems operation. <wsdl:operation name=""SyncFolderItems""> <soap:operation soapAction=""http://schemas.microsoft.com/exchange/services/2006/messages/SyncFolderItems"" /> <wsdl:input> <soap:header message=""tns:SyncFolderItemsSoapIn"" part=""Impersonation"" use=""literal""></soap:header> <soap:header message=""tns:SyncFolderItemsSoapIn"" part=""MailboxCulture"" use=""literal""/> <soap:header message=""tns:SyncFolderItemsSoapIn"" part=""RequestVersion"" use=""literal""/> <soap:body parts=""request"" use=""literal"" /> </wsdl:input> <wsdl:output> <soap:body parts=""SyncFolderItemsResult"" use=""literal"" /> <soap:header message=""tns:SyncFolderItemsSoapOut"" part=""ServerVersion"" use=""literal""/> </wsdl:output> </wsdl:operation>"); // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSSYNC_R473"); // Verify MS-OXWSSYNC requirement: MS-OXWSSYNC_R473 Site.CaptureRequirementIfIsTrue( isSchemaValidated, 473, @"[In m:SyncFolderItemsResponseType Complex Type] [The schema of ""SyncFolderItemsResponseType"" is:] <xs:complexType name=""SyncFolderItemsResponseType""> <xs:complexContent> <xs:extension base=""m:BaseResponseMessageType"" /> </xs:complexContent> </xs:complexType>"); // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSSYNC_R477"); // Verify MS-OXWSSYNC requirement: MS-OXWSSYNC_R477 Site.CaptureRequirementIfIsTrue( isSchemaValidated, 477, @"[In SyncFolderItemsResponse Element] The SyncFolderItemsResponse element specifies the response message for the SyncFolderItems operation. <xs:element name=""SyncFolderItemsResponse"" type=""m:SyncFolderItemsResponseType"" />"); // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSSYNC_R480"); // Verify MS-OXWSSYNC requirement: MS-OXWSSYNC_R480 Site.CaptureRequirementIfIsTrue( isSchemaValidated, 480, @"[In tns:SyncFolderItemsSoapOut] The SyncFolderItemsSoapOut WSDL message specifies the response from the SyncFoldersItems operation. <wsdl:message name=""SyncFolderItemsSoapOut""> <wsdl:part name=""SyncFolderItemsResult"" element=""tns:SyncFolderItemsResponse"" /> <wsdl:part name=""ServerVersion"" element=""t:ServerVersionInfo""/> </wsdl:message>"); // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSSYNC_R437"); // Verify MS-OXWSSYNC requirement: MS-OXWSSYNC_R437 Site.CaptureRequirementIfIsTrue( isSchemaValidated, 437, @"[In tns:SyncFolderItemsSoapOut] The Element/type of SyncFolderItemsResult is tns:SyncFolderItemsResponse (section 3.1.4.2.2.2)."); // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSSYNC_R438"); // Verify MS-OXWSSYNC requirement: MS-OXWSSYNC_R438 Site.CaptureRequirementIfIsTrue( isSchemaValidated, 438, @"[In tns:SyncFolderItemsSoapOut] [The part name SyncFolderItemsResult] specifies the SOAP body of the response to a SyncFolderItems operation request."); if (this.exchangeServiceBinding.ServerVersionInfoValue != null) { // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSSYNC_R439"); // Verify MS-OXWSSYNC requirement: MS-OXWSSYNC_R439 Site.CaptureRequirementIfIsTrue( isSchemaValidated, 439, @"[In tns:SyncFolderItemsSoapOut] The Element/type of ServerVersion is t:ServerVersionInfo ([MS-OXWSCDATA] section 2.2.3.12)."); // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSSYNC_R440"); // Verify MS-OXWSSYNC requirement: MS-OXWSSYNC_R440 Site.CaptureRequirementIfIsTrue( isSchemaValidated, 440, @"[In tns:SyncFolderItemsSoapOut] [The part name ServerVersion] specifies a SOAP header that identifies the server version for the response."); } // Verify the requirements in MS-OXWSCDATA. this.VerifyRequirementOfOXWSCDATA(syncFolderItemsResponseMessage, isSchemaValidated); }