Ejemplo n.º 1
0
        /// <summary>
        ///     Determines whether the specified request matches the rule.
        /// </summary>
        /// <param name="request">The <see cref="IStumpsHttpRequest" /> to evaluate.</param>
        /// <returns>
        ///   <c>true</c> if the <paramref name="request" /> matches the rule, otherwise, <c>false</c>.
        /// </returns>
        public bool IsMatch(IStumpsHttpRequest request)
        {
            if (request == null || request.BodyLength == 0)
            {
                return(false);
            }

            var buffer = request.GetBody();

            if (!TextAnalyzer.IsText(buffer))
            {
                return(false);
            }

            var body = Encoding.UTF8.GetString(buffer);

            var match = true;

            foreach (var textMatch in _textMatchList)
            {
                match &= textMatch.IsMatch(body);

                if (!match)
                {
                    break;
                }
            }

            return(match);
        }
Ejemplo n.º 2
0
        /// <summary>
        ///     Initializes a new instance of the <see cref="RecordedRequest" /> class.
        /// </summary>
        /// <param name="request">The <see cref="IStumpsHttpRequest"/> used to initialize the instance.</param>
        /// <param name="decoderHandling">The <see cref="ContentDecoderHandling"/> requirements for the HTTP body.</param>
        /// <exception cref="ArgumentNullException"><paramref name="request"/> is <c>null</c>.</exception>
        public RecordedRequest(IStumpsHttpRequest request, ContentDecoderHandling decoderHandling)
            : base(request, decoderHandling)
        {
            request = request ?? throw new ArgumentNullException(nameof(request));

            this.HttpMethod      = request.HttpMethod;
            this.LocalEndPoint   = request.LocalEndPoint ?? new IPEndPoint(0, 0);
            this.ProtocolVersion = request.ProtocolVersion;
            this.RawUrl          = request.RawUrl;
            this.RemoteEndPoint  = request.RemoteEndPoint ?? new IPEndPoint(0, 0);
        }
Ejemplo n.º 3
0
        /// <summary>
        ///     Initializes a new instance of the <see cref="T:Stumps.Server.RecordedRequest" /> class.
        /// </summary>
        /// <param name="request">The <see cref="T:Stumps.IStumpsHttpRequest"/> used to initialize the instance.</param>
        /// <param name="decoderHandling">The <see cref="T:Stumps.Server.ContentDecoderHandling"/> requirements for the HTTP body.</param>
        /// <exception cref="System.ArgumentNullException"><paramref name="request"/> is <c>null</c>.</exception>
        public RecordedRequest(IStumpsHttpRequest request, ContentDecoderHandling decoderHandling)
            : base(request, decoderHandling)
        {
            if (request == null)
            {
                throw new ArgumentNullException("request");
            }

            this.HttpMethod = request.HttpMethod;
            this.LocalEndPoint = request.LocalEndPoint ?? new IPEndPoint(0, 0);
            this.ProtocolVersion = request.ProtocolVersion;
            this.RawUrl = request.RawUrl;
            this.RemoteEndPoint = request.RemoteEndPoint ?? new IPEndPoint(0, 0);
        }
Ejemplo n.º 4
0
        /// <summary>
        ///     Creates an <see cref="IStumpsHttpResponse" /> object based on an incoming <see cref="IStumpsHttpRequest" />
        ///     which is returned for a Stump positivly matching all necessary criteria.
        /// </summary>
        /// <param name="request">The incoming <see cref="IStumpsHttpRequest" />.</param>
        /// <returns>
        ///     An <see cref="IStumpsHttpResponse" /> object based on an incoming <see cref="IStumpsHttpRequest" />.
        /// </returns>
        /// <exception cref="ObjectDisposedException">The <see cref="StumpResponseFactory"/> object has been disposed.</exception>
        public virtual IStumpsHttpResponse CreateResponse(IStumpsHttpRequest request)
        {
            ThrowExceptionIfDisposed();

            if (request?.Headers?[StumpsHeaderName]?.Equals(ResetHeaderValue, StringComparison.OrdinalIgnoreCase) == true)
            {
                this.ResetToBeginning();
            }

            if (this.Behavior == ResponseFactoryBehavior.Random)
            {
                return(ChooseRandomResponse());
            }
            else if (this.Behavior == ResponseFactoryBehavior.OrderedInfinite)
            {
                return(ChooseNextResponse());
            }

            return(ChooseNextResponseOrDefault());
        }
Ejemplo n.º 5
0
        /// <summary>
        ///     Determines whether the specified request matches the rule.
        /// </summary>
        /// <param name="request">The <see cref="T:Stumps.IStumpsHttpRequest" /> to evaluate.</param>
        /// <returns>
        ///   <c>true</c> if the <paramref name="request" /> matches the rule, otherwise, <c>false</c>.
        /// </returns>
        public bool IsMatch(IStumpsHttpRequest request)
        {
            if (request == null || request.Headers == null)
            {
                return false;
            }

            var match = false;

            foreach (var headerName in request.Headers.HeaderNames)
            {

                var nameMatches = _nameTextMatch.IsMatch(headerName);

                if (!nameMatches)
                {
                    continue;
                }

                var valueMatches = _valueTextMatch.IsMatch(request.Headers[headerName]);

                if (!valueMatches)
                {
                    continue;
                }

                match = true;
                break;

            }

            return match;
        }
Ejemplo n.º 6
0
        /// <summary>
        ///     Determines whether the specified request matches the rule.
        /// </summary>
        /// <param name="request">The <see cref="T:Stumps.IStumpsHttpRequest" /> to evaluate.</param>
        /// <returns>
        ///   <c>true</c> if the <paramref name="request" /> matches the rule, otherwise, <c>false</c>.
        /// </returns>
        public bool IsMatch(IStumpsHttpRequest request)
        {
            if (request == null)
            {
                return false;
            }

            var match = _textMatch.IsMatch(request.RawUrl);
            return match;
        }
Ejemplo n.º 7
0
        /// <summary>
        ///     Determines whether the specified request matches the rule.
        /// </summary>
        /// <param name="request">The <see cref="T:Stumps.IStumpsHttpRequest" /> to evaluate.</param>
        /// <returns>
        ///   <c>true</c> if the <paramref name="request" /> matches the rule, otherwise, <c>false</c>.
        /// </returns>
        public bool IsMatch(IStumpsHttpRequest request)
        {
            if (request == null || request.BodyLength == 0)
            {
                return false;
            }

            var buffer = request.GetBody();

            if (!TextAnalyzer.IsText(buffer))
            {
                return false;
            }

            var body = Encoding.UTF8.GetString(buffer);

            var match = true;

            foreach (var textMatch in _textMatchList)
            {
                match &= textMatch.IsMatch(body);

                if (!match)
                {
                    break;
                }
            }

            return match;
        }
Ejemplo n.º 8
0
        /// <summary>
        ///     Determines whether the specified request matches the rule.
        /// </summary>
        /// <param name="request">The <see cref="T:Stumps.IStumpsHttpRequest" /> to evaluate.</param>
        /// <returns>
        ///   <c>true</c> if the <paramref name="request" /> matches the rule, otherwise, <c>false</c>.
        /// </returns>
        public bool IsMatch(IStumpsHttpRequest request)
        {
            if (request == null)
            {
                return false;
            }

            var match = request.BodyLength >= _minimumLength && request.BodyLength <= _maximumLength;

            return match;
        }
Ejemplo n.º 9
0
 public MockHttpContext(IStumpsHttpRequest request, IStumpsHttpResponse response)
 {
     this.Request = request ?? new MockHttpRequest();
     this.Response = response ?? new MockHttpResponse();
 }
Ejemplo n.º 10
0
        /// <summary>
        ///     Determines whether the specified request matches the rule.
        /// </summary>
        /// <param name="request">The <see cref="T:Stumps.IStumpsHttpRequest" /> to evaluate.</param>
        /// <returns>
        ///   <c>true</c> if the <paramref name="request" /> matches the rule, otherwise, <c>false</c>.
        /// </returns>
        public bool IsMatch(IStumpsHttpRequest request)
        {
            if (request == null)
            {
                return false;
            }

            var match = false;

            if (request.BodyLength == _bodyLength)
            {

                using (var hash = MD5.Create())
                {
                    var bytes = hash.ComputeHash(request.GetBody());
                    match = IsHashEqual(bytes);
                }

            }

            return match;
        }
Ejemplo n.º 11
0
 public MockHttpContext(IStumpsHttpRequest request, IStumpsHttpResponse response)
 {
     this.Request  = request ?? new MockHttpRequest();
     this.Response = response ?? new MockHttpResponse();
 }