public void MSOXWSCORE_S04_TC23_VerifyPublicFolderItem() { FolderIdType folderId = null; FindFolderType findRequest = new FindFolderType(); findRequest.FolderShape = new FolderResponseShapeType(); findRequest.FolderShape.BaseShape = DefaultShapeNamesType.AllProperties; DistinguishedFolderIdType id = new DistinguishedFolderIdType(); id.Id = DistinguishedFolderIdNameType.publicfoldersroot; findRequest.ParentFolderIds = new DistinguishedFolderIdType[] { id }; findRequest.Traversal = FolderQueryTraversalType.Shallow; BaseFolderType[] folders = null; FindFolderResponseType findFolderResponse = this.SRCHAdapter.FindFolder(findRequest); FindFolderResponseMessageType findFolderResponseMessageType = new FindFolderResponseMessageType(); if (findFolderResponse != null && findFolderResponse.ResponseMessages.Items[0].ResponseClass == ResponseClassType.Success) { findFolderResponseMessageType = findFolderResponse.ResponseMessages.Items[0] as FindFolderResponseMessageType; folders = findFolderResponseMessageType.RootFolder.Folders; foreach (BaseFolderType folder in folders) { if (folder.DisplayName.Equals(Common.GetConfigurationPropertyValue("PublicFolderName", this.Site))) { folderId = folder.FolderId; } } } Site.Assert.IsNotNull( folderId, "The destination public folder {0} in should exist!", Common.GetConfigurationPropertyValue("PublicFolderName", this.Site)); MessageType message = new MessageType(); MessageType[] items = new MessageType[] { message }; CreateItemType requestItem = new CreateItemType(); requestItem.MessageDispositionSpecified = true; requestItem.MessageDisposition = MessageDispositionType.SaveOnly; requestItem.Items = new NonEmptyArrayOfAllItemsType(); requestItem.Items.Items = items; requestItem.SavedItemFolderId = new TargetFolderIdType(); requestItem.SavedItemFolderId.Item = folderId; CreateItemResponseType createItemResponse = this.COREAdapter.CreateItem(requestItem); Common.CheckOperationSuccess(createItemResponse, 1, this.Site); ItemInfoResponseMessageType itemInfo = (ItemInfoResponseMessageType)createItemResponse.ResponseMessages.Items[0]; ItemIdId itemId = this.ITEMIDAdapter.ParseItemId(itemInfo.Items.Items[0].ItemId); // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSITEMID_R62"); // Verify MS-OXWSITEMID requirement: MS-OXWSITEMID_R62 Site.CaptureRequirementIfAreEqual<IdStorageType>( IdStorageType.PublicFolderItem, itemId.StorageType, "MS-OXWSITEMID", 62, @"[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,] }"); }
/// <summary> /// Find all the sub folders in the specified folder. /// </summary> /// <param name="parentFolderName">Name of the specified parent folder.</param> /// <returns>An array of found sub folders.</returns> private BaseFolderType[] FindAllSubFolders(DistinguishedFolderIdNameType parentFolderName) { // Create an array of BaseFolderType. BaseFolderType[] folders = null; // Create the request and specify the traversal type. FindFolderType findFolderRequest = new FindFolderType(); findFolderRequest.Traversal = FolderQueryTraversalType.Deep; // Define the properties to be returned in the response. FolderResponseShapeType responseShape = new FolderResponseShapeType(); responseShape.BaseShape = DefaultShapeNamesType.Default; findFolderRequest.FolderShape = responseShape; // Identify which folders to search. DistinguishedFolderIdType[] folderIDArray = new DistinguishedFolderIdType[1]; folderIDArray[0] = new DistinguishedFolderIdType(); folderIDArray[0].Id = parentFolderName; // Add the folders to search to the request. findFolderRequest.ParentFolderIds = folderIDArray; FindFolderResponseType findFolderResponse = this.exchangeServiceBinding.FindFolder(findFolderRequest); FindFolderResponseMessageType findFolderResponseMessageType = new FindFolderResponseMessageType(); if (findFolderResponse != null && findFolderResponse.ResponseMessages.Items[0].ResponseClass == ResponseClassType.Success) { findFolderResponseMessageType = findFolderResponse.ResponseMessages.Items[0] as FindFolderResponseMessageType; folders = findFolderResponseMessageType.RootFolder.Folders; } return folders; }