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
}