public void MSASCMD_S06_TC02_GetAttachment_Status500()
{
Site.Assume.AreNotEqual<string>("14.0", Common.GetConfigurationPropertyValue("ActiveSyncProtocolVersion", this.Site), "The GetAttachment command is not supported when the MS-ASProtocolVersion header is set to 14.0. MS-ASProtocolVersion header value is determined using Common PTFConfig property named ActiveSyncProtocolVersion.");
Site.Assume.AreNotEqual<string>("14.1", Common.GetConfigurationPropertyValue("ActiveSyncProtocolVersion", this.Site), "The GetAttachment command is not supported when the MS-ASProtocolVersion header is set to 14.1. MS-ASProtocolVersion header value is determined using Common PTFConfig property named ActiveSyncProtocolVersion.");
Site.Assume.AreNotEqual<string>("16.0", Common.GetConfigurationPropertyValue("ActiveSyncProtocolVersion", this.Site), "The GetAttachment command is not supported when the MS-ASProtocolVersion header is set to 16.0. MS-ASProtocolVersion header value is determined using Common PTFConfig property named ActiveSyncProtocolVersion.");
// Send a mail with normal attachment
string subject = Common.GenerateResourceName(Site, "NormalAttachment_Subject");
string body = Common.GenerateResourceName(Site, "NormalAttachment_Body");
this.SendEmailWithAttachment(subject, body);
this.SwitchUser(this.User2Information);
SyncResponse syncResponse = this.CheckEmail(this.User2Information.InboxCollectionId, subject, null);
TestSuiteBase.RecordCaseRelativeItems(this.User2Information, this.User2Information.InboxCollectionId, subject);
Response.AttachmentsAttachment[] attachments = this.GetEmailAttachments(syncResponse, subject);
Site.Assert.IsTrue(attachments != null && attachments.Length == 1, "The email should contain a single attachment.");
GetAttachmentRequest getAttachmentRequest = new GetAttachmentRequest();
getAttachmentRequest.SetCommandParameters(new Dictionary<CmdParameterName, object>
{
{
CmdParameterName.AttachmentName, attachments[0].FileReference
}
});
GetAttachmentResponse getAttachmentResponse = this.CMDAdapter.GetAttachment(getAttachmentRequest);
Site.Assert.AreEqual<string>("OK", getAttachmentResponse.StatusDescription, "The attachment should be retrieved successfully.");
// Delete the email in the Inbox folder.
syncResponse = this.SyncChanges(this.User2Information.InboxCollectionId);
string serverId = TestSuiteBase.FindServerId(syncResponse, "Subject", subject);
SyncRequest syncRequest = TestSuiteBase.CreateSyncDeleteRequest(this.LastSyncKey, this.User2Information.InboxCollectionId, serverId);
this.Sync(syncRequest);
syncRequest.RequestData.Collections[0].SyncKey = this.LastSyncKey;
syncResponse = this.Sync(syncRequest);
Site.Assert.IsNull(TestSuiteBase.FindServerId(syncResponse, "Subject", subject), "The email should be deleted.");
TestSuiteBase.RemoveRecordCaseRelativeItems(this.User2Information, this.User2Information.InboxCollectionId, subject);
syncResponse = this.SyncChanges(this.User2Information.DeletedItemsCollectionId);
Site.Assert.IsNotNull(TestSuiteBase.FindServerId(syncResponse, "Subject", subject), "The deleted email should be in the DeletedItems folder.");
TestSuiteBase.RecordCaseRelativeItems(this.User2Information, this.User2Information.DeletedItemsCollectionId, subject);
try
{
// Call GetAttachment command again to fetch the deleted attachment.
this.CMDAdapter.GetAttachment(getAttachmentRequest);
Site.Assert.Fail("If the GetAttachment command is used to retrieve an attachment that has been deleted on the server, a 500 status code should be returned in the HTTP POST response.");
}
catch (System.Net.WebException exception)
{
int statusCode = ((System.Net.HttpWebResponse)exception.Response).StatusCode.GetHashCode();
// Add the debug information
Site.Log.Add(LogEntryKind.Debug, "Verify MS-ASCMD_R166");
// Verify MS-ASCMD requirement: MS-ASCMD_R166
Site.CaptureRequirementIfAreEqual<int>(
500,
statusCode,
166,
@"[In GetAttachment] If the GetAttachment command is used to retrieve an attachment that has been deleted on the server, a 500 status code is returned in the HTTP POST response.");
}
}
#endregion