public void MSASCMD_S21_TC02_CommonStatusCode_173()
        {
            Site.Assume.AreNotEqual <string>("12.1", Common.GetConfigurationPropertyValue("ActiveSyncProtocolVersion", this.Site), "Status value 173 is not returned when the MS-ASProtocolVersion header is set to 12.1. MS-ASProtocolVersion header value is determined using Common PTFConfig property named ActiveSyncProtocolVersion.");
            Site.Assume.AreNotEqual <string>("14.0", Common.GetConfigurationPropertyValue("ActiveSyncProtocolVersion", this.Site), "Status value 173 is not returned when the MS-ASProtocolVersion header is set to 14.0. MS-ASProtocolVersion header value is determined using Common PTFConfig property named ActiveSyncProtocolVersion.");

            #region Call method ResolveRecipients to resolve a list of supplied recipients, to retrieve their free/busy information, or retrieve their S/MIME certificates so that clients can send encrypted S/MIME e-mail messages.
            string displayName = this.User3Information.UserName;

            ResolveRecipientsRequest  resolveRecipientsRequest = new ResolveRecipientsRequest();
            Request.ResolveRecipients requestResolveRecipients = new Request.ResolveRecipients();

            Request.ResolveRecipientsOptions requestResolveRecipientsOption = new Request.ResolveRecipientsOptions
            {
                Picture = new Request.ResolveRecipientsOptionsPicture {
                    MaxPictures = 3
                }
            };

            requestResolveRecipients.Items       = new object[] { requestResolveRecipientsOption, displayName };
            resolveRecipientsRequest.RequestData = requestResolveRecipients;

            ResolveRecipientsResponse resolveRecipientsResponse = this.CMDAdapter.ResolveRecipients(resolveRecipientsRequest);
            #endregion

            // Add the debug information
            Site.Log.Add(LogEntryKind.Debug, "Verify MS-ASCMD_R4970");
            Site.Log.Add(LogEntryKind.Debug, "When the contact picture does not exit, server returns status {0}", resolveRecipientsResponse.ResponseData.Response[0].Recipient[0].Picture[0].Status);

            // Verify MS-ASCMD requirement: MS-ASCMD_R4970
            Site.CaptureRequirementIfAreEqual <string>(
                "173",
                resolveRecipientsResponse.ResponseData.Response[0].Recipient[0].Picture[0].Status,
                4970,
                @"[In Common Status Codes] [The meaning of the status value 173 is] The user does not have a contact photo.<107>");
        }
        public void MSASCMD_S13_TC17_ResolveRecipients_Picture_Success()
        {
            Site.Assume.AreNotEqual<string>("12.1", Common.GetConfigurationPropertyValue("ActiveSyncProtocolVersion", this.Site), "The Picture element is not supported when the MS-ASProtocolVersion header is set to 12.1. MS-ASProtocolVersion header value is determined using Common PTFConfig property named ActiveSyncProtocolVersion.");
            Site.Assume.AreNotEqual<string>("14.0", Common.GetConfigurationPropertyValue("ActiveSyncProtocolVersion", this.Site), "The Picture element 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.");

            // Call ResolveRecipients command to resolve the special recipient who has a contact photo.
            Request.ResolveRecipientsOptions requestResolveRecipientsOption = new Request.ResolveRecipientsOptions
            {
                Picture = new Request.ResolveRecipientsOptionsPicture
                {
                    MaxSizeSpecified = true,
                    MaxSize = 102400,
                    MaxPicturesSpecified = true,
                    MaxPictures = 3
                }
            };

            ResolveRecipientsRequest resolveRecipientsRequest = new ResolveRecipientsRequest
            {
                RequestData = new Request.ResolveRecipients
                {
                    Items = new object[]
                    {
                        requestResolveRecipientsOption,
                        Common.GetConfigurationPropertyValue("User1Name", Site)
                    }
                }
            };

            ResolveRecipientsResponse resolveRecipientsResponse = this.CMDAdapter.ResolveRecipients(resolveRecipientsRequest);

            // Add the debug information
            Site.Log.Add(LogEntryKind.Debug, "Verify MS-ASCMD_R4310");

            // Verify MS-ASCMD requirement: MS-ASCMD_R4311
            Site.CaptureRequirementIfAreEqual<string>(
                "1",
                resolveRecipientsResponse.ResponseData.Response[0].Recipient[0].Picture[0].Status,
                4310,
                @"[In Status(ResolveRecipients)] [The meaning of the status value] 1 [is] The contact photo was retrieved successfully.");

            // Add the debug information
            Site.Log.Add(LogEntryKind.Debug, "Verify MS-ASCMD_R2133");

            // Verify MS-ASCMD requirement: MS-ASCMD_R2133
            // The Data element value indicates the contact photo size, if the Data element value is not null then MS-ASCMD_R2133 is verified.
            Site.CaptureRequirementIfIsNotNull(
                resolveRecipientsResponse.ResponseData.Response[0].Recipient[0].Picture[0].Data,
                2133,
                @"[In Data(ResolveRecipients)] The Data element<27> is an optional child element of the Picture element in ResolveRecipients command responses that contains the binary data of the contact photo.");

            // Add the debug information
            Site.Log.Add(LogEntryKind.Debug, "Verify MS-ASCMD_R5350");

            // Verify MS-ASCMD requirement: MS-ASCMD_R5350
            // If the Data element value is less than MaxSize value set in request, then MS-ASCMD_R5350 is verified.
            Site.CaptureRequirementIfIsTrue(
                Convert.ToInt32(resolveRecipientsResponse.ResponseData.Response[0].Recipient[0].Picture[0].Data) <= requestResolveRecipientsOption.Picture.MaxSize,
                5350,
                @"[In MaxSize] The MaxSize element specifies the maximum size of an individual contact photo that is returned in the response, in bytes.");

            // Add the debug information
            Site.Log.Add(LogEntryKind.Debug, "Verify MS-ASCMD_R5351");

            // Verify MS-ASCMD requirement: MS-ASCMD_R5351
            Site.CaptureRequirementIfIsTrue(
                resolveRecipientsResponse.ResponseData.Response[0].Recipient[0].Picture.Length <= requestResolveRecipientsOption.Picture.MaxPictures,
                5351,
                @"[In MaxSize] The MaxPictures element (section 2.2.3.94) specifies the maximum number of contact photos to return in the server response.");
        }
        public void MSASCMD_S13_TC01_ResolveRecipients_CertificateRetrieval()
        {
            #region Call ResolveRecipients command and set the CertificateRetrieval value to 1 that specifies server does not retrieve certificates for the recipient.
            Request.ResolveRecipientsOptions requestResolveRecipientsOption = new Request.ResolveRecipientsOptions
            {
                CertificateRetrieval = "1"
            };

            ResolveRecipientsRequest resolveRecipientsRequest = new ResolveRecipientsRequest
            {
                RequestData = new Request.ResolveRecipients
                {
                    Items =
                        new object[] { requestResolveRecipientsOption, Common.GetConfigurationPropertyValue("User3Name", Site) }
                }
            };

            ResolveRecipientsResponse resolveRecipientsResponse = this.CMDAdapter.ResolveRecipients(resolveRecipientsRequest);

            // Add the debug information
            Site.Log.Add(LogEntryKind.Debug, "Verify MS-ASCMD_R856");

            // If CertificateRetrieval value is set to 1 , server returns a null Certificates.
            // Verify MS-ASCMD requirement: MS-ASCMD_R856
            Site.CaptureRequirementIfIsNull(
                resolveRecipientsResponse.ResponseData.Response[0].Recipient[0].Certificates,
                856,
                @"[In CertificateRetrieval] Value 1 means do not retrieve certificates for the recipient (default).");
            #endregion

            #region Call ResolveRecipients command and set the CertificateRetrieval value to 2 that specifies server should return the full certificate for each resolved recipient.
            requestResolveRecipientsOption.CertificateRetrieval = "2";
            resolveRecipientsRequest.RequestData.Items = new object[] { requestResolveRecipientsOption, Common.GetConfigurationPropertyValue("User3Name", Site) };
            resolveRecipientsResponse = this.CMDAdapter.ResolveRecipients(resolveRecipientsRequest);

            // Add the debug information
            Site.Log.Add(LogEntryKind.Debug, "Verify MS-ASCMD_R843");

            // Resolve a list of supplied recipients, server returns a non-null Certificates.
            // Verify MS-ASCMD requirement: MS-ASCMD_R843
            Site.CaptureRequirementIfIsNotNull(
                resolveRecipientsResponse.ResponseData.Response[0].Recipient[0].Certificates,
                843,
                @"[In Certificate(ResolveRecipients)] This element [Certificate] is returned by the server only if the client specifies a value of 2 in the CertificateRetrieval element (section 2.2.3.22) in the ResolveRecipients command request.");

            // Add the debug information
            Site.Log.Add(LogEntryKind.Debug, "Verify MS-ASCMD_R857");

            // Resolve a list of supplied recipients, server returns a non-null Certificates.
            // Verify MS-ASCMD requirement: MS-ASCMD_R857
            Site.CaptureRequirementIfIsNotNull(
                resolveRecipientsResponse.ResponseData.Response[0].Recipient[0].Certificates,
                857,
                @"[In CertificateRetrieval] Value 2 means retrieve the full certificate for each resolved recipient.");

            // Add the debug information
            Site.Log.Add(LogEntryKind.Debug, "Verify MS-ASCMD_R3825");

            // Resolve a list of supplied recipients, server returns a non-null Type.
            // Verify MS-ASCMD requirement: MS-ASCMD_R3825
            Site.CaptureRequirementIfIsTrue(
                (resolveRecipientsResponse.ResponseData.Response[0].Recipient.Length > (int)0) && (resolveRecipientsResponse.ResponseData.Response[0].Recipient[0].EmailAddress != null) && (resolveRecipientsResponse.ResponseData.Response[0].Recipient[0].Certificates != null),
                3825,
                @"[In Response(ResolveRecipients)] If the recipient was resolved, the element also contains the type of recipient, the email address that the recipient resolved to, and, optionally, the S/MIME certificate for the recipient.");

            // Add the debug information
            Site.Log.Add(LogEntryKind.Debug, "Verify MS-ASCMD_R3764");

            // Resolve a list of supplied recipients, server returns a non-null Certificates.
            // Verify MS-ASCMD requirement: MS-ASCMD_R3764
            Site.CaptureRequirementIfIsNotNull(
                resolveRecipientsResponse.ResponseData.Response[0].Recipient[0].Certificates,
                3764,
                @"[In Recipient] A Certificates element is returned as a child element of the Recipient element if the client requested certificates to be returned in the response.");
            #endregion

            #region Call ResolveRecipients command and set the CertificateRetrieval value to 3 that specifies server should return the mini certificate for each resolved recipient.
            requestResolveRecipientsOption.CertificateRetrieval = "3";
            resolveRecipientsRequest.RequestData.Items = new object[] { requestResolveRecipientsOption, Common.GetConfigurationPropertyValue("User3Name", Site) };
            resolveRecipientsResponse = this.CMDAdapter.ResolveRecipients(resolveRecipientsRequest);
            Site.Assert.AreEqual<string>("1", resolveRecipientsResponse.ResponseData.Status, "The server should return a status code 1 in the ResolveRecipients command response to indicate success.");

            // Add the debug information
            Site.Log.Add(LogEntryKind.Debug, "Verify MS-ASCMD_R858");

            // Resolve a list of supplied recipients, server returns a non-null Certificates.
            // Verify MS-ASCMD requirement: MS-ASCMD_R858
            Site.CaptureRequirementIfIsNotNull(
                resolveRecipientsResponse.ResponseData.Response[0].Recipient[0].Certificates.MiniCertificate,
                858,
                @"[In CertificateRetrieval] Value 3 means retrieve the mini certificate for each resolved recipient.");

            // Add the debug information
            Site.Log.Add(LogEntryKind.Debug, "Verify MS-ASCMD_R3435");

            // Resolve a list of supplied recipients, server returns a non-null Certificates.
            // Verify MS-ASCMD requirement: MS-ASCMD_R3435
            Site.CaptureRequirementIfIsNotNull(
                resolveRecipientsResponse.ResponseData.Response[0].Recipient[0].Certificates.MiniCertificate,
                3435,
                @"[In MiniCertificate] This [MiniCertificate] element is returned only if the client specifies a value of 3 in the CertificateRetrieval element (section 2.2.3.22) in the ResolveRecipients command request and the resolved recipient has a valid S/MIME certificate.");

            // Add the debug information
            Site.Log.Add(LogEntryKind.Debug, "Verify MS-ASCMD_R4302");

            // Resolve a list of supplied recipients, server returns a non-null Certificates.
            // Verify MS-ASCMD requirement: MS-ASCMD_R4302
            Site.CaptureRequirementIfAreEqual<int>(
                1,
                int.Parse(resolveRecipientsResponse.ResponseData.Response[0].Recipient[0].Certificates.Status),
                4302,
                @"[In Status(ResolveRecipients)] [The meaning of the status value] 1 [is] One or more certificates were successfully returned.");
            #endregion
        }
        public void MSASCMD_S13_TC19_ResolveRecipients_Picture_Status175()
        {
            Site.Assume.AreNotEqual<string>("12.1", Common.GetConfigurationPropertyValue("ActiveSyncProtocolVersion", this.Site), "The Picture element is not supported when the MS-ASProtocolVersion header is set to 12.1. MS-ASProtocolVersion header value is determined using Common PTFConfig property named ActiveSyncProtocolVersion.");
            Site.Assume.AreNotEqual<string>("14.0", Common.GetConfigurationPropertyValue("ActiveSyncProtocolVersion", this.Site), "The Picture element 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.");

            // Call ResolveRecipients command with MaxPictures element set to "0" to resolve the special recipient who has one contact photo.
            ResolveRecipientsRequest resolveRecipientsRequest = new ResolveRecipientsRequest();
            Request.ResolveRecipients requestResolveRecipients = new Request.ResolveRecipients();
            Request.ResolveRecipientsOptions requestResolveRecipientsOption = new Request.ResolveRecipientsOptions
            {
                Picture = new Request.ResolveRecipientsOptionsPicture
                {
                    MaxPicturesSpecified = true,
                    MaxPictures = 0
                }
            };
            requestResolveRecipients.Items = new object[] { requestResolveRecipientsOption, Common.GetConfigurationPropertyValue("User2Name", Site) };
            resolveRecipientsRequest.RequestData = requestResolveRecipients;
            ResolveRecipientsResponse resolveRecipientsResponse = this.CMDAdapter.ResolveRecipients(resolveRecipientsRequest);

            // Add the debug information
            Site.Log.Add(LogEntryKind.Debug, "Verify MS-ASCMD_R4313");

            // Verify MS-ASCMD requirement: MS-ASCMD_R4313
            Site.CaptureRequirementIfAreEqual<string>(
                "175",
                resolveRecipientsResponse.ResponseData.Response[0].Recipient[0].Picture[0].Status,
                4313,
                @"[In Status(ResolveRecipients)] [The meaning of the status value] 175 [is] The number of contact photos returned exceeded the size limit set by the MaxPictures element (section 2.2.3.94.1).");
        }