/// <summary> /// Verify RopGetPropertiesList Failure Response /// </summary> /// <param name="ropGetPropertiesListResponse">The failure response of RopGetPropertiesList request</param> /// <param name="inputHandleIndex">The field of InputHandleIndex in ROP RopGetPropertiesList request</param> private void VerifyRopGetPropertiesListFailureResponse(RopGetPropertiesListResponse ropGetPropertiesListResponse, byte inputHandleIndex) { // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R2777"); // Verify MS-OXCROPS requirement: MS-OXCROPS_R2777 Site.CaptureRequirementIfAreEqual<Type>( typeof(byte), ropGetPropertiesListResponse.RopId.GetType(), 2777, @"[In RopGetPropertiesList ROP Failure Response Buffer]RopId (1 byte): An unsigned integer."); // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R2779"); // Verify MS-OXCROPS requirement: MS-OXCROPS_R2779 Site.CaptureRequirementIfAreEqual<byte>( (byte)RopId.RopGetPropertiesList, ropGetPropertiesListResponse.RopId, 2779, @"[In RopGetPropertiesList ROP Failure Response Buffer,RopId (1 byte)]For this operation[RopGetPropertiesList], this field is set to 0x09."); // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R2780"); // Verify MS-OXCROPS requirement: MS-OXCROPS_R2780 Site.CaptureRequirementIfAreEqual<Type>( typeof(byte), ropGetPropertiesListResponse.InputHandleIndex.GetType(), 2780, @"[In RopGetPropertiesList ROP Failure Response Buffer]InputHandleIndex (1 byte): An unsigned integer."); // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R2781"); // Verify MS-OXCROPS requirement: MS-OXCROPS_R2781 Site.CaptureRequirementIfAreEqual<byte>( inputHandleIndex, ropGetPropertiesListResponse.InputHandleIndex, 2781, @"[In RopGetPropertiesList ROP Failure Response Buffer,InputHandleIndex (1 byte)]This index MUST be set to the value specified in the InputHandleIndex field in the request."); // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R2783"); // Verify MS-OXCROPS requirement: MS-OXCROPS_R2783 Site.CaptureRequirementIfAreEqual<Type>( typeof(uint), ropGetPropertiesListResponse.ReturnValue.GetType(), 2783, @"[In RopGetPropertiesList ROP Failure Response Buffer]ReturnValue (4 bytes): An unsigned integer."); // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R2785"); // Verify MS-OXCROPS requirement: MS-OXCROPS_R2785 Site.CaptureRequirementIfAreNotEqual<uint>( SuccessReturnValue, ropGetPropertiesListResponse.ReturnValue, 2785, @"[In RopGetPropertiesList ROP Failure Response Buffer,ReturnValue (4 bytes)]For this response[Failure Response ], this field is set to a value other than 0x00000000."); }
/// <summary> /// Verify the RopGetPropertiesList operation related requirements. /// </summary> /// <param name="ropGetPropertiesListResponse">The RopGetPropertiesList response buffer structure.</param> /// <param name="objectType">Indicates which object type the RopGetPropertiesList operation is acting on.</param> private void VerifyRopGetPropertiesList(RopGetPropertiesListResponse ropGetPropertiesListResponse, ServerObjectType objectType) { // Since the RopGetPropertiesList ROP response was parsed successfully, MS-OXCPRPT_R47102 can be captured directly. Site.CaptureRequirement( 47102, @"[In Processing RopGetPropertiesList] The server responds with a RopGetPropertiesList ROP response buffer."); if (ropGetPropertiesListResponse.ReturnValue.Equals((uint)CPRPTErrorCode.None)) { if (objectType == ServerObjectType.Message) { // If the object type this operation acting on is Message object and this operation is performed successfully, then the following requirement can be captured. Site.CaptureRequirement( 9701, @"[In RopGetPropertiesList ROP] This operation[RopGetPropertiesList ROP] is valid on Message objects."); } if (objectType == ServerObjectType.Folder) { // If the object type this operation acting on is Folder object and this operation is performed successfully, then the following requirement can be captured. Site.CaptureRequirement( 9702, @"[In RopGetPropertiesList ROP] This operation[RopGetPropertiesList ROP] is valid on Folder objects."); } if (objectType == ServerObjectType.Attachment) { // If the object type this operation acting on is Attachment object and this operation is performed successfully, then the following requirement can be captured. Site.CaptureRequirement( 9703, @"[In RopGetPropertiesList ROP] This operation[RopGetPropertiesList ROP] is valid on Attachment objects."); } if (objectType == ServerObjectType.Logon) { // If the object type this operation acting on is Logon object and this operation is performed successfully, then the following requirement can be captured. Site.CaptureRequirement( 9704, @"[In RopGetPropertiesList ROP] This operation[RopGetPropertiesList ROP] is valid on Logon objects."); } } if (ropGetPropertiesListResponse.PropertyTagCount != 0x00) { foreach (PropertyTag propertyTag in ropGetPropertiesListResponse.PropertyTags) { this.VerifyPropertyTagInCDATA(propertyTag); } } ushort numberOfPropertyTag = 0; if (ropGetPropertiesListResponse.PropertyTagCount > 0) { numberOfPropertyTag = (ushort)ropGetPropertiesListResponse.PropertyTags.Length; // The parser has ensured the field satisfied the format, otherwise the response cannot be received. Site.CaptureRequirement( 100, @"[In RopGetPropertiesList ROP Response Buffer] PropertyTags (variable): An array of PropertyTag structures ([MS-OXCDATA] section 2.9). "); } Site.CaptureRequirementIfAreEqual<ushort>( numberOfPropertyTag, ropGetPropertiesListResponse.PropertyTagCount, 9903, @"[In RopGetPropertiesList ROP Response Buffer] PropertyTagCount: An integer that specifies the number of property tags contained in the PropertyTags field."); // The parser has ensured the field satisfied the format, otherwise the response cannot be received. Site.CaptureRequirement( 99, @"[In RopGetPropertiesList ROP Response Buffer] PropertyTagCount: 2 bytes integer."); }
/// <summary> /// Verify RopGetPropertiesList Success Response /// </summary> /// <param name="ropGetPropertiesListResponse">The success response of RopGetPropertiesList request</param> /// <param name="inputHandleIndex">The field of InputHandleIndex in RopGetPropertiesList request</param> private void VerifyRopGetPropertiesListSuccessResponse(RopGetPropertiesListResponse ropGetPropertiesListResponse, byte inputHandleIndex) { // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R2762"); // Verify MS-OXCROPS requirement: MS-OXCROPS_R2762 Site.CaptureRequirementIfAreEqual<Type>( typeof(byte), ropGetPropertiesListResponse.RopId.GetType(), 2762, @"[In RopGetPropertiesList ROP Success Response Buffer]RopId (1 byte): An unsigned integer."); // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R2764"); // Verify MS-OXCROPS requirement: MS-OXCROPS_R2764 Site.CaptureRequirementIfAreEqual<byte>( (byte)RopId.RopGetPropertiesList, ropGetPropertiesListResponse.RopId, 2764, @"[In RopGetPropertiesList ROP Success Response Buffer,RopId (1 byte)]For this operation[RopGetPropertiesList], this field is set to 0x09."); // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R2765"); // Verify MS-OXCROPS requirement: MS-OXCROPS_R2765 Site.CaptureRequirementIfAreEqual<Type>( typeof(byte), ropGetPropertiesListResponse.InputHandleIndex.GetType(), 2765, @"[In RopGetPropertiesList ROP Success Response Buffer]InputHandleIndex (1 byte): An unsigned integer."); // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R2766"); // Verify MS-OXCROPS requirement: MS-OXCROPS_R2766 Site.CaptureRequirementIfAreEqual<byte>( inputHandleIndex, ropGetPropertiesListResponse.InputHandleIndex, 2766, @"[In RopGetPropertiesList ROP Success Response Buffer,InputHandleIndex (1 byte)]This index MUST be set to the value specified in the InputHandleIndex field in the request."); // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R2768"); // Verify MS-OXCROPS requirement: MS-OXCROPS_R2768 Site.CaptureRequirementIfAreEqual<Type>( typeof(uint), ropGetPropertiesListResponse.ReturnValue.GetType(), 2768, @"[In RopGetPropertiesList ROP Success Response Buffer]ReturnValue (4 bytes): An unsigned integer."); // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R2770"); // Verify MS-OXCROPS requirement: MS-OXCROPS_R2770 Site.CaptureRequirementIfAreEqual<uint>( SuccessReturnValue, ropGetPropertiesListResponse.ReturnValue, 2770, @"[In RopGetPropertiesList ROP Success Response Buffer,ReturnValue (4 bytes)]For this response[Success Response ], this field is set to 0x00000000."); // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R2771"); // Verify MS-OXCROPS requirement: MS-OXCROPS_R2771 Site.CaptureRequirementIfAreEqual<Type>( typeof(ushort), ropGetPropertiesListResponse.PropertyTagCount.GetType(), 2771, @"[In RopGetPropertiesList ROP Success Response Buffer]PropertyTagCount (2 bytes): An unsigned integer."); // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R2773"); // Verify MS-OXCROPS requirement: MS-OXCROPS_R2773 Site.CaptureRequirementIfAreEqual<Type>( typeof(PropertyTag[]), ropGetPropertiesListResponse.PropertyTags.GetType(), 2773, @"[In RopGetPropertiesList ROP Success Response Buffer]PropertyTags (variable): An array of PropertyTag structures."); // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R2774"); // Verify MS-OXCROPS requirement: MS-OXCROPS_R2774 Site.CaptureRequirementIfAreEqual<int>( ropGetPropertiesListResponse.PropertyTagCount, ropGetPropertiesListResponse.PropertyTags.Length, 2774, @"[In RopGetPropertiesList ROP Success Response Buffer,PropertyTags (variable)]The number of structures contained in this field is specified by the PropertyTagCount field."); }