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
}