Microsoft.Protocols.TestSuites.MS_OXCROPS.TestSuiteBase.GetFolderObjectHandle C# (CSharp) Method

GetFolderObjectHandle() protected method

Get Folder Object Handle.
protected GetFolderObjectHandle ( RopLogonResponse &logonResponse ) : uint
logonResponse Microsoft.Protocols.TestSuites.Common.RopLogonResponse The response of RopLogon
return uint
        protected uint GetFolderObjectHandle(ref RopLogonResponse logonResponse)
        {
            // Step 1: Open a folder.
            #region Open folder

            RopOpenFolderRequest openFolderRequest;
            RopOpenFolderResponse openFolderResponse;

            openFolderRequest.RopId = (byte)RopId.RopOpenFolder;

            openFolderRequest.LogonId = LogonId;
            openFolderRequest.InputHandleIndex = InputHandleIndex0;
            openFolderRequest.OutputHandleIndex = OutputHandleIndex1;
            openFolderRequest.FolderId = logonResponse.FolderIds[4];
            openFolderRequest.OpenModeFlags = (byte)FolderOpenModeFlags.None;

            // Add the debug information
            Site.Log.Add(LogEntryKind.Debug, "Step 1: Begin to send the RopOpenFolder request in GetFolderObjectHandle method.");

            // Send the RopOpenFolder request to open folder.
            this.responseSOHs = this.cropsAdapter.ProcessSingleRop(
                openFolderRequest,
                this.inputObjHandle,
                ref this.response,
                ref this.rawData,
                RopResponseType.SuccessResponse);
            openFolderResponse = (RopOpenFolderResponse)this.response;

            Site.Assert.AreEqual<uint>(
                TestSuiteBase.SuccessReturnValue,
                openFolderResponse.ReturnValue,
                "If ROP succeeds, the ReturnValue of its response is 0 (success0");

            uint openedFolderHandle = this.responseSOHs[0][openFolderResponse.OutputHandleIndex];

            #endregion

            // Step 2: Create subfolder.
            #region Create subfolder

            RopCreateFolderRequest createFolderRequest;
            RopCreateFolderResponse createFolderResponse;

            createFolderRequest.RopId = (byte)RopId.RopCreateFolder;
            createFolderRequest.LogonId = LogonId;
            createFolderRequest.InputHandleIndex = InputHandleIndex0;
            createFolderRequest.OutputHandleIndex = OutputHandleIndex1;
            createFolderRequest.FolderType = (byte)FolderType.Genericfolder;
            createFolderRequest.UseUnicodeStrings = Convert.ToByte(Zero);
            createFolderRequest.OpenExisting = NonZero;
            createFolderRequest.Reserved = Reserved;
            createFolderRequest.DisplayName = Encoding.ASCII.GetBytes(DisplayNameAndCommentForNonSearchFolder + "\0");
            createFolderRequest.Comment = Encoding.ASCII.GetBytes(DisplayNameAndCommentForNonSearchFolder + "\0");

            // Add the debug information
            Site.Log.Add(LogEntryKind.Debug, "Step 2: Begin to send the RopCreateFolder request in GetFolderObjectHandle method.");

            // Send the RopCreateFolder request and verify the success response.
            this.responseSOHs = this.cropsAdapter.ProcessSingleRop(
                createFolderRequest,
                openedFolderHandle,
                ref this.response,
                ref this.rawData,
                RopResponseType.SuccessResponse);
            createFolderResponse = (RopCreateFolderResponse)this.response;
            Site.Assert.AreEqual<uint>(
                TestSuiteBase.SuccessReturnValue,
                createFolderResponse.ReturnValue,
                "If ROP succeeds, the ReturnValue of its response is 0 (success0");

            #endregion

            // Step 3: Get and return the handle of created folder.
            uint folderHandle = this.responseSOHs[0][createFolderResponse.OutputHandleIndex];
            return folderHandle;
        }