Ejemplo n.º 1
0
    public void TestParseHeaderWithMultipleValueStringsAndColons()
    {
        var header = RequestHeader.FromString("Accept-Datetime: Thu, 31 May 2007 20:35:00 GMT");

        Assert.Equal(RequestHeader.AcceptDatetime, header.Name);
        Assert.Equal("Thu, 31 May 2007 20:35:00 GMT", header.Value);
    }
Ejemplo n.º 2
0
    public void TestContentEncodingHeaderFromString()
    {
        var header = RequestHeader.FromString("Content-Encoding: deflate, gzip");

        Assert.Equal(RequestHeader.ContentEncoding, header.Name);
        Assert.Equal("deflate, gzip", header.Value);
    }
Ejemplo n.º 3
0
    public void TestEqualsCaseInsensitive()
    {
        var header1 = RequestHeader.FromString("Content-length: 10");
        var header2 = RequestHeader.FromString("content-length: 10");

        Assert.Equal(header1, header2);
    }
Ejemplo n.º 4
0
    public void TestParseHeaderWithMultipleValueStrings()
    {
        var header = RequestHeader.FromString("Cookie: $Version=1; Skin=new;");

        Assert.Equal(RequestHeader.Cookie, header.Name);
        Assert.Equal("$Version=1; Skin=new;", header.Value);
    }
Ejemplo n.º 5
0
    public void TestParseSpaceyHeader()
    {
        var header = RequestHeader.FromString("  Accept:    text/plain  ");

        Assert.Equal(RequestHeader.Accept, header.Name);
        Assert.Equal("text/plain", header.Value);
    }
Ejemplo n.º 6
0
        public void BodyContentFormData()
        {
            var content = "--boundary\n" +
                          "Content-Disposition: form-data; name=\"field1\"\n\n" +
                          "value1\n" + "--boundary\n" +
                          "Content-Disposition: form-data; name=\"field2\"; filename=\"example.txt\"\n\n" +
                          "value2\n" + "--boundary--";

            var binaryMediaTypeDescriptor = "multipart/form-data;boundary=\"boundary\"";

            var binaryMediaType = ContentMediaType.ParseFromDescriptor(binaryMediaTypeDescriptor);
            var binaryRequest   = Request.Has(Method.Post)
                                  .And(Version.Http1_1)
                                  .And("/user/my-post".ToMatchableUri())
                                  .And(RequestHeader.FromString("Host:www.vlingo.io"))
                                  .And(RequestHeader.WithContentType(binaryMediaTypeDescriptor))
                                  .And(Http.Body.From(content));

            var resolver = ParameterResolver.Body <RequestData>();

            var result   = resolver.Apply(binaryRequest, _mappedParameters);
            var expected = new RequestData(
                Http.Body.From(content),
                ContentMediaType.ParseFromDescriptor(binaryMediaTypeDescriptor),
                ContentEncoding.None());

            Assert.Equal(expected.MediaType, result.MediaType);
            Assert.Equal(expected.ContentEncoding, result.ContentEncoding);
            Assert.Equal(expected.Body.Content, result.Body.Content);
            Assert.Equal(ParameterResolver.Type.Body, resolver.Type);
        }
Ejemplo n.º 7
0
        public ParameterResolverTest()
        {
            _request = Request.Has(Method.Post)
                       .And(Version.Http1_1)
                       .And("/user/my-post?page=10".ToMatchableUri())
                       .And(RequestHeader.FromString("Host:www.vlingo.io"))
                       .And(Http.Body.From("{\"given\":\"John\",\"family\":\"Doe\"}"));

            _mappedParameters = new Action.MappedParameters(1, Method.Get, "ignored", new List <Action.MappedParameter>
            {
                new Action.MappedParameter("String", "my-post")
            });
        }
Ejemplo n.º 8
0
        private bool ParseHeaders()
        {
            if (!_continuation)
            {
                Headers = new Headers <RequestHeader>(2);
            }

            _continuation = false;
            while (true)
            {
                var maybeHeaderLine = NextLine(ResponseStatus.BadRequest.GetDescription(),
                                               "\n\nHeader is required.");
                if (!maybeHeaderLine.IsPresent)
                {
                    return(true);
                }

                var headerLine = maybeHeaderLine.Get();

                if (string.IsNullOrEmpty(headerLine))
                {
                    break;
                }

                var header = RequestHeader.FromString(headerLine);
                Headers.Add(header);
                if (_contentLength == 0)
                {
                    var maybeContentLength = header.IfContentLength;
                    if (maybeContentLength > 0)
                    {
                        _contentLength = maybeContentLength;
                    }
                }
            }

            if (Headers.Count == 0)
            {
                throw new ArgumentException(ResponseStatus.BadRequest.GetDescription() +
                                            "\n\nHeader is required.");
            }

            return(NextStep());
        }
Ejemplo n.º 9
0
        public void BodyContentRequest()
        {
            var content = new byte[] { 0xD, 0xE, 0xA, 0xD, 0xB, 0xE, 0xE, 0xF };
            var binaryMediaTypeDescriptor = "application/octet-stream";
            var binaryMediaType           = ContentMediaType.ParseFromDescriptor(binaryMediaTypeDescriptor);
            var binaryRequest             = Request.Has(Method.Post)
                                            .And(Version.Http1_1)
                                            .And("/user/my-post".ToMatchableUri())
                                            .And(RequestHeader.FromString("Host:www.vlingo.io"))
                                            .And(RequestHeader.WithContentType(binaryMediaTypeDescriptor))
                                            .And(RequestHeader.WithContentEncoding(ContentEncodingMethod.Gzip.ToString()))
                                            .And(Http.Body.From(content, Http.Body.Encoding.None));

            var resolver = ParameterResolver.Body <RequestData>();

            var result   = resolver.Apply(binaryRequest, _mappedParameters);
            var expected = new RequestData(Http.Body.From(content, Http.Body.Encoding.None), binaryMediaType, new ContentEncoding(ContentEncodingMethod.Gzip));

            Assert.Equal(expected.ContentEncoding, result.ContentEncoding);
            Assert.Equal(expected.MediaType, result.MediaType);
            Assert.Equal(expected.Body.BinaryContent, result.Body.BinaryContent);
            Assert.Equal(ParameterResolver.Type.Body, resolver.Type);
        }
Ejemplo n.º 10
0
    public void TestParseLowerCaseContentLength()
    {
        var header = RequestHeader.FromString("content-length: 10");

        Assert.Equal(10, header.IfContentLength);
    }