/// <summary>
        /// Creates a request for the SyncFolderHierarchy operation.
        /// </summary>
        /// <param name="folder">A default folder name.</param>
        /// <param name="defaultShapeNames">Standard sets of properties to return.</param>
        /// <param name="isSyncFolderIdPresent">A Boolean value indicates whether the SyncFolderId element present in the request.</param>
        /// <param name="isSyncStatePresent">A Boolean value indicates whether the SyncState element present in the request.</param>
        /// <returns>An instance of SyncFolderHierarchyType used by the SyncFolderHierarchy operation.</returns>
        public static SyncFolderHierarchyType CreateSyncFolderHierarchyRequest(
            DistinguishedFolderIdNameType folder,
            DefaultShapeNamesType defaultShapeNames,
            bool isSyncFolderIdPresent,
            bool isSyncStatePresent)
        {
            // Create an instance of SyncFolderHierarchyType
            SyncFolderHierarchyType request = new SyncFolderHierarchyType();

            request.FolderShape           = new FolderResponseShapeType();
            request.FolderShape.BaseShape = defaultShapeNames;

            // Set the value of SyncFolderId if this element is present in the request.
            if (isSyncFolderIdPresent)
            {
                request.SyncFolderId = new TargetFolderIdType();
                DistinguishedFolderIdType distinguishedFolderId = new DistinguishedFolderIdType();
                distinguishedFolderId.Id  = folder;
                request.SyncFolderId.Item = distinguishedFolderId;
            }

            // Set the value of SyncState element if this element is present in the request.
            if (isSyncStatePresent)
            {
                request.SyncState = string.Empty;
            }

            return(request);
        }
        /// <summary>
        /// Create a request without optional elements for SyncFolderHierarchy operation.
        /// </summary>
        /// <returns>An instance of SyncFolderHierarchyType used by the SyncFolderHierarchy operation.</returns>
        public static SyncFolderHierarchyType CreateSyncFolderHierarchyRequest()
        {
            // Only FolderShape is required element.
            SyncFolderHierarchyType request = new SyncFolderHierarchyType();

            request.FolderShape           = new FolderResponseShapeType();
            request.FolderShape.BaseShape = DefaultShapeNamesType.IdOnly;

            return(request);
        }
Пример #3
0
        /// <summary>
        /// Gets synchronization information that enables folders to be synchronized
        /// between a client and a server.
        /// </summary>
        /// <param name="request">A request to the SyncFolderHierarchy operation.</param>
        /// <returns>A response from the SyncFolderHierarchy operation.</returns>
        public SyncFolderHierarchyResponseType SyncFolderHierarchy(SyncFolderHierarchyType request)
        {
            if (request == null)
            {
                throw new ArgumentException("The SyncFolderHierarchy request should not be null.");
            }

            SyncFolderHierarchyResponseType response = this.exchangeServiceBinding.SyncFolderHierarchy(request);

            Site.Assert.IsNotNull(response, "If the operation is successful, the response should not be null.");

            this.VerifySoapVersion();
            this.VerifyTransportType();
            this.VerifySyncFolderHierarchyResponse(response, this.exchangeServiceBinding.IsSchemaValidated);
            return(response);
        }
 /// <remarks/>
 public void SyncFolderHierarchyAsync(SyncFolderHierarchyType SyncFolderHierarchy1, object userState)
 {
     if ((this.SyncFolderHierarchyOperationCompleted == null))
     {
         this.SyncFolderHierarchyOperationCompleted = new System.Threading.SendOrPostCallback(this.OnSyncFolderHierarchyOperationCompleted);
     }
     this.InvokeAsync("SyncFolderHierarchy", new object[] {
                 SyncFolderHierarchy1}, this.SyncFolderHierarchyOperationCompleted, userState);
 }
 /// <remarks/>
 public void SyncFolderHierarchyAsync(SyncFolderHierarchyType SyncFolderHierarchy1)
 {
     this.SyncFolderHierarchyAsync(SyncFolderHierarchy1, null);
 }
 /// <remarks/>
 public System.IAsyncResult BeginSyncFolderHierarchy(SyncFolderHierarchyType SyncFolderHierarchy1, System.AsyncCallback callback, object asyncState)
 {
     return this.BeginInvoke("SyncFolderHierarchy", new object[] {
                 SyncFolderHierarchy1}, callback, asyncState);
 }
