Esempio n. 1
0
        public async Task ReadAsStringAsync_EmptyContent_EmptyString()
        {
            var    content       = new MockContent(new byte[0]);
            string actualContent = await content.ReadAsStringAsync();

            Assert.Equal(string.Empty, actualContent);
        }
Esempio n. 2
0
        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());
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
        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);
        }
Esempio n. 7
0
        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());
        }
Esempio n. 8
0
        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());
        }
Esempio n. 9
0
        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);
        }
Esempio n. 10
0
        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());
        }
Esempio n. 11
0
 public async Task ReadAsStringAsync_EmptyContent_EmptyString()
 {
     var content = new MockContent(new byte[0]);
     string actualContent = await content.ReadAsStringAsync();
     Assert.Equal(string.Empty, actualContent);
 }