public void MSOXWSCORE_S01_TC09_VerifyItemWithWithAllElement()
{
#region Step 1: Create the item.
ItemType[] items = new ItemType[1];
items[0] = this.CreateFullPropertiesItem();
CreateItemResponseType createItemResponse = this.CallCreateItemOperation(DistinguishedFolderIdNameType.inbox, items);
// Check the operation response.
Common.CheckOperationSuccess(createItemResponse, 1, this.Site);
ItemIdType[] createdItemIds = Common.GetItemIdsFromInfoResponse(createItemResponse);
// One created item should be returned.
Site.Assert.AreEqual<int>(
1,
createdItemIds.GetLength(0),
"One created item should be returned! Expected Item Count: {0}, Actual Item Count: {1}",
1,
createdItemIds.GetLength(0));
#endregion
#region Step 2: Get the item.
GetItemType getItem = new GetItemType();
GetItemResponseType getItemResponse = new GetItemResponseType();
// The Item properties returned.
getItem.ItemShape = new ItemResponseShapeType();
getItem.ItemShape.BaseShape = DefaultShapeNamesType.AllProperties;
List<PathToUnindexedFieldType> pathToUnindexedFields = new List<PathToUnindexedFieldType>();
if (Common.IsRequirementEnabled(1354, this.Site))
{
PathToUnindexedFieldType pathToUnindexedField = new PathToUnindexedFieldType();
pathToUnindexedField.FieldURI = UnindexedFieldURIType.itemPreview;
pathToUnindexedFields.Add(pathToUnindexedField);
}
if (Common.IsRequirementEnabled(1731, this.Site))
{
PathToUnindexedFieldType pathToUnindexedField = new PathToUnindexedFieldType();
pathToUnindexedField.FieldURI = UnindexedFieldURIType.itemTextBody;
pathToUnindexedFields.Add(pathToUnindexedField);
}
if (pathToUnindexedFields.Count > 0)
{
getItem.ItemShape.AdditionalProperties = pathToUnindexedFields.ToArray();
}
// The item to get.
getItem.ItemIds = createdItemIds;
getItemResponse = this.COREAdapter.GetItem(getItem);
// 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.");
ItemIdType[] itemIds = Common.GetItemIdsFromInfoResponse(getItemResponse);
ItemIdId itemIdId = this.ITEMIDAdapter.ParseItemId(itemIds[0]);
// Add the debug information
Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSITEMID_R63");
// Verify MS-OXWSITEMID requirement: MS-OXWSITEMID_R63
Site.CaptureRequirementIfAreEqual<IdStorageType>(
IdStorageType.MailboxItemMailboxGuidBased,
itemIdId.StorageType,
"MS-OXWSITEMID",
63,
@"[In Id Storage Type (byte)] Its [Id Storage Type's] value maps to the following enumeration value.
/// <summary>
/// Indicates which type of storage is used for the item/folder represented by this Id.
/// </summary>
internal enum IdStorageType : byte
{
[ /// <summary>
/// The Id represents an item or folder in a mailbox and
/// it contains a primary SMTP address.
/// </summary>
MailboxItemSmtpAddressBased = 0,
/// <summary>
/// The Id represents a folder in a PublicFolder store.
/// </summary>
PublicFolder = 1,
/// <summary>
/// The Id represents an item in a PublicFolder store.
/// </summary>
PublicFolderItem = 2,
]
/// <summary>
/// The Id represents an item or folder in a mailbox and contains a mailbox GUID.
/// </summary>
MailboxItemMailboxGuidBased = 3,
[
/// <summary>
/// The Id represents a conversation in a mailbox and contains a mailbox GUID.
/// </summary>
ConversationIdMailboxGuidBased = 4,
/// <summary>
/// The Id represents (by objectGuid) an object in the Active Directory.
/// </summary>
ActiveDirectoryObject = 5,]
}");
// Add the debug information
this.Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSCORE_R156");
// Verify MS-OXWSCORE requirement: MS-OXWSCORE_R156
this.Site.CaptureRequirementIfAreEqual<string>(
createdItemIds[0].Id,
getItems[0].ItemId.Id,
156,
@"[In t:ItemIdType Complex Type] [The attribute ""Id""] Specifies an item identifier.");
// Add the debug information
this.Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSCORE_R298");
// Verify MS-OXWSCORE requirement: MS-OXWSCORE_R298
// The created item was got successfully, so R298 can be captured.
this.Site.CaptureRequirement(
298,
@"[In m:CreateItemType Complex Type] [The element ""SavedItemFolderId""] Specifies the folder in which new items are saved.");
#endregion
#region Capture Code
// Verify the ItemIdType.
this.VerifyItemIdType(getItems[0].ItemId);
// Verify the FolderIdType.
this.VerifyFolderIdType(getItems[0].ParentFolderId);
// Verify the ItemClassType.
this.VerifyItemClassType(getItems[0].ItemClass, items[0].ItemClass);
// Verify the Subject.
this.VerifySubject(getItems[0].Subject, items[0].Subject);
// Verify the SensitivityChoicesType.
this.VerifySensitivityChoicesType(getItems[0].Sensitivity, items[0].Sensitivity);
// Verify the BodyType.
this.VerifyBodyType(getItems[0].Body, items[0].Body);
// Verify the ArrayOfStringsType.
this.VerifyArrayOfStringsType(getItems[0].Categories, items[0].Categories);
// Verify the ImportanceChoicesType.
this.VerifyImportanceChoicesType(getItems[0].ImportanceSpecified, getItems[0].Importance, items[0].Importance);
// Verify the InReplyTo.
this.VerifyInReplyTo(getItems[0].InReplyTo, items[0].InReplyTo);
// Verify the NonEmptyArrayOfResponseObjectsType.
this.VerifyNonEmptyArrayOfResponseObjectsType(getItems[0].ResponseObjects);
// Verify the ReminderDueBy.
this.VerifyReminderDueBy(getItems[0].ReminderDueBySpecified, getItems[0].ReminderDueBy, items[0].ReminderDueBy);
// Verify the ReminderIsSet.
this.VerifyReminderIsSet(getItems[0].ReminderIsSetSpecified);
// Verify the DisplyTo.
this.VerifyDisplayTo(getItems[0].DisplayTo);
// Verify the DisplyCc.
this.VerifyDisplayCc(getItems[0].DisplayCc);
// Verify the Culture.
this.VerifyCulture(getItems[0].Culture, items[0].Culture);
// Verify the LastModifiedName.
this.VerifyLastModifiedName(getItems[0].LastModifiedName, Common.GetConfigurationPropertyValue("User1Name", this.Site));
// Verify the EffectiveRightsType.
this.VerifyEffectiveRightsType(getItems[0].EffectiveRights);
// Verify the FlagType.
this.VerifyFlagType(getItems[0].Flag);
// Verify the Preview.
this.VerifyPreview(getItems[0].Preview, getItems[0].Body.Value);
// Verify the TextBody.
this.VerifyTextBody(getItems[0].TextBody);
// Verify the InstanceKey.
this.VerifyInstanceKey(getItems[0].InstanceKey);
// Add the debug information
Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSCORE_R1315");
// Verify MS-OXWSCORE requirement: MS-OXWSCORE_R1315
Site.CaptureRequirementIfIsTrue(
getItems[0].DateTimeReceivedSpecified,
1315,
@"[In t:ItemType Complex Type] The type of DateTimeReceived is xs:dateTime [XMLSCHEMA2].");
// Add the debug information
Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSCORE_R1316");
// Verify MS-OXWSCORE requirement: MS-OXWSCORE_R1316
Site.CaptureRequirementIfIsTrue(
getItems[0].SizeSpecified,
1316,
@"[In t:ItemType Complex Type] The type of Size is xs:int [XMLSCHEMA2].");
// Add the debug information
Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSCORE_R1320");
// Verify MS-OXWSCORE requirement: MS-OXWSCORE_R1320
Site.CaptureRequirementIfIsTrue(
getItems[0].IsSubmittedSpecified,
1320,
@"[In t:ItemType Complex Type] The type of IsSubmitted is xs:boolean [XMLSCHEMA2].");
// Add the debug information
Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSCORE_R1607");
// Verify MS-OXWSCORE requirement: MS-OXWSCORE_R1607
Site.CaptureRequirementIfIsFalse(
getItems[0].IsSubmitted,
1607,
@"[In t:ItemType Complex Type] otherwise [IsSubmitted is] false, indicates [an item has not been submitted to the folder].");
// Add the debug information
Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSCORE_R1321");
// Verify MS-OXWSCORE requirement: MS-OXWSCORE_R1321
Site.CaptureRequirementIfIsTrue(
getItems[0].IsDraftSpecified,
1321,
@"[In t:ItemType Complex Type] The type of IsDraft is xs:boolean.");
// Add the debug information
Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSCORE_R1322");
// Verify MS-OXWSCORE requirement: MS-OXWSCORE_R1322
Site.CaptureRequirementIfIsTrue(
getItems[0].IsFromMeSpecified,
1322,
@"[In t:ItemType Complex Type] The type of IsFromMe is xs:boolean.");
// Add the debug information
Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSCORE_R1611");
// Verify MS-OXWSCORE requirement: MS-OXWSCORE_R1611
Site.CaptureRequirementIfIsFalse(
getItems[0].IsFromMe,
1611,
@"[In t:ItemType Complex Type] otherwise [IsFromMe is] false, indicates [a user does not sent an item to himself or herself].");
// Add the debug information
Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSCORE_R1323");
// Verify MS-OXWSCORE requirement: MS-OXWSCORE_R1323
Site.CaptureRequirementIfIsTrue(
getItems[0].IsResendSpecified,
1323,
@"[In t:ItemType Complex Type] The type of IsResend is xs:boolean.");
// Add the debug information
Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSCORE_R1613");
// Verify MS-OXWSCORE requirement: MS-OXWSCORE_R1613
Site.CaptureRequirementIfIsFalse(
getItems[0].IsResend,
1613,
@"[In t:ItemType Complex Type] otherwise [IsResend is] false, indicates [an item has not previously been sent].");
// Add the debug information
Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSCORE_R1324");
// Verify MS-OXWSCORE requirement: MS-OXWSCORE_R1324
Site.CaptureRequirementIfIsTrue(
getItems[0].IsUnmodifiedSpecified,
1324,
@"[In t:ItemType Complex Type] The type of IsUnmodified is xs:boolean.");
// Add the debug information
Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSCORE_R1326");
// Verify MS-OXWSCORE requirement: MS-OXWSCORE_R1326
Site.CaptureRequirementIfIsTrue(
getItems[0].DateTimeSentSpecified,
1326,
@"[In t:ItemType Complex Type] The type of DateTimeSent is xs:dateTime.");
// Add the debug information
Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSCORE_R1327");
// Verify MS-OXWSCORE requirement: MS-OXWSCORE_R1327
Site.CaptureRequirementIfIsTrue(
getItems[0].DateTimeCreatedSpecified,
1327,
@"[In t:ItemType Complex Type] The type of DateTimeCreated is xs:dateTime.");
// Add the debug information
Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSCORE_R1335");
// Verify MS-OXWSCORE requirement: MS-OXWSCORE_R1335
Site.CaptureRequirementIfIsTrue(
getItems[0].HasAttachmentsSpecified,
1335,
@"[In t:ItemType Complex Type] The type of HasAttachments is xs:boolean.");
// Add the debug information
Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSCORE_R1340");
// Verify MS-OXWSCORE requirement: MS-OXWSCORE_R1340
Site.CaptureRequirementIfIsTrue(
getItems[0].LastModifiedTimeSpecified,
1340,
@"[In t:ItemType Complex Type] The type of LastModifiedTime is xs:dateTime.");
// Verify the ReminderMinutesBeforeStartType schema.
this.VerifyReminderMinutesBeforeStartType(getItems[0].ReminderMinutesBeforeStart, items[0].ReminderMinutesBeforeStart);
// Add the debug information
this.Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSCORE_R105");
// Verify MS-OXWSCORE requirement: MS-OXWSCORE_R105
// The LastModifiedTimeSpecified is true, so this requirement can be captured.
this.Site.CaptureRequirementIfIsTrue(
getItems[0].LastModifiedTimeSpecified,
105,
@"[In t:ItemType Complex Type] [The element ""LastModifiedTime""] Specifies an instance of the DateTime structure that represents the date and time when an item was last modified.");
// Add the debug information
this.Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSCORE_R78");
// Verify MS-OXWSCORE requirement: MS-OXWSCORE_R78
// The DateTimeReceivedSpecified is true, so this requirement can be captured.
this.Site.CaptureRequirementIfIsTrue(
getItems[0].DateTimeReceivedSpecified,
78,
@"[In t:ItemType Complex Type] [The element ""DateTimeReceived""] Specifies the date and time that an item was received in a mailbox.");
// Add the debug information
this.Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSCORE_R79");
// Verify MS-OXWSCORE requirement: MS-OXWSCORE_R79
// The SizeSpecified is true, so this requirement can be captured.
this.Site.CaptureRequirementIfIsTrue(
getItems[0].SizeSpecified,
79,
@"[In t:ItemType Complex Type] [The element ""Size""] Specifies an integer value that represents the size of an item, in bytes.");
// Add the debug information
this.Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSCORE_R89");
// Verify MS-OXWSCORE requirement: MS-OXWSCORE_R89
// The DateTimeSentSpecified is true, so this requirement can be captured.
this.Site.CaptureRequirementIfIsTrue(
getItems[0].DateTimeSentSpecified,
89,
@"[In t:ItemType Complex Type] [The element ""DateTimeSent""] Specifies the date and time when an item in a mailbox was sent.");
// Add the debug information
this.Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSCORE_R90");
// Verify MS-OXWSCORE requirement: MS-OXWSCORE_R90
// The DateTimeCreatedSpecified is true, so this requirement can be captured.
this.Site.CaptureRequirementIfIsTrue(
getItems[0].DateTimeCreatedSpecified,
90,
@"[In t:ItemType Complex Type] [The element ""DateTimeCreated""] Specifies the date and time when an item in a mailbox was created.");
if (Common.IsRequirementEnabled(4003, this.Site))
{
// Add the debug information
this.Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSCDATA_R4003");
// Verify MS-OXWSCORE requirement: MS-OXWSCDATA_R4003
// The IsTruncated is set and the item is created successfully, so this requirement can be captured.
this.Site.CaptureRequirement(
"MS-OXWSCDATA",
4003,
@"[In Appendix C: Product Behavior] Implementation does use the attribute ""IsTruncated"" with type ""xs:boolean ([XMLSCHEMA2])"" which specifies whether the body is truncated. (Exchange 2013 and above follow this behavior.)");
}
if (Common.IsRequirementEnabled(1353, this.Site))
{
// Add the debug information
this.Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSCORE_R1353");
// Verify MS-OXWSCORE requirement: MS-OXWSCORE_R1353
// The RetentionDate is set and the item is created successfully, so this requirement can be captured.
this.Site.CaptureRequirement(
1353,
@"[In Appendix C: Product Behavior] Implementation does support element ""RetentionDate"" with type ""xs:dateTime"" which specifies the retention date for an item. (Exchange 2013 and above follow this behavior.)");
}
if (Common.IsRequirementEnabled(2281, this.Site))
{
// Add the debug information
this.Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSCORE_R1314");
// Verify MS-OXWSCORE requirement: MS-OXWSCORE_R1314
// The Attachments is set and the item is created successfully, so this requirement can be captured.
this.Site.CaptureRequirement(
1314,
@"[In t:ItemType Complex Type] The type of Attachments is t:NonEmptyArrayOfAttachmentsType ([MS-OXWSCDATA] section 2.2.4.43).");
// Add the debug information
this.Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSCORE_R2281");
// Verify MS-OXWSCORE requirement: MS-OXWSCORE_R2281
// The Attachments is set and the item is created successfully, so this requirement can be captured.
this.Site.CaptureRequirement(
2281,
@"[In Appendix C: Product Behavior] Implementation does use the Attachments element which specifies an array of items or files that are attached to an item. (Exchange 2010 SP2 and above follow this behavior.)");
// Add the debug information
this.Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSCORE_R1620");
// Verify MS-OXWSCORE requirement: MS-OXWSCORE_R1620
this.Site.CaptureRequirementIfIsTrue(
getItems[0].HasAttachmentsSpecified && getItems[0].HasAttachments,
1620,
@"[In t:ItemType Complex Type] [HasAttachments is] True, indicates an item has at least one attachment.");
// Add the debug information
this.Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSCDATA_R1229");
// Verify MS-OXWSCORE requirement: MS-OXWSCDATA_R1229
this.Site.CaptureRequirement(
"MS-OXWSCDATA",
1229,
@"[In t:NonEmptyArrayOfAttachmentsType Complex Type] The type [NonEmptyArrayOfAttachmentsType] is defined as follow:
<xs:complexType name=""NonEmptyArrayOfAttachmentsType"">
<xs:choice
minOccurs=""1""
maxOccurs=""unbounded""
>
<xs:element name=""ItemAttachment""
type=""t:ItemAttachmentType""
/>
<xs:element name=""FileAttachment""
type=""t:FileAttachmentType""
/>
</xs:choice>
</xs:complexType>");
// Add the debug information
this.Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSCDATA_R1633");
// Verify MS-OXWSCORE requirement: MS-OXWSCDATA_R1633
// The item was created with an item attachment.
this.Site.CaptureRequirement(
"MS-OXWSCDATA",
1633,
@"[In t:NonEmptyArrayOfAttachmentsType Complex Type] The element ""ItemAttachment"" is ""t:ItemAttachmentType"" type.");
// Add the debug information
this.Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSCDATA_R1634");
// Verify MS-OXWSCORE requirement: MS-OXWSCDATA_R1634
// The item was created with an file attachment.
this.Site.CaptureRequirement(
"MS-OXWSCDATA",
1634,
@"[In t:NonEmptyArrayOfAttachmentsType Complex Type] The element ""FileAttachment"" is ""t:FileAttachmentType"" type.");
}
if (Common.IsRequirementEnabled(2285, this.Site))
{
// Add the debug information
this.Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSCORE_R2285");
// Verify MS-OXWSCORE requirement: MS-OXWSCORE_R2285
this.Site.CaptureRequirementIfIsTrue(
getItems[0].IsAssociatedSpecified,
2285,
@"[In Appendix C: Product Behavior] Implementation does support the IsAssociated element which specifies a value that indicates whether the item is associated with a folder. (Exchange 2010 and above follow this behavior.)");
// Add the debug information
this.Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSCORE_R1619");
// Verify MS-OXWSCORE requirement: MS-OXWSCORE_R1619
this.Site.CaptureRequirementIfIsFalse(
getItems[0].IsAssociated,
1619,
@"[In t:ItemType Complex Type] otherwise [IsAssociated is] false, indicates [the item is associated with a folder].");
}
if (Common.IsRequirementEnabled(2338, this.Site))
{
// Add the debug information
this.Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSCORE_R2338");
// Verify MS-OXWSCORE requirement: MS-OXWSCORE_R2338
this.Site.CaptureRequirementIfIsNotNull(
getItems[0].WebClientReadFormQueryString,
2338,
@"[In Appendix C: Product Behavior] Implementation does support the WebClientReadFormQueryString element. (Exchange Server 2010 and above follow this behavior.)");
// Add the debug information
this.Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSCORE_R1342");
// Verify MS-OXWSCORE requirement: MS-OXWSCORE_R1342
// The WebClientReadFormQueryString is returned from server and pass the schema validation, so this requirement can be captured.
this.Site.CaptureRequirement(
1342,
@"[In t:ItemType Complex Type] The type of WebClientReadFormQueryString is xs:string.");
}
if (Common.IsRequirementEnabled(2283, this.Site))
{
// Add the debug information
this.Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSCORE_R2283");
// Verify MS-OXWSCORE requirement: MS-OXWSCORE_R2283
this.Site.CaptureRequirementIfIsTrue(
getItems[0].ReminderNextTimeSpecified,
2283,
@"[In Appendix C: Product Behavior] Implementation does support the ReminderNextTime element which specifies the date and time for the next reminder. (Exchange 2013 and above follow this behavior.)");
// Add the debug information
this.Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSCORE_R1727");
// Verify MS-OXWSCORE requirement: MS-OXWSCORE_R1727
// The ReminderNextTime is returned from server and pass the schema validation, so this requirement can be captured.
this.Site.CaptureRequirement(
1727,
@"[In t:ItemType Complex Type] The type of ReminderNextTime is xs:dateTime.");
}
if (Common.IsRequirementEnabled(2288, this.Site))
{
// Add the debug information
this.Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSCORE_R2288");
// Verify MS-OXWSCORE requirement: MS-OXWSCORE_R2288
this.Site.CaptureRequirementIfIsNotNull(
getItems[0].ConversationId,
2288,
@"[In Appendix C: Product Behavior] Implementation does support the element ""ConversationId"" which specifies the ID of the conversation that an item is part of.. (Exchange 2010 and above follow this behavior.)");
// Add the debug information
this.Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSCORE_R1344");
// Verify MS-OXWSCORE requirement: MS-OXWSCORE_R1344
// The ConversationId is returned from server and pass the schema validation, so this requirement can be captured.
this.Site.CaptureRequirement(
1344,
@"[In t:ItemType Complex Type] The type of ConversationId is t:ItemIdType.");
}
#endregion
}