Microsoft.Protocols.TestSuites.MS_OXCROPS.S08_PermissionROPs.MSOXCROPS_S08_TC01_TestRopGetAndModifyPermissions C# (CSharp) Method

MSOXCROPS_S08_TC01_TestRopGetAndModifyPermissions() private method

private MSOXCROPS_S08_TC01_TestRopGetAndModifyPermissions ( ) : void
return void
        public void MSOXCROPS_S08_TC01_TestRopGetAndModifyPermissions()
        {
            this.CheckTransportIsSupported();

            this.cropsAdapter.RpcConnect(
                Common.GetConfigurationPropertyValue("SutComputerName", this.Site),
                ConnectionType.PrivateMailboxServer,
                Common.GetConfigurationPropertyValue("UserEssdn", this.Site),
                Common.GetConfigurationPropertyValue("Domain", this.Site),
                Common.GetConfigurationPropertyValue("AdminUserName", this.Site),
                Common.GetConfigurationPropertyValue("PassWord", this.Site));

            // Step 1: Preparations-Open folder and create a subfolder, then get it's handle.
            #region Common operations

            RopLogonResponse logonResponse = Logon(LogonType.Mailbox, this.userDN, out inputObjHandle);
            uint folderHandle = GetFolderObjectHandle(ref logonResponse);

            #endregion

            // Step 2: Construct RopGetPermissionsTable request.
            #region RopGetPermissionsTable request

            RopGetPermissionsTableRequest getPermissionsTableRequest;

            getPermissionsTableRequest.RopId = (byte)RopId.RopGetPermissionsTable;

            getPermissionsTableRequest.LogonId = TestSuiteBase.LogonId;
            getPermissionsTableRequest.InputHandleIndex = TestSuiteBase.InputHandleIndex0;
            getPermissionsTableRequest.OutputHandleIndex = TestSuiteBase.OutputHandleIndex1;
            getPermissionsTableRequest.TableFlags = (byte)PermTableFlags.IncludeFreeBusy;

            #endregion

            // Step 3: Construct RopSetColumns request.
            #region RopSetColumns request

            // Call CreatePermissionPropertyTags method to create Permission PropertyTags.
            PropertyTag[] propertyTags = this.CreatePermissionPropertyTags();
            RopSetColumnsRequest setColumnsRequest;

            setColumnsRequest.RopId = (byte)RopId.RopSetColumns;
            setColumnsRequest.LogonId = TestSuiteBase.LogonId;
            setColumnsRequest.InputHandleIndex = TestSuiteBase.InputHandleIndex1;
            setColumnsRequest.PropertyTagCount = (ushort)propertyTags.Length;
            setColumnsRequest.PropertyTags = propertyTags;
            setColumnsRequest.SetColumnsFlags = (byte)AsynchronousFlags.None;

            #endregion

            // Step 4: Construct RopQueryRows request.
            #region RopQueryRows request

            RopQueryRowsRequest queryRowsRequest;

            queryRowsRequest.RopId = (byte)RopId.RopQueryRows;
            queryRowsRequest.LogonId = TestSuiteBase.LogonId;
            queryRowsRequest.InputHandleIndex = TestSuiteBase.InputHandleIndex1;
            queryRowsRequest.QueryRowsFlags = (byte)QueryRowsFlags.Advance;

            // TRUE: read the table forwards.
            queryRowsRequest.ForwardRead = TestSuiteBase.NonZero;

            // Maximum number of rows to be returned
            queryRowsRequest.RowCount = TestSuiteBase.RowCount;

            #endregion

            // Step 5: Send the Multiple ROPs request and verify the success response.
            #region Multiple ROPs

            List<ISerializable> requests = new List<ISerializable>();
            List<IDeserializable> ropResponses = new List<IDeserializable>();
            List<uint> handleList = new List<uint>
            {
                folderHandle,
                TestSuiteBase.DefaultFolderHandle
            };
            requests.Add(getPermissionsTableRequest);
            requests.Add(setColumnsRequest);
            requests.Add(queryRowsRequest);

            // Add the debug information
            Site.Log.Add(LogEntryKind.Debug, "Step 5: Begin to send the Multiple ROPs request.");

            // Send the Multiple ROPs request and verify the success response.
            this.responseSOHs = cropsAdapter.ProcessMutipleRops(
                requests,
                handleList,
                ref ropResponses,
                ref this.rawData,
                RopResponseType.SuccessResponse);
            RopGetPermissionsTableResponse getPermissionsTableResponse = (RopGetPermissionsTableResponse)ropResponses[0];
            RopSetColumnsResponse setColumnsResponse = (RopSetColumnsResponse)ropResponses[1];
            RopQueryRowsResponse queryRowsResponse = (RopQueryRowsResponse)ropResponses[2];

            // Send the RopModifyPermissions request and verify response.
            #region RopModifyPermissions request

            RopModifyPermissionsRequest modifyPermissionsRequest;
            PermissionData[] permissionsDataArray = this.GetPermissionDataArray();

            modifyPermissionsRequest.RopId = (byte)RopId.RopModifyPermissions;
            modifyPermissionsRequest.LogonId = TestSuiteBase.LogonId;
            modifyPermissionsRequest.InputHandleIndex = TestSuiteBase.InputHandleIndex0;
            modifyPermissionsRequest.ModifyFlags = (byte)ModifyFlags.IncludeFreeBusy;
            modifyPermissionsRequest.ModifyCount = (ushort)permissionsDataArray.Length;
            modifyPermissionsRequest.PermissionsData = permissionsDataArray;

            // Add the debug information
            Site.Log.Add(LogEntryKind.Debug, "Step 5: Begin to send the RopModifyPermissions request.");

            this.responseSOHs = cropsAdapter.ProcessSingleRop(
                modifyPermissionsRequest,
                folderHandle,
                ref this.response,
                ref this.rawData,
                RopResponseType.SuccessResponse);
            RopModifyPermissionsResponse modifyPermissionsResponse = (RopModifyPermissionsResponse)response;

            #endregion

            bool isRopsSuccess = (getPermissionsTableResponse.ReturnValue == TestSuiteBase.SuccessReturnValue)
                                 && (setColumnsResponse.ReturnValue == TestSuiteBase.SuccessReturnValue)
                                 && (queryRowsResponse.ReturnValue == TestSuiteBase.SuccessReturnValue)
                                 && (modifyPermissionsResponse.ReturnValue == TestSuiteBase.SuccessReturnValue);
            Site.Assert.IsTrue(isRopsSuccess, "If ROP succeeds, the ReturnValue of its response is 0 (success)");

            #endregion
        }