/// <summary> /// Verify RopOptionsData Failure Response /// </summary> /// <param name="ropOptionsDataResponse">The failure response of RopOptionsData request</param> /// <param name="inputHandleIndex">The field of InputHandleIndex in RopOptionsData request</param> private void VerifyRopOptionsDataFailureResponse(RopOptionsDataResponse ropOptionsDataResponse, byte inputHandleIndex) { // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R4640"); // Verify MS-OXCROPS requirement: MS-OXCROPS_R4640 Site.CaptureRequirementIfAreEqual<Type>( typeof(byte), ropOptionsDataResponse.RopId.GetType(), 4640, @"[In RopOptionsData ROP Failure Response Buffer]RopId (1 byte): An unsigned integer."); // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R4642"); // Verify MS-OXCROPS requirement: MS-OXCROPS_R4642 Site.CaptureRequirementIfAreEqual<byte>( (byte)RopId.RopOptionsData, ropOptionsDataResponse.RopId, 4642, @"[In RopOptionsData ROP Failure Response Buffer]RopId (1 byte): For this operation[RopOptionsData], this field is set to 0x6F."); // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R4643"); // Verify MS-OXCROPS requirement: MS-OXCROPS_R4643 Site.CaptureRequirementIfAreEqual<Type>( typeof(byte), ropOptionsDataResponse.InputHandleIndex.GetType(), 4643, @"[In RopOptionsData ROP Failure Response Buffer]InputHandleIndex (1 byte): An unsigned integer."); // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R4644"); // Verify MS-OXCROPS requirement: MS-OXCROPS_R4644 Site.CaptureRequirementIfAreEqual<byte>( inputHandleIndex, ropOptionsDataResponse.InputHandleIndex, 4644, @"[In RopOptionsData 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_R4645"); // Verify MS-OXCROPS requirement: MS-OXCROPS_R4645 Site.CaptureRequirementIfAreEqual<Type>( typeof(uint), ropOptionsDataResponse.ReturnValue.GetType(), 4645, @"[In RopOptionsData ROP Failure Response Buffer]ReturnValue (4 bytes): An unsigned integer."); if (Common.IsRequirementEnabled(4691, this.Site)) { // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R4691,the actual value of the returnValue is {0}", ropOptionsDataResponse.ReturnValue); // Verify MS-OXCROPS requirement: MS-OXCROPS_R4691 Site.CaptureRequirementIfAreNotEqual<uint>( SuccessReturnValue, ropOptionsDataResponse.ReturnValue, 4691, @"[In Appendix B: Product Behavior] ReturnValue (4 bytes): For this response[Failure Response], Implementation does set this field to a value other than 0x00000000. (Microsoft Exchange Server 2010 and above follow this behavior.)"); } if (Common.IsRequirementEnabled(4690, this.Site)) { // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R4690"); // Verify MS-OXCROPS requirement: MS-OXCROPS_R4690 Site.CaptureRequirementIfAreEqual<uint>( SuccessReturnValue, ropOptionsDataResponse.ReturnValue, 4690, @"[In Appendix B: Product Behavior] Implementation does set the ReturnValue field for the RopOptionsData ROP response (section 2.2.7.9) to 0x00000000 regardless of the failure of the ROP. (<8> Section 2.2.7.9.3: Exchange 2007 sets the ReturnValue field for the RopOptionsData ROP response (section 2.2.7.9) to 0x00000000 regardless of the failure of the ROP.)"); } }
/// <summary> /// Verify RopOptionsData Success Response /// </summary> /// <param name="ropOptionsDataResponse">The success response of RopOptionsData request</param> /// <param name="inputHandleIndex">The field of InputHandleIndex in RopOptionsData request</param> private void VerifyRopOptionsDataSuccessResponse(RopOptionsDataResponse ropOptionsDataResponse, byte inputHandleIndex) { // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R2562"); // Verify MS-OXCROPS requirement: MS-OXCROPS_R2562 Site.CaptureRequirementIfAreEqual<Type>( typeof(byte), ropOptionsDataResponse.RopId.GetType(), 2562, @"[In RopOptionsData ROP Success Response Buffer]RopId (1 byte): An unsigned integer."); // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R2564"); // Verify MS-OXCROPS requirement: MS-OXCROPS_R2564 Site.CaptureRequirementIfAreEqual<byte>( (byte)RopId.RopOptionsData, ropOptionsDataResponse.RopId, 2564, @"[In RopOptionsData ROP Success Response Buffer,RopId (1 byte)]For this operation[RopOptionsData], this field is set to 0x6F."); // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R2565"); // Verify MS-OXCROPS requirement: MS-OXCROPS_R2565 Site.CaptureRequirementIfAreEqual<Type>( typeof(byte), ropOptionsDataResponse.InputHandleIndex.GetType(), 2565, @"[In RopOptionsData ROP Success Response Buffer]InputHandleIndex (1 byte): An unsigned integer."); // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R2566"); // Verify MS-OXCROPS requirement: MS-OXCROPS_R2566 Site.CaptureRequirementIfAreEqual<byte>( inputHandleIndex, ropOptionsDataResponse.InputHandleIndex, 2566, @"[In RopOptionsData 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_R2568"); // Verify MS-OXCROPS requirement: MS-OXCROPS_R2568 Site.CaptureRequirementIfAreEqual<Type>( typeof(uint), ropOptionsDataResponse.ReturnValue.GetType(), 2568, @"[In RopOptionsData ROP Success Response Buffer]ReturnValue (4 bytes): An unsigned integer."); // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R4687"); // Verify MS-OXCROPS requirement: MS-OXCROPS_R4687 Site.CaptureRequirementIfAreEqual<uint>( SuccessReturnValue, ropOptionsDataResponse.ReturnValue, 4687, @"[In RopOptionsData ROP Success Response Buffer]ReturnValue (4 bytes):For this response, this field is set to 0x00000000."); // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R2570"); // Verify MS-OXCROPS requirement: MS-OXCROPS_R2570 Site.CaptureRequirementIfAreEqual<Type>( typeof(byte), ropOptionsDataResponse.Reserved.GetType(), 2570, @"[In RopOptionsData ROP Success Response Buffer]Reserved (1 byte): Reserved."); // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R2571"); // Verify MS-OXCROPS requirement: MS-OXCROPS_R2571 Site.CaptureRequirementIfAreEqual<byte>( (byte)ResponseFlags.Reserved, ropOptionsDataResponse.Reserved, 2571, @"[In RopOptionsData ROP Success Response Buffer,Reserved (1 byte)]This field MUST be set to 0x01."); // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R2572"); // Verify MS-OXCROPS requirement: MS-OXCROPS_R2572 Site.CaptureRequirementIfAreEqual<Type>( typeof(ushort), ropOptionsDataResponse.OptionsInfoSize.GetType(), 2572, @"[In RopOptionsData ROP Success Response Buffer]OptionsInfoSize (2 bytes): An unsigned integer."); // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R2574"); // Verify MS-OXCROPS requirement: MS-OXCROPS_R2574 Site.CaptureRequirementIfAreEqual<Type>( typeof(byte[]), ropOptionsDataResponse.OptionsInfo.GetType(), 2574, @"[In RopOptionsData ROP Success Response Buffer]OptionsInfo (variable): An array of bytes."); if (Common.IsRequirementEnabled(2578, this.Site)) { bool isVerifyR2578 = true; if (ropOptionsDataResponse.OptionsInfo.Length != 0) { foreach (byte item in ropOptionsDataResponse.OptionsInfo) { if (item != 0) { isVerifyR2578 = false; break; } } } // Add the comment information for debugging Site.Log.Add(LogEntryKind.Comment, "Verify MS-OXCROPS_R2578,OptionsInfo.Length:{0}", ropOptionsDataResponse.OptionsInfo.Length); // Verify MS-OXCROPS requirement: 2578 Site.CaptureRequirementIfIsTrue( isVerifyR2578, 2578, @"[In Appendix B: Product Behavior] Implementation does return this field[OptionsInfo] as an empty array. (Microsoft Exchange Server 2013 follow this behavior.)"); } if (Common.IsRequirementEnabled(2928, this.Site)) { // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R2928, the actual length of the OptionsInfo is {0}", ropOptionsDataResponse.OptionsInfo.Length); // Verify MS-OXCROPS requirement: MS-OXCROPS_R2928 bool isVerifyR2928 = ropOptionsDataResponse.OptionsInfo.Length > 0; Site.CaptureRequirementIfIsTrue( isVerifyR2928, 2928, @"[In Appendix B: Product Behavior] Implementation does not return [OptionsInfo (variable) field as] an empty array in the OptionsInfo field. (<7> Section 2.2.7.9.2: Exchange 2007, and Exchange 2010 do not return an empty array in the OptionsInfo field.)"); } // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R2580"); // Verify MS-OXCROPS requirement: MS-OXCROPS_R2580 // SUT is exchange 2007 and exchange 2010 if program go through here, OptionsInfo does not return an empty array Site.CaptureRequirementIfAreEqual<ushort>( ropOptionsDataResponse.OptionsInfoSize, (ushort)ropOptionsDataResponse.OptionsInfo.Length, 2580, @"[In RopOptionsData ROP Success Response Buffer,OptionsInfo (variable)]The size of this field, in bytes, is specified by the OptionsInfoSize field."); // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R2581"); // Verify MS-OXCROPS requirement: MS-OXCROPS_R2581 Site.CaptureRequirementIfAreEqual<Type>( typeof(ushort), ropOptionsDataResponse.HelpFileSize.GetType(), 2581, @"[In RopOptionsData ROP Success Response Buffer]HelpFileSize (2 bytes): An unsigned integer."); // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R2583"); // Verify MS-OXCROPS requirement: MS-OXCROPS_R2583 Site.CaptureRequirementIfAreEqual<Type>( typeof(byte[]), ropOptionsDataResponse.HelpFile.GetType(), 2583, @"[In RopOptionsData ROP Success Response Buffer]HelpFile (variable): An array of bytes."); // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R2585"); // Verify MS-OXCROPS requirement: MS-OXCROPS_R2585 Site.CaptureRequirementIfAreEqual<ushort>( ropOptionsDataResponse.HelpFileSize, (ushort)ropOptionsDataResponse.HelpFile.Length, 2585, @"[In RopOptionsData ROP Success Response Buffer,HelpFile (variable)]The size of this field, in bytes, is specified by the HelpFileSize field."); }