Пример #7
0
        public void MSOXWSSYNC_S03_TC02_SyncFolderHierarchy_WithAllOptionalElements()
        {
            #region Step 1. Client invokes SyncFolderHierarchy operation to server to get initial syncState.
            // Add inbox folder and search folder into list
            this.FolderIdNameType.Add(DistinguishedFolderIdNameType.inbox);
            this.FolderIdNameType.Add(DistinguishedFolderIdNameType.searchfolders);

            // Get the initial syncState
            SyncFolderHierarchyResponseMessageType[] responseMessage = new SyncFolderHierarchyResponseMessageType[this.FolderIdNameType.Count];
            SyncFolderHierarchyResponseType[]        response        = new SyncFolderHierarchyResponseType[this.FolderIdNameType.Count];

            for (int i = 0; i < this.FolderIdNameType.Count; i++)
            {
                SyncFolderHierarchyType request = TestSuiteHelper.CreateSyncFolderHierarchyRequest(this.FolderIdNameType[i], DefaultShapeNamesType.Default, true, true);
                response[i]        = this.SYNCAdapter.SyncFolderHierarchy(request);
                responseMessage[i] = TestSuiteHelper.EnsureResponse <SyncFolderHierarchyResponseMessageType>(response[i]);
            }
            #endregion

            #region Step 2. Client invokes CreateSubFolder to create folders.
            // Generate the created folder name
            string firstLevelFolderName  = Common.GenerateResourceName(this.Site, "FirstLevelFolder");
            string secondLevelFolderName = Common.GenerateResourceName(this.Site, "SecondLevelFolder");

            // Create folders under inbox, calendar, contacts, tasks and search folder
            this.CreateMultipleFolders(
                Common.GetConfigurationPropertyValue("User1Name", this.Site),
                Common.GetConfigurationPropertyValue("User1Password", this.Site),
                Common.GetConfigurationPropertyValue("Domain", this.Site),
                this.FolderIdNameType,
                firstLevelFolderName,
                secondLevelFolderName,
                TestSuiteBase.SearchText);
            #endregion

            #region Step 3. Client invokes SyncFolderHierarchy operation to sync the operation result in Step 2.
            // Call SyncFolderHierarchy operation to sync the create folder operation result
            for (int i = 0; i < this.FolderIdNameType.Count; i++)
            {
                responseMessage[i] = this.GetSyncFolderHierarchyResponseMessage(responseMessage[i], this.FolderIdNameType[i]);
            }
            #endregion

            #region Step 4. Client invokes FindAndUpdateFolderName to change the folder's name.
            // Generate a new folder name
            string newFolderName = Common.GenerateResourceName(this.Site, "NewFolderName");

            // Update the specific folder's name to a new one
            this.UpdateMultipleFolders(
                Common.GetConfigurationPropertyValue("User1Name", this.Site),
                Common.GetConfigurationPropertyValue("User1Password", this.Site),
                Common.GetConfigurationPropertyValue("Domain", this.Site),
                this.FolderIdNameType,
                firstLevelFolderName,
                secondLevelFolderName,
                newFolderName);
            #endregion

            #region  Step 5. Client invokes SyncFolderHierarchy operation with previous syncState to sync the operation result in Step 4.
            // Call SyncFolderHierarchy operation to sync the update folder operation result
            for (int i = 0; i < this.FolderIdNameType.Count; i++)
            {
                responseMessage[i] = this.GetSyncFolderHierarchyResponseMessage(responseMessage[i], this.FolderIdNameType[i]);
            }
            #endregion

            #region Step 6. Client invokes FindAndDeleteSubFolder to delete the folder that created in step 2.
            // Delete the sub folder that created in step 2
            this.DeleteMultipleFolders(
                Common.GetConfigurationPropertyValue("User1Name", this.Site),
                Common.GetConfigurationPropertyValue("User1Password", this.Site),
                Common.GetConfigurationPropertyValue("Domain", this.Site),
                this.FolderIdNameType,
                newFolderName);
            #endregion

            #region Step 7. Client invokes SyncFolderHierarchy operation with previous syncState to sync the operation result of Step 6.
            // Call SyncFolderHierarchy operation to sync the delete folder operation result
            for (int i = 0; i < this.FolderIdNameType.Count; i++)
            {
                responseMessage[i] = this.GetSyncFolderHierarchyResponseMessage(responseMessage[i], this.FolderIdNameType[i]);
            }
            #endregion
        }