Exemplo n.º 1
0
        public void MSASCMD_S04_TC08_FolderSync_UpdateFolder()
        {
            #region Call method FolderCreate command to create a new folder as a child folder of the specified parent folder.
            string folderName = Common.GenerateResourceName(Site, "FolderSync");
            FolderCreateResponse folderCreateResponse = this.GetFolderCreateResponse(this.LastFolderSyncKey, (byte)FolderType.UserCreatedMail, folderName, "0");
            Site.Assert.AreEqual <int>(1, int.Parse(folderCreateResponse.ResponseData.Status), "The server should return a status code 1 in the FolderCreate command response to indicate success.");
            TestSuiteBase.RecordCaseRelativeFolders(this.User1Information, folderCreateResponse.ResponseData.ServerId);
            #endregion

            #region Change DeviceID
            this.CMDAdapter.ChangeDeviceID("NewDeviceID");
            this.RecordDeviceInfoChanged();
            string folderSyncKey = folderCreateResponse.ResponseData.SyncKey;
            #endregion

            #region Call method FolderSync to synchronize the collection hierarchy.
            FolderSyncResponse foldersyncResponseForNewDeviceID = this.FolderSync();
            string             changeDeviceIDFolderId           = TestSuiteBase.GetCollectionId(foldersyncResponseForNewDeviceID, folderName);
            Site.Assert.IsFalse(string.IsNullOrEmpty(changeDeviceIDFolderId), "If the new folder created by FolderCreate command, server should return a server ID for the new created folder.");

            // Add the debug information
            Site.Log.Add(LogEntryKind.Debug, "Verify MS-ASCMD_R5020");

            // If client sends the FolderSync request successfully, the server must send a synchronization key to the client in a response.
            Site.CaptureRequirementIfIsTrue(
                (foldersyncResponseForNewDeviceID.ResponseData.SyncKey != null) && (foldersyncResponseForNewDeviceID.ResponseData.SyncKey != folderSyncKey),
                5020,
                @"[In Synchronizing a Folder Hierarchy] [FolderSync sequence for folder hierarchy synchronization, order 1:] The server responds with [the folder hierarchy and] a new folderhierarchy:SyncKey value.");

            #endregion

            #region Call method FolderUpdate to rename a folder.
            string folderUpdateName = Common.GenerateResourceName(Site, "FolderUpdate");
            FolderUpdateRequest folderUpdateRequest = Common.CreateFolderUpdateRequest(foldersyncResponseForNewDeviceID.ResponseData.SyncKey, changeDeviceIDFolderId, folderUpdateName, "0");
            this.CMDAdapter.FolderUpdate(folderUpdateRequest);
            #endregion

            #region Restore DeviceID and call FolderSync command.
            this.CMDAdapter.ChangeDeviceID(Common.GetConfigurationPropertyValue("DeviceID", this.Site));

            // The client calls FolderSync command to synchronize the collection hierarchy with original device id.
            FolderSyncRequest  folderSyncRequest  = Common.CreateFolderSyncRequest(folderSyncKey);
            FolderSyncResponse folderSyncResponse = this.CMDAdapter.FolderSync(folderSyncRequest);
            bool isUpdated = false;
            foreach (Response.FolderSyncChangesUpdate update in folderSyncResponse.ResponseData.Changes.Update)
            {
                if (update.DisplayName == folderUpdateName)
                {
                    isUpdated = true;
                    break;
                }
            }

            Site.Assert.IsTrue(isUpdated, "Rename successfully");
            #endregion
        }
Exemplo n.º 2
0
        public void MSASCMD_S11_TC05_Ping_Status7_Outdate()
        {
            #region Change a new user to call ActiveSync operation with a new DeviceID.
            this.CMDAdapter.SwitchUser(this.User3Information.UserName, this.User3Information.UserPassword, this.User3Information.UserDomain);

            // Record user that uses new DeviceID
            this.RecordDeviceInfoChanged();
            this.CMDAdapter.ChangeDeviceID("FirstDeviceID");
            #endregion

            #region Sync user folder changes
            this.FolderSync();
            #endregion

            #region Switch to new device and create one folder
            this.CMDAdapter.ChangeDeviceID("SecondDeviceID");
            string folderSynKey = this.GetFolderSyncKey();

            // Create one mail type folder
            string newFolderName = Guid.NewGuid().ToString().Replace("-", string.Empty);
            FolderCreateRequest  folderCreateRequest  = Common.CreateFolderCreateRequest(folderSynKey, 12, newFolderName, this.User1Information.InboxCollectionId);
            FolderCreateResponse folderCreateResponse = this.CMDAdapter.FolderCreate(folderCreateRequest);
            Site.Assert.AreEqual <int>(
                1,
                int.Parse(folderCreateResponse.ResponseData.Status),
                "After folder create success, server should return status 1");
            #endregion

            #region Switch back to old device and send one ping request
            this.CMDAdapter.ChangeDeviceID("FirstDeviceID");
            PingRequest  pingRequest  = CreatePingRequest(this.User1Information.InboxCollectionId, Request.PingFolderClass.Email);
            PingResponse pingResponse = this.CMDAdapter.Ping(pingRequest);
            #endregion

            // Add the debug information
            Site.Log.Add(LogEntryKind.Debug, "Verify MS-ASCMD_R4257");

            // Verify MS-ASCMD requirement: MS-ASCMD_R4257
            Site.CaptureRequirementIfAreEqual <int>(
                7,
                int.Parse(pingResponse.ResponseData.Status),
                4257,
                @"[In Status(Ping)] [When the scope is Global], [the cause of the status value 7 is] The folder hierarchy is out of date.");

            #region Record new created folder collection ID.
            // Get new created folder collection ID
            FolderSyncRequest  folderSyncRequestForNewFolder  = Common.CreateFolderSyncRequest("0");
            FolderSyncResponse folderSyncResponseForNewFolder = this.CMDAdapter.FolderSync(folderSyncRequestForNewFolder);

            // Gets the server ID for new folder after change DeviceID.
            string serverId = TestSuiteBase.GetCollectionId(folderSyncResponseForNewFolder, newFolderName);
            TestSuiteBase.RecordCaseRelativeFolders(this.User3Information, serverId);
            #endregion
        }
