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); }
private static HttpContent BuildContent(HttpMethod method, BaseOptions options) { if (method != HttpMethod.Post && method.ToString() != "PATCH") { return(null); } return(FormEncoder.CreateHttpContent(options)); }
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); }
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); }