Пример #1
0
        public async Task CreateHttpContent_NoStream()
        {
            var options = new TestOptions
            {
                List = new List <object> {
                    1, 2, 3
                },
                String = "String!",
            };
            var content = FormEncoder.CreateHttpContent(options);

            Assert.NotNull(content);
            Assert.IsType <FormUrlEncodedContent>(content);

            Assert.Equal("application/x-www-form-urlencoded", content.Headers.ContentType.MediaType);
            Assert.Equal("utf-8", content.Headers.ContentType.CharSet);
            Assert.Equal(1, content.Headers.ContentType.Parameters.Count);

            var stream = await content.ReadAsStreamAsync();

            Assert.Equal(44, stream.Length);
            var result = new StreamReader(stream).ReadToEnd();

            Assert.Equal("list[0]=1&list[1]=2&list[2]=3&string=String!", result);
        }
Пример #2
0
        private static HttpContent BuildContent(HttpMethod method, BaseOptions options)
        {
            if (method != HttpMethod.Post && method.ToString() != "PATCH")
            {
                return(null);
            }

            return(FormEncoder.CreateHttpContent(options));
        }
Пример #3
0
        public async Task CreateHttpContent_Null()
        {
            var content = FormEncoder.CreateHttpContent(null);

            Assert.NotNull(content);
            Assert.IsType <FormUrlEncodedContent>(content);

            Assert.Equal("application/x-www-form-urlencoded", content.Headers.ContentType.MediaType);
            Assert.Equal("utf-8", content.Headers.ContentType.CharSet);
            Assert.Equal(1, content.Headers.ContentType.Parameters.Count);

            var stream = await content.ReadAsStreamAsync();

            Assert.Equal(0, stream.Length);
        }
Пример #4
0
        public async Task CreateHttpContent_Stream()
        {
            var options = new TestOptions
            {
                List = new List <object> {
                    1, 2, 3
                },
                Stream = new MemoryStream(Encoding.UTF8.GetBytes("Hello World!")),
                String = "String!",
            };
            var content = FormEncoder.CreateHttpContent(options);

            Assert.NotNull(content);
            Assert.IsType <MultipartFormDataContent>(content);

            Assert.Equal("multipart/form-data", content.Headers.ContentType.MediaType);
            Assert.Equal(1, content.Headers.ContentType.Parameters.Count);

            var stream = await content.ReadAsStreamAsync();

            Assert.Equal(764, stream.Length);
            var result = new StreamReader(stream).ReadToEnd();

            // The boundary will be a random GUID, so we just check for substrings.
            // MultipartFormDataContentTest has more exhaustive tests with a non-random boundary.
            Assert.Contains(
                "Content-Type: text/plain; charset=utf-8\r\nContent-Disposition: form-data; name=\"list[0]\"\r\n\r\n1\r\n",
                result);
            Assert.Contains(
                "Content-Type: text/plain; charset=utf-8\r\nContent-Disposition: form-data; name=\"list[1]\"\r\n\r\n2\r\n",
                result);
            Assert.Contains(
                "Content-Type: text/plain; charset=utf-8\r\nContent-Disposition: form-data; name=\"list[2]\"\r\n\r\n3\r\n",
                result);
            Assert.Contains(
                "Content-Disposition: form-data; name=\"stream\"; filename=blob; filename*=utf-8''blob\r\nContent-Type: application/octet-stream\r\n\r\nHello World!\r\n",
                result);
            Assert.Contains(
                "Content-Type: text/plain; charset=utf-8\r\nContent-Disposition: form-data; name=\"string\"\r\n\r\nString!\r\n",
                result);
        }