public void MSOXWSCORE_S01_TC13_VerifyItemWithDateTimePrecisionEnums() { Site.Assume.IsTrue(Common.IsRequirementEnabled(1256, this.Site), "Exchange 2007 does not support the DateTimePrecision element."); // Clear the soap headers. this.ClearSoapHeaders(); string[] dateTimePrecisionTypes = new string[] { "Seconds", "Milliseconds" }; #region Step 1: Create the item. ItemType item = new ItemType(); ItemIdType[] createdItemIds = this.CreateItemWithMinimumElements(item); #endregion // Define an item array to store the items got from GetItem operation response. // Each item should contain a DisposalType value as its element's value ItemType[] items = new ItemType[dateTimePrecisionTypes.Length]; XmlElement[] lastRawResponses = new XmlElement[dateTimePrecisionTypes.Length]; for (int i = 0; i < dateTimePrecisionTypes.Length; i++) { DateTimePrecisionType dateTimePrecision = new DateTimePrecisionType(); dateTimePrecision.Text = new string[1]; dateTimePrecision.Text[0] = dateTimePrecisionTypes[i]; #region Step 2: Configure the DateTimePrecision. Dictionary<string, object> soapHeaders = new Dictionary<string, object>(); soapHeaders.Add("DateTimePrecision", dateTimePrecision); this.COREAdapter.ConfigureSOAPHeader(soapHeaders); #endregion #region Step 3: Get the item. // Call the GetItem operation. GetItemResponseType getItemResponse = this.CallGetItemOperation(createdItemIds); // Get the LastRawResponseXml. lastRawResponses[i] = (XmlElement)this.COREAdapter.LastRawResponseXml; // Check the operation response. Common.CheckOperationSuccess(getItemResponse, 1, this.Site); ItemType[] getItems = Common.GetItemsFromInfoResponse<ItemType>(getItemResponse); // One item should be returned. Site.Assert.AreEqual<int>( 1, getItems.GetLength(0), "One item should be returned! Expected Item Count: {0}, Actual Item Count: {1}", 1, getItems.GetLength(0)); Site.Assert.IsTrue(this.IsSchemaValidated, "The schema should be validated."); items[i] = getItems[0]; #endregion } if (Common.IsRequirementEnabled(132502, this.Site)) { // Add the debug information this.Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSCDATA_R132502"); // Verify MS-OXWSCORE requirement: MS-OXWSCDATA_R132502 // The schema is validated and the DateTimePrecision element is set in request, so this requirement can be captured. this.Site.CaptureRequirement( "MS-OXWSCDATA", 132502, @"[In Appendix C: Product Behavior] Implementation does include the DateTimePrecision element which specifies precision of DateTime values that are returned in responses. This element is optional. <xs:element name=""DateTimePrecision"" type=""t:DateTimePrecisionType"" /> (Exchange 2013 and above follow this behavior.)"); // Add the debug information this.Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSCORE_R1256"); // Verify MS-OXWSCORE requirement: MS-OXWSCORE_R1256 // The DateTimePrecision SOAP header is set in request and the schema is validated, so this requirement can be captured. this.Site.CaptureRequirement( 1256, @"[In Appendix C: Product Behavior] Implementation does introduce the DateTimePrecision SOAP header. (<98> Section 3.1.4.4.1.1: The DateTimePrecision SOAP header was introduced in Microsoft Exchange Server 2010 Service Pack 2 (SP2). (Exchange 2013 Preview and above follow this behavior).)"); } if (Common.IsRequirementEnabled(1816, this.Site)) { // Add the debug information this.Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSCDATA_R1816"); // Verify MS-OXWSCORE requirement: MS-OXWSCDATA_R1816 // The DateTimePrecision SOAP header is set in request and the schema is validated, so this requirement can be captured. this.Site.CaptureRequirement( "MS-OXWSCDATA", 1816, @"[In Appendix C: Product Behavior] Implementation does introduce the DateTimePrecisionType simple type. (<8> Section 2.2.3.3: The DateTimePrecisionType simple type was introduced in Exchange 2010 SP2 (Exchange 2013 and above follow this behavior).)"); this.Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSCORE_R1670"); // Verify MS-OXWSCORE requirement: MS-OXWSCORE_R1670 this.Site.CaptureRequirementIfIsTrue( this.IsExpectedDateTimePrecision(lastRawResponses[0], dateTimePrecisionTypes[0]), 1670, @"[In tns:GetItemSoapIn Message] The value ""Seconds"" of ""DateTimePrecision"" which specifies that the precision for date/time return values is seconds."); // Add the debug information this.Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSCORE_R1671"); // Verify MS-OXWSCORE requirement: MS-OXWSCORE_R1671 this.Site.CaptureRequirementIfIsTrue( this.IsExpectedDateTimePrecision(lastRawResponses[1], dateTimePrecisionTypes[1]), 1671, @"[In tns:GetItemSoapIn Message] The value ""Milliseconds"" of ""DateTimePrecision"" which specifies that the precision for date/time return values is milliseconds."); // Add the debug information this.Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSCORE_R1162"); // Verify MS-OXWSCORE requirement: MS-OXWSCORE_R1162 // After R1670 or R1671 was verified successfully, R1162 can be verified. this.Site.CaptureRequirement( 1162, @"[In tns:GetItemSoapIn Message] [The part ""DateTimePrecision""] Specifies a SOAP header that identifies the resolution of date/time values in responses from the server, either in seconds or in milliseconds."); // Clear the soap header. this.ClearSoapHeaders(); } }