Exemplo n.º 3
0
        public void MSASCMD_S04_TC09_FolderSync_DeleteFolder()
        {
            #region The client calls FolderCreate command to create a new folder as a child folder of the specified parent folder, then server returns ServerId for FolderCreate command.
            string folderName = Common.GenerateResourceName(Site, "FolderSync");
            FolderCreateResponse folderCreateResponse = this.GetFolderCreateResponse(this.LastFolderSyncKey, (byte)FolderType.UserCreatedMail, folderName, "0");
            Site.Assert.AreEqual <int>(1, int.Parse(folderCreateResponse.ResponseData.Status), "The server should return a status code 1 in the FolderCreate command response to indicate success.");
            #endregion

            #region Changes DeviceID.
            this.CMDAdapter.ChangeDeviceID("NewDeviceID");
            this.RecordDeviceInfoChanged();
            #endregion

            #region Calls method FolderSync to synchronize the collection hierarchy.
            FolderSyncRequest  folderSyncRequestForNewDeviceID  = Common.CreateFolderSyncRequest("0");
            FolderSyncResponse folderSyncResponseForNewDeviceID = this.CMDAdapter.FolderSync(folderSyncRequestForNewDeviceID);

            // Gets the server ID for new folder after change DeviceID.
            string serverId = TestSuiteBase.GetCollectionId(folderSyncResponseForNewDeviceID, folderName);
            Site.Assert.IsNotNull(serverId, "Call method GetServerId to get a non-null ServerId to indicate success.");
            #endregion

            #region The client calls FolderDelete command to delete the created folder in step 2 from the server.
            FolderDeleteRequest  folderDeleteRequest  = Common.CreateFolderDeleteRequest(folderSyncResponseForNewDeviceID.ResponseData.SyncKey, serverId);
            FolderDeleteResponse folderDeleteResponse = this.CMDAdapter.FolderDelete(folderDeleteRequest);
            Site.Assert.AreEqual <int>(1, int.Parse(folderDeleteResponse.ResponseData.Status), "The server should return a status code 1 in the FolderDelete command response to indicate success.");
            #endregion

            #region Restore DeviceID and call FolderSync command
            this.CMDAdapter.ChangeDeviceID(Common.GetConfigurationPropertyValue("DeviceID", this.Site));

            // The client calls FolderSync command to synchronize the collection hierarchy with original device id.
            FolderSyncRequest  folderSyncRequest  = Common.CreateFolderSyncRequest(folderCreateResponse.ResponseData.SyncKey);
            FolderSyncResponse folderSyncResponse = this.CMDAdapter.FolderSync(folderSyncRequest);
            Site.Assert.AreEqual <int>(1, int.Parse(folderSyncResponse.ResponseData.Status), "Server should return status 1 in the FolderSync response to indicate success.");
            Site.Assert.IsNotNull(folderSyncResponse.ResponseData.Changes, "Server should return Changes element in the FolderSync response after the collection hierarchy changed by call FolderDelete command.");
            Site.Assert.IsNotNull(folderSyncResponse.ResponseData.Changes.Delete, "Server should return Changes element in the FolderSync response after the specified folder deleted.");

            // Add the debug information
            Site.Log.Add(LogEntryKind.Debug, "Verify MS-ASCMD_R5863");

            // The folderDeleteSuccess is true indicates the folder which deleted by FolderDelete command is deleted successfully.
            // Verify MS-ASCMD requirement: MS-ASCMD_R5863
            Site.CaptureRequirementIfIsNotNull(
                folderSyncResponse.ResponseData.Changes.Delete[0].ServerId,
                5863,
                @"[In Delete(FolderSync)] [The Delete element] specifies that a folder on the server was deleted since the last folder synchronization.");
            #endregion
        }
Exemplo n.º 4
0
        public void MSASCMD_S04_TC04_FolderSync_Resynchronizes()
        {
            // The client calls FolderCreate command to create a new folder as a child folder of the specified parent folder, then server returns ServerId for FolderCreate command.
            string folderName = Common.GenerateResourceName(Site, "FolderSync");
            FolderCreateResponse folderCreateResponse = this.GetFolderCreateResponse(this.LastFolderSyncKey, (byte)FolderType.UserCreatedMail, folderName, "0");

            Site.Assert.AreEqual <int>(1, int.Parse(folderCreateResponse.ResponseData.Status), "The server should return a status code 1 in the FolderCreate command response to indicate success.");
            TestSuiteBase.RecordCaseRelativeFolders(this.User1Information, folderCreateResponse.ResponseData.ServerId);

            // The client calls FolderSync method to synchronize the collection hierarchy, then server returns latest folder SyncKey.
            FolderSyncResponse folderSyncResponse = this.FolderSync();

            // Add the debug information
            Site.Log.Add(LogEntryKind.Debug, "Verify MS-ASCMD_R5012");

            // Verify MS-ASCMD requirement: MS-ASCMD_R5012
            Site.CaptureRequirementIfAreEqual(
                folderCreateResponse.ResponseData.ServerId,
                TestSuiteBase.GetCollectionId(folderSyncResponse, folderName),
                5012,
                @"[In Synchronizing a Folder Hierarchy] Existing folderhierarchy:ServerId values do not change when the client resynchronizes.");
        }