public async Task ReadAsStringAsync_EmptyContent_EmptyString() { var content = new MockContent(new byte[0]); string actualContent = await content.ReadAsStringAsync(); Assert.Equal(string.Empty, actualContent); }
public async Task ReadAsStringAsync_SetInvalidCharset_ThrowsInvalidOperationException() { string sourceString = "some string"; byte[] contentBytes = Encoding.UTF8.GetBytes(sourceString); var content = new MockContent(contentBytes); content.Headers.ContentType = new MediaTypeHeaderValue("text/plain"); content.Headers.ContentType.CharSet = "invalid"; // This will throw because we have an invalid charset. await Assert.ThrowsAsync <InvalidOperationException>(() => content.ReadAsStringAsync()); }
public async Task ReadAsStringAsync_SetNoCharset_DefaultCharsetUsed() { // Use content with umlaut characters. string sourceString = "ÄäüÜ"; // c4 e4 fc dc Encoding defaultEncoding = Encoding.GetEncoding("utf-8"); byte[] contentBytes = defaultEncoding.GetBytes(sourceString); var content = new MockContent(contentBytes); // Reading the string should consider the charset of the 'Content-Type' header. string result = await content.ReadAsStringAsync(); Assert.Equal(sourceString, result); }
public async Task ReadAsStringAsync_SetInvalidContentTypeHeader_DefaultCharsetUsed(string charset) { // Assorted latin letters with diaeresis string sourceString = "\u00C4\u00E4\u00FC\u00DC"; // Because the Content-Type header is invalid, we expect to default to UTF-8. byte[] contentBytes = Encoding.UTF8.GetBytes(sourceString); var content = new MockContent(contentBytes); Assert.True(content.Headers.TryAddWithoutValidation("Content-Type", $"text/plain;charset={charset}")); string result = await content.ReadAsStringAsync(); Assert.Equal(sourceString, result); }
public async Task ReadAsStringAsync_SetQuotedCharset_ParsesContent() { string sourceString = "some string"; byte[] contentBytes = Encoding.UTF8.GetBytes(sourceString); var content = new MockContent(contentBytes); content.Headers.ContentType = new MediaTypeHeaderValue("text/plain"); content.Headers.ContentType.CharSet = "\"utf-8\""; string result = await content.ReadAsStringAsync(); Assert.Equal(sourceString, result); }
public async Task ReadAsStringAsync_SetNoCharset_DefaultCharsetUsed() { // Assorted latin letters with diaeresis string sourceString = "\u00C4\u00E4\u00FC\u00DC"; Encoding defaultEncoding = Encoding.GetEncoding("utf-8"); byte[] contentBytes = defaultEncoding.GetBytes(sourceString); var content = new MockContent(contentBytes); // Reading the string should consider the charset of the 'Content-Type' header. string result = await content.ReadAsStringAsync(); Assert.Equal(sourceString, result); }
public void Dispose_DisposedObjectThenAccessMembers_ThrowsObjectDisposedException() { var content = new MockContent(); content.Dispose(); var m = new MemoryStream(); Assert.Throws <ObjectDisposedException>(() => { content.CopyToAsync(m); }); Assert.Throws <ObjectDisposedException>(() => { content.ReadAsByteArrayAsync(); }); Assert.Throws <ObjectDisposedException>(() => { content.ReadAsStringAsync(); }); Assert.Throws <ObjectDisposedException>(() => { content.ReadAsStreamAsync(); }); Assert.Throws <ObjectDisposedException>(() => { content.LoadIntoBufferAsync(); }); // Note that we don't throw when users access the Headers property. This is useful e.g. to be able to // read the headers of a content, even though the content is already disposed. Note that the .NET guidelines // only require members to throw ObjectDisposedExcpetion for members "that cannot be used after the object // has been disposed of". _output.WriteLine(content.Headers.ToString()); }
public async Task Dispose_DisposedObjectThenAccessMembers_ThrowsObjectDisposedException() { var content = new MockContent(); content.Dispose(); var m = new MemoryStream(); await Assert.ThrowsAsync<ObjectDisposedException>(() => content.CopyToAsync(m)); await Assert.ThrowsAsync<ObjectDisposedException>(() => content.ReadAsByteArrayAsync()); await Assert.ThrowsAsync<ObjectDisposedException>(() => content.ReadAsStringAsync()); await Assert.ThrowsAsync<ObjectDisposedException>(() => content.ReadAsStreamAsync()); await Assert.ThrowsAsync<ObjectDisposedException>(() => content.LoadIntoBufferAsync()); // Note that we don't throw when users access the Headers property. This is useful e.g. to be able to // read the headers of a content, even though the content is already disposed. Note that the .NET guidelines // only require members to throw ObjectDisposedExcpetion for members "that cannot be used after the object // has been disposed of". _output.WriteLine(content.Headers.ToString()); }
public async Task ReadAsStringAsync_SetInvalidCharset_ThrowsInvalidOperationException() { string sourceString = "some string"; byte[] contentBytes = Encoding.UTF8.GetBytes(sourceString); var content = new MockContent(contentBytes); content.Headers.ContentType = new MediaTypeHeaderValue("text/plain"); content.Headers.ContentType.CharSet = "invalid"; // This will throw because we have an invalid charset. await Assert.ThrowsAsync<InvalidOperationException>(() => content.ReadAsStringAsync()); }