示例#1
0
        // Token: 0x060000F6 RID: 246 RVA: 0x00004394 File Offset: 0x00002594
        internal ConnectResponse Execute(ConnectRequest connectRequest, IServerCapabilities requiredCapabilities)
        {
            ConnectResponse connectResponse = this.Execute(connectRequest);

            connectResponse.UserSmtpAddressString = base.EasConnectionSettings.EasEndpointSettings.UserSmtpAddressString;
            if (connectResponse.ConnectStatus != ConnectStatus.Success || requiredCapabilities == null)
            {
                return(connectResponse);
            }
            OptionsCommand  optionsCommand  = new OptionsCommand(base.EasConnectionSettings);
            OptionsResponse optionsResponse = optionsCommand.Execute(new OptionsRequest());

            connectResponse.OptionsResponse = optionsResponse;
            EasServerCapabilities easServerCapabilities = optionsResponse.EasServerCapabilities;

            if (easServerCapabilities.Supports(requiredCapabilities))
            {
                base.EasConnectionSettings.ExtensionCapabilities = optionsResponse.EasExtensionCapabilities;
                return(connectResponse);
            }
            IEnumerable <string> values = requiredCapabilities.NotIn(easServerCapabilities);
            string text = string.Join(", ", values);

            base.EasConnectionSettings.Log.Debug("ConnectCommand, missing capabilities: '{0}'.", new object[]
            {
                text
            });
            throw new MissingCapabilitiesException(text);
        }
 public void MSASHTTP_S04_TC01_HTTPOPTIONS()
 {
     #region Call HTTP OPTIONS command.
     OptionsResponse optionsResponse = this.HTTPAdapter.HTTPOPTIONS();
     Site.Assert.AreEqual <HttpStatusCode>(HttpStatusCode.OK, optionsResponse.StatusCode, "The StatusCode of HTTP OPTIONS command response should be OK, actual {0}.", optionsResponse.StatusCode);
     #endregion
 }
        /// <summary>
        /// Send HTTP OPTIONS request to the server and get the response.
        /// </summary>
        /// <returns>The HTTP OPTIONS response.</returns>
        public OptionsResponse HTTPOPTIONS()
        {
            OptionsResponse optionsResponse = this.activeSyncClient.Options();

            Site.Assert.IsNotNull(optionsResponse, "The HTTP OPTIONS response returned from server should not be null.");
            this.VerifyHTTPOPTIONSResponse(optionsResponse);
            this.VerifyTransportType();
            return(optionsResponse);
        }
示例#4
0
        public OptionsResponse GetOptionsByProfile([FromBody] OptionsRequest request)
        {
            OptionsResponse response = new OptionsResponse();
            MOptions        option   = new MOptions();
            List <MOptions> options  = new List <MOptions>();

            try
            {
                /*METODO QUE VALIDA EL TOKEN DE APLICACIÓN*/
                if (!BAplication.ValidateAplicationToken(request.ApplicationToken))
                {
                    response.Code    = "2";
                    response.Message = Messages.ApplicationTokenNoAutorize;
                    return(response);
                }
                /*************FIN DEL METODO*************/

                option.ProfileId = request.Options.ProfileId;

                int Val = 0;

                options = BOptions.Sel(option, ref Val);

                if (Val.Equals(0))
                {
                    response.Code    = "0"; //0=> Ëxito | 1=> Validación de Sistema | 2 => Error de Excepción
                    response.Message = Messages.Success;
                }
                else if (Val.Equals(2))
                {
                    response.Code    = "2"; //0=> Ëxito | 1=> Validación de Sistema | 2 => Error de Excepción
                    response.Message = String.Format(Messages.ErrorObtainingReults, "options");
                }
                else
                {
                    response.Code    = "1"; //0=> Ëxito | 1=> Validación de Sistema | 2 => Error de Excepción
                    response.Message = String.Format(Messages.NotReults, "options");
                }
            }
            catch (Exception ex)
            {
                response.Code    = "2"; //0=> Ëxito | 1=> Validación de Sistema | 2 => Error de Excepción
                response.Message = ex.Message;
            }

            response.Options = options.ToArray();

            return(response);
        }
        /// <summary>
        /// Verify requirements about HTTP OPTIONS response headers.
        /// </summary>
        /// <param name="optionsResponse">The HTTP OPTIONS response.</param>
        private void VerifyHTTPOPTIONSHeaders(OptionsResponse optionsResponse)
        {
            string commandHeaders = optionsResponse.Headers["MS-ASProtocolCommands"];
            string versionHeaders = optionsResponse.Headers["MS-ASProtocolVersions"];

            Site.Log.Add(LogEntryKind.Debug, "The MS-ASProtocolCommands header in response is: {0}.", commandHeaders);
            Site.Log.Add(LogEntryKind.Debug, "The MS-ASProtocolVersions header in response is: {0}.", versionHeaders);


            if (Common.IsRequirementEnabled(459, Site))
            {
                // Add the debug information
                Site.Log.Add(LogEntryKind.Debug, "Verify MS-ASHTTP_R459");

                // Verify MS-ASHTTP requirement: MS-ASHTTP_R459
                // There is "12.1" in MS-ASProtocolVersions header, so this requirement can be captured.
                Site.CaptureRequirementIfIsTrue(
                    versionHeaders.Contains("12.1"),
                    459,
                    @"[In Appendix A: Product Behavior] Implementation does return the MS-ASProtocolVersions value of 12.1. (Exchange 2007 SP1 and above follow this behavior.)");
            }

            if (Common.IsRequirementEnabled(460, Site))
            {
                // Add the debug information
                Site.Log.Add(LogEntryKind.Debug, "Verify MS-ASHTTP_R460");

                // Verify MS-ASHTTP requirement: MS-ASHTTP_R460
                // There is "14.0" in MS-ASProtocolVersions header, so this requirement can be captured.
                Site.CaptureRequirementIfIsTrue(
                    versionHeaders.Contains("14.0"),
                    460,
                    @"[In Appendix A: Product Behavior] Implementation does return the MS-ASProtocolVersions value of 14.0. (Exchange 2010 and above follow this behavior.)");
            }

            if (Common.IsRequirementEnabled(461, Site))
            {
                // Add the debug information
                Site.Log.Add(LogEntryKind.Debug, "Verify MS-ASHTTP_R461");

                // Verify MS-ASHTTP requirement: MS-ASHTTP_R461
                // There is "14.1" in MS-ASProtocolVersions header, so this requirement can be captured.
                Site.CaptureRequirementIfIsTrue(
                    versionHeaders.Contains("14.1"),
                    461,
                    @"[In Appendix A: Product Behavior] Implementation does return the MS-ASProtocolVersions value of 14.1. (Exchange 2013 and above follow this behavior.)");
            }

            if (Common.IsRequirementEnabled(1201, Site))
            {
                // Add the debug information
                Site.Log.Add(LogEntryKind.Debug, "Verify MS-ASHTTP_R1201");

                // Verify MS-ASHTTP requirement: MS-ASHTTP_R1201
                // There is "16.0" in MS-ASProtocolVersions header, so this requirement can be captured.
                Site.CaptureRequirementIfIsTrue(
                    versionHeaders.Contains("16.0"),
                    1201,
                    @"[In Appendix A: Product Behavior] Implementation does return the MS-ASProtocolVersions value of 16.0. (Exchange 2016 Preview and above follow this behavior.)");
            }

            if (Common.IsRequirementEnabled(12011, Site))
            {
                // Add the debug information
                Site.Log.Add(LogEntryKind.Debug, "Verify MS-ASHTTP_R12011");

                // Verify MS-ASHTTP requirement: MS-ASHTTP_R12011
                // There is "16.1" in MS-ASProtocolVersions header, so this requirement can be captured.
                Site.CaptureRequirementIfIsTrue(
                    versionHeaders.Contains("16.1"),
                    12011,
                    @"[In Appendix A: Product Behavior] Implementation does return the MS-ASProtocolVersions value of 16.1. (Exchange 2016 Preview and above follow this behavior.)");
            }

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

            // Verify MS-ASHTTP requirement: MS-ASHTTP_R249
            // R459, R460 and R461 are captured which means implementation returns MS-ASProtocolVersions value of 12.1, 14.0, 14.1,16.0 or 16.1, so this requirement can be captured directly.
            Site.CaptureRequirement(
                249,
                @"[In MS-ASProtocolVersions] The following values [MS-ASProtocolVersions] correspond to the ActiveSync protocol versions that are specified by [MS-ASCMD]:""16.1"", ""16.0"", ""14.1"", ""14.0"", ""12.1"", ""12.0"" and ""2.5"".");

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

            // Verify MS-ASHTTP requirement: MS-ASHTTP_R1107
            Site.CaptureRequirementIfIsTrue(
                !string.IsNullOrEmpty(commandHeaders) && !string.IsNullOrEmpty(versionHeaders),
                1107,
                @"[In Handling HTTP OPTIONS Command] The server's response MUST contain both the MS-ASProtocolCommands header, as specified in section 2.2.4.1.2.1, and the MS-ASProtocolVersions header, as specified in section 2.2.4.1.2.2.");

            string[] splitCommand = commandHeaders.Split(',');

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

            // Verify MS-ASHTTP requirement: MS-ASHTTP_R247
            // The MS-ASProtocolCommands header is split by ",", so this requirement can be captured.
            Site.CaptureRequirementIfIsTrue(
                splitCommand.Length > 1,
                247,
                @"[In MS-ASProtocolCommands] The MS-ASProtocolCommands header contains a comma-delimited list of the ActiveSync commands supported by the server.");

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

            // Verify MS-ASHTTP requirement: MS-ASHTTP_R238
            // R291 is captured, so this requirement can be captured.
            Site.CaptureRequirement(
                238,
                @"[In HTTP OPTIONS Response] After receiving an HTTP OPTIONS request, a server responds with an HTTP OPTIONS response that specifies the protocol versions it supports.");

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

            // Verify MS-ASHTTP requirement: MS-ASHTTP_R296
            // After R459, R460 and R461 are captured which means implementation returns MS-ASProtocolVersions value of 12.1, 14.0 or 14.1, so this requirement can be captured.
            Site.CaptureRequirement(
                296,
                @"[In Handling HTTP OPTIONS Command] A protocol server can support multiple versions of the ActiveSync protocol.");

            if (Common.IsRequirementEnabled(298, Site))
            {
                // Add the debug information
                Site.Log.Add(LogEntryKind.Debug, "Verify MS-ASHTTP_R298");

                // Verify MS-ASHTTP requirement: MS-ASHTTP_R298
                // When the server version is ExchangeServer2007, 14.0, 14.1,16.0 and 16.1 are not returned, this requirement can be captured.
                Site.CaptureRequirementIfIsTrue(
                    !versionHeaders.Contains("14.0") && !versionHeaders.Contains("14.1") && !versionHeaders.Contains("16.0") && !versionHeaders.Contains("16.1"),
                    298,
                    @"[In Appendix A: Product Behavior] Implementation does not return MS-ASProtocolVersions values of 16.1,16.0, 14.1 or 14.0. (<11> Section 3.2.5.2: Exchange 2007 SP1 does not return the value ""16.1"",""16.0"", ""14.1"", or ""14.0"" in the MS-ASProtocolVersions header.)");
            }
        }
        /// <summary>
        /// Verify requirements about HTTP OPTIONS response.
        /// </summary>
        /// <param name="optionsResponse">The HTTP OPTIONS response.</param>
        private void VerifyHTTPOPTIONSResponse(OptionsResponse optionsResponse)
        {
            this.VerifyHTTPResponse();

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

            // Verify MS-ASHTTP requirement: MS-ASHTTP_R319
            // The HTTP OPTIONS command executes successfully, so this requirement can be captured.
            Site.CaptureRequirement(
                319,
                @"[In Transport] Messages are transported by using HTTP OPTIONS, as specified in [RFC2616].");

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

            // Verify MS-ASHTTP requirement: MS-ASHTTP_R239
            // The HTTP OPTIONS command executes successfully, so this requirement can be captured.
            Site.CaptureRequirement(
                239,
                @"[In Response Format] Each response is sent from the server to the client as an HTTP OPTIONS response.");

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

            // Verify MS-ASHTTP requirement: MS-ASHTTP_R240
            // The HTTP OPTIONS command executes successfully, so this requirement can be captured.
            Site.CaptureRequirement(
                240,
                @"[In Response Format] Note that these [sent from the server to the client as an HTTP OPTIONS] responses are UTF-8 encoded.");

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

            // Verify MS-ASHTTP requirement: MS-ASHTTP_R241
            // The HTTP OPTIONS command executes successfully and raw http response is converted successfully, so this requirement can be captured.
            Site.CaptureRequirement(
                241,
                @"[In Response Format] As specified by [RFC2616], the format is the same as for the following requests:
                    Status-line
                    Response-headers");

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

            // Verify MS-ASHTTP requirement: MS-ASHTTP_R244
            // The HTTP OPTIONS command executes successfully and raw http response is converted successfully, so this requirement can be captured.
            Site.CaptureRequirement(
                244,
                @"[In Response Headers] The headers [MS-ASProtocolCommands,MS-ASProtocolVersions] follow the status line in the HTTP part of a response.");

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

            // Verify MS-ASHTTP requirement: MS-ASHTTP_R450
            // The HTTP OPTIONS command executes successfully, so this requirement can be captured.
            Site.CaptureRequirement(
                450,
                @"[In Message Processing Events and Sequencing Rules] The server can receive [HTTP POST requests (section 2.2.1) or] HTTP OPTIONS requests (section 2.2.3) from the client.");

            this.VerifyHTTPOPTIONSHeaders(optionsResponse);
        }
        /// <summary>
        /// Verify requirements about HTTP OPTIONS response headers.
        /// </summary>
        /// <param name="optionsResponse">The HTTP OPTIONS response.</param>
        private void VerifyHTTPOPTIONSHeaders(OptionsResponse optionsResponse)
        {
            string commandHeaders = optionsResponse.Headers["MS-ASProtocolCommands"];
            string versionHeaders = optionsResponse.Headers["MS-ASProtocolVersions"];
            Site.Log.Add(LogEntryKind.Debug, "The MS-ASProtocolCommands header in response is: {0}.", commandHeaders);
            Site.Log.Add(LogEntryKind.Debug, "The MS-ASProtocolVersions header in response is: {0}.", versionHeaders);


            if (Common.IsRequirementEnabled(459, Site))
            {
                // Add the debug information
                Site.Log.Add(LogEntryKind.Debug, "Verify MS-ASHTTP_R459");

                // Verify MS-ASHTTP requirement: MS-ASHTTP_R459
                // There is "12.1" in MS-ASProtocolVersions header, so this requirement can be captured.
                Site.CaptureRequirementIfIsTrue(
                    versionHeaders.Contains("12.1"),
                    459,
                    @"[In Appendix A: Product Behavior] Implementation does return the MS-ASProtocolVersions value of 12.1. (Exchange 2007 SP1 and above follow this behavior.)");
            }

            if (Common.IsRequirementEnabled(460, Site))
            {
                // Add the debug information
                Site.Log.Add(LogEntryKind.Debug, "Verify MS-ASHTTP_R460");

                // Verify MS-ASHTTP requirement: MS-ASHTTP_R460
                // There is "14.0" in MS-ASProtocolVersions header, so this requirement can be captured.
                Site.CaptureRequirementIfIsTrue(
                    versionHeaders.Contains("14.0"),
                    460,
                    @"[In Appendix A: Product Behavior] Implementation does return the MS-ASProtocolVersions value of 14.0. (Exchange 2010 and above follow this behavior.)");
            }

            if (Common.IsRequirementEnabled(461, Site))
            {
                // Add the debug information
                Site.Log.Add(LogEntryKind.Debug, "Verify MS-ASHTTP_R461");

                // Verify MS-ASHTTP requirement: MS-ASHTTP_R461
                // There is "14.1" in MS-ASProtocolVersions header, so this requirement can be captured.
                Site.CaptureRequirementIfIsTrue(
                    versionHeaders.Contains("14.1"),
                    461,
                    @"[In Appendix A: Product Behavior] Implementation does return the MS-ASProtocolVersions value of 14.1. (Exchange 2013 and above follow this behavior.)");
            }

            if (Common.IsRequirementEnabled(1201, Site))
            {
                // Add the debug information
                Site.Log.Add(LogEntryKind.Debug, "Verify MS-ASHTTP_R1201");

                // Verify MS-ASHTTP requirement: MS-ASHTTP_R1201
                // There is "16.0" in MS-ASProtocolVersions header, so this requirement can be captured.
                Site.CaptureRequirementIfIsTrue(
                    versionHeaders.Contains("16.0"),
                    1201,
                    @"[In Appendix A: Product Behavior] Implementation does return the MS-ASProtocolVersions value of 16.0. (Exchange 2016 Preview and above follow this behavior.)");
            }

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

            // Verify MS-ASHTTP requirement: MS-ASHTTP_R249
            // R459, R460 and R461 are captured which means implementation returns MS-ASProtocolVersions value of 12.1, 14.0, 14.1 or 16.0, so this requirement can be captured directly.
            Site.CaptureRequirement(
                249,
                @"[In MS-ASProtocolVersions] The following values [MS-ASProtocolVersions] correspond to the ActiveSync protocol versions that are specified by [MS-ASCMD]: ""16.0"", ""14.1"", ""14.0"", ""12.1"", ""12.0"" and ""2.5"".");

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

            // Verify MS-ASHTTP requirement: MS-ASHTTP_R1107
            Site.CaptureRequirementIfIsTrue(
                !string.IsNullOrEmpty(commandHeaders) && !string.IsNullOrEmpty(versionHeaders),
                1107,
                @"[In Handling HTTP OPTIONS Command] The server's response MUST contain both the MS-ASProtocolCommands header, as specified in section 2.2.4.1.2.1, and the MS-ASProtocolVersions header, as specified in section 2.2.2.1.2.8.");

            string[] splitCommand = commandHeaders.Split(',');

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

            // Verify MS-ASHTTP requirement: MS-ASHTTP_R247
            // The MS-ASProtocolCommands header is split by ",", so this requirement can be captured.
            Site.CaptureRequirementIfIsTrue(
                splitCommand.Length > 1,
                247,
                @"[In MS-ASProtocolCommands] The MS-ASProtocolCommands header contains a comma-delimited list of the ActiveSync commands supported by the server.");

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

            // Verify MS-ASHTTP requirement: MS-ASHTTP_R238
            // R291 is captured, so this requirement can be captured.
            Site.CaptureRequirement(
                238,
                @"[In HTTP OPTIONS Response] After receiving an HTTP OPTIONS request, a server responds with an HTTP OPTIONS response that specifies the protocol versions it supports.");

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

            // Verify MS-ASHTTP requirement: MS-ASHTTP_R296
            // After R459, R460 and R461 are captured which means implementation returns MS-ASProtocolVersions value of 12.1, 14.0 or 14.1, so this requirement can be captured.
            Site.CaptureRequirement(
                296,
                @"[In Handling HTTP OPTIONS Command] A protocol server can support multiple versions of the ActiveSync protocol.");

            if (Common.IsRequirementEnabled(298, Site))
            {
                // Add the debug information
                Site.Log.Add(LogEntryKind.Debug, "Verify MS-ASHTTP_R298");

                // Verify MS-ASHTTP requirement: MS-ASHTTP_R298
                // When the server version is ExchangeServer2007, 14.0, 14.1 and 16.0 are not returned, this requirement can be captured.
                Site.CaptureRequirementIfIsTrue(
                    !versionHeaders.Contains("14.0") && !versionHeaders.Contains("14.1") && !versionHeaders.Contains("16.0"),
                    298,
                    @"[In Appendix A: Product Behavior] Implementation does not return MS-ASProtocolVersions values of 16.0, 14.1 or 14.0. (<10> Section 3.2.5.2: Exchange 2007 SP1 does not return the value ""16.0"", ""14.1"", or ""14.0"" in the MS-ASProtocolVersions header.)");
            }
        }
        /// <summary>
        /// Verify requirements about HTTP OPTIONS response.
        /// </summary>
        /// <param name="optionsResponse">The HTTP OPTIONS response.</param>
        private void VerifyHTTPOPTIONSResponse(OptionsResponse optionsResponse)
        {
            this.VerifyHTTPResponse();

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

            // Verify MS-ASHTTP requirement: MS-ASHTTP_R319
            // The HTTP OPTIONS command executes successfully, so this requirement can be captured.
            Site.CaptureRequirement(
                319,
                @"[In Transport] Messages are transported by using HTTP OPTIONS, as specified in [RFC2616].");

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

            // Verify MS-ASHTTP requirement: MS-ASHTTP_R239
            // The HTTP OPTIONS command executes successfully, so this requirement can be captured.
            Site.CaptureRequirement(
                239,
                @"[In Response Format] Each response is sent from the server to the client as an HTTP OPTIONS response.");

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

            // Verify MS-ASHTTP requirement: MS-ASHTTP_R240
            // The HTTP OPTIONS command executes successfully, so this requirement can be captured.
            Site.CaptureRequirement(
                240,
                @"[In Response Format] Note that these [sent from the server to the client as an HTTP OPTIONS] responses are UTF-8 encoded.");

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

            // Verify MS-ASHTTP requirement: MS-ASHTTP_R241
            // The HTTP OPTIONS command executes successfully and raw http response is converted successfully, so this requirement can be captured.
            Site.CaptureRequirement(
                241,
                @"[In Response Format] As specified by [RFC2616], the format is the same as for the following requests:
                    Status-line
                    Response-headers");

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

            // Verify MS-ASHTTP requirement: MS-ASHTTP_R244
            // The HTTP OPTIONS command executes successfully and raw http response is converted successfully, so this requirement can be captured.
            Site.CaptureRequirement(
                244,
                @"[In Response Headers] The headers [MS-ASProtocolCommands,MS-ASProtocolVersions] follow the status line in the HTTP part of a response.");

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

            // Verify MS-ASHTTP requirement: MS-ASHTTP_R450
            // The HTTP OPTIONS command executes successfully, so this requirement can be captured.
            Site.CaptureRequirement(
                450,
                @"[In Message Processing Events and Sequencing Rules] The server can receive [HTTP POST requests (section 2.2.1) or] HTTP OPTIONS requests (section 2.2.3) from the client.");

            this.VerifyHTTPOPTIONSHeaders(optionsResponse);
        }