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); }
public void TestContentEncodingHeaderFromString() { var header = RequestHeader.FromString("Content-Encoding: deflate, gzip"); Assert.Equal(RequestHeader.ContentEncoding, header.Name); Assert.Equal("deflate, gzip", header.Value); }
public void TestEqualsCaseInsensitive() { var header1 = RequestHeader.FromString("Content-length: 10"); var header2 = RequestHeader.FromString("content-length: 10"); Assert.Equal(header1, header2); }
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); }
public void TestParseSpaceyHeader() { var header = RequestHeader.FromString(" Accept: text/plain "); Assert.Equal(RequestHeader.Accept, header.Name); Assert.Equal("text/plain", header.Value); }
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); }
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") }); }
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()); }
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); }
public void TestParseLowerCaseContentLength() { var header = RequestHeader.FromString("content-length: 10"); Assert.Equal(10, header.IfContentLength); }