コード例 #1
0
        public static Task WriteContentUsingCorrectCharacterEncodingHelper(MediaTypeFormatter formatter, string content, byte[] expectedData, string mediaType)
        {
            // Arrange
            MemoryStream memStream = new MemoryStream();

            StringContent      dummyContent = new StringContent(string.Empty);
            HttpContentHeaders headers      = dummyContent.Headers;

            headers.Clear();
            headers.ContentType   = MediaTypeHeaderValue.Parse(mediaType);
            headers.ContentLength = expectedData.Length;

            IFormatterLogger mockFormatterLogger = new Mock <IFormatterLogger>().Object;

            // Act & Assert
            return(formatter.WriteToStreamAsync(typeof(string), content, memStream, dummyContent, null).ContinueWith(
                       (writeTask) =>
            {
                // Assert
                Assert.Equal(TaskStatus.RanToCompletion, writeTask.Status);
                byte[] actualData = memStream.ToArray();

                Assert.Equal(expectedData, actualData);
            }));
        }
コード例 #2
0
        protected async Task ReadFromStreamAsync_UsesCorrectCharacterEncodingHelper(MediaTypeFormatter formatter, string content, string formattedContent, string mediaType, string encoding, bool isDefaultEncoding)
        {
            // Arrange
            Encoding enc = null;

            if (isDefaultEncoding)
            {
                enc = formatter.SupportedEncodings.First((e) => e.WebName.Equals(encoding, StringComparison.OrdinalIgnoreCase));
            }
            else
            {
                enc = Encoding.GetEncoding(encoding);
                formatter.SupportedEncodings.Add(enc);
            }

            byte[]       data      = enc.GetBytes(formattedContent);
            MemoryStream memStream = new MemoryStream(data);

            StringContent      dummyContent = new StringContent(string.Empty);
            HttpContentHeaders headers      = dummyContent.Headers;

            headers.Clear();
            headers.ContentType   = MediaTypeHeaderValue.Parse(mediaType);
            headers.ContentLength = data.Length;

            IFormatterLogger mockFormatterLogger = new Mock <IFormatterLogger>().Object;

            // Act
            string result = (await formatter.ReadFromStreamAsync(typeof(string), memStream, dummyContent, mockFormatterLogger)) as string;

            // Assert
            Assert.Equal(content, result);
        }
コード例 #3
0
        public static Task ReadContentUsingCorrectCharacterEncodingHelper(MediaTypeFormatter formatter, string content, byte[] sourceData, string mediaType)
        {
            // Arrange
            MemoryStream memStream = new MemoryStream(sourceData);

            StringContent      dummyContent = new StringContent(string.Empty);
            HttpContentHeaders headers      = dummyContent.Headers;

            headers.Clear();
            headers.ContentType   = MediaTypeHeaderValue.Parse(mediaType);
            headers.ContentLength = sourceData.Length;

            IFormatterLogger mockFormatterLogger = new Mock <IFormatterLogger>().Object;

            // Act & Assert
            return(formatter.ReadFromStreamAsync(typeof(string), memStream, dummyContent, mockFormatterLogger).ContinueWith(
                       (readTask) =>
            {
                string result = readTask.Result as string;

                // Assert
                Assert.Equal(TaskStatus.RanToCompletion, readTask.Status);
                Assert.Equal(content, result);
            }));
        }
コード例 #4
0
        protected static async Task WriteContentUsingCorrectCharacterEncodingHelperAsync(
            MediaTypeFormatter formatter,
            string content,
            byte[] expectedData,
            string mediaType
        )
        {
            // Arrange
            MemoryStream memStream = new MemoryStream();

            StringContent dummyContent = new StringContent(string.Empty);
            HttpContentHeaders headers = dummyContent.Headers;
            headers.Clear();
            headers.ContentType = MediaTypeHeaderValue.Parse(mediaType);
            headers.ContentLength = expectedData.Length;

            IFormatterLogger mockFormatterLogger = new Mock<IFormatterLogger>().Object;

            // Act
            await formatter.WriteToStreamAsync(
                typeof(string),
                content,
                memStream,
                dummyContent,
                null
            );

            // Assert
            byte[] actualData = memStream.ToArray();

            Assert.Equal(expectedData, actualData);
        }
コード例 #5
0
        protected static async Task ReadContentUsingCorrectCharacterEncodingHelperAsync(
            MediaTypeFormatter formatter,
            string content,
            byte[] sourceData,
            string mediaType
        )
        {
            // Arrange
            MemoryStream memStream = new MemoryStream(sourceData);

            StringContent dummyContent = new StringContent(string.Empty);
            HttpContentHeaders headers = dummyContent.Headers;
            headers.Clear();
            headers.ContentType = MediaTypeHeaderValue.Parse(mediaType);
            headers.ContentLength = sourceData.Length;

            IFormatterLogger mockFormatterLogger = new Mock<IFormatterLogger>().Object;

            // Act
            var result =
                (
                    await formatter.ReadFromStreamAsync(
                        typeof(string),
                        memStream,
                        dummyContent,
                        mockFormatterLogger
                    )
                ) as string;

            // Assert
            Assert.Equal(content, result);
        }
コード例 #6
0
 /// <summary>
 /// Replaces the headers.
 /// </summary>
 /// <param name="currentHeaders">The current headers.</param>
 /// <param name="oldHeaders">The old headers.</param>
 private void ReplaceHeaders(HttpContentHeaders currentHeaders, HttpContentHeaders oldHeaders)
 {
     currentHeaders.Clear();
     foreach (var item in oldHeaders)
     {
         currentHeaders.Add(item.Key, item.Value);
     }
 }
コード例 #7
0
        public void ContentType_UseAddMethodWithInvalidValue_InvalidValueRecognized()
        {
            _headers.TryAddWithoutValidation("Content-Type", "text/plain; charset=utf-8; custom=value, other/type");
            Assert.Null(_headers.ContentType);
            Assert.Equal(1, _headers.GetValues("Content-Type").Count());
            Assert.Equal("text/plain; charset=utf-8; custom=value, other/type",
                         _headers.GetValues("Content-Type").First());

            _headers.Clear();
            _headers.TryAddWithoutValidation("Content-Type", ",text/plain"); // leading separator
            Assert.Null(_headers.ContentType);
            Assert.Equal(1, _headers.GetValues("Content-Type").Count());
            Assert.Equal(",text/plain", _headers.GetValues("Content-Type").First());

            _headers.Clear();
            _headers.TryAddWithoutValidation("Content-Type", "text/plain,"); // trailing separator
            Assert.Null(_headers.ContentType);
            Assert.Equal(1, _headers.GetValues("Content-Type").Count());
            Assert.Equal("text/plain,", _headers.GetValues("Content-Type").First());
        }
コード例 #8
0
        protected async Task WriteToStreamAsync_UsesCorrectCharacterEncodingHelper(
            MediaTypeFormatter formatter,
            string content,
            string formattedContent,
            string mediaType,
            string encoding,
            bool isDefaultEncoding
        )
        {
            // Arrange
            Encoding enc = null;
            if (isDefaultEncoding)
            {
                enc = formatter.SupportedEncodings.First(
                    (e) => e.WebName.Equals(encoding, StringComparison.OrdinalIgnoreCase)
                );
            }
            else
            {
                enc = Encoding.GetEncoding(encoding);
                formatter.SupportedEncodings.Add(enc);
            }

            byte[] preamble = enc.GetPreamble();
            byte[] data = enc.GetBytes(formattedContent);
            byte[] expectedData = new byte[preamble.Length + data.Length];
            Buffer.BlockCopy(preamble, 0, expectedData, 0, preamble.Length);
            Buffer.BlockCopy(data, 0, expectedData, preamble.Length, data.Length);

            MemoryStream memStream = new MemoryStream();

            HttpContent httpContent = new StringContent(String.Empty);
            HttpContentHeaders contentHeaders = httpContent.Headers;
            contentHeaders.Clear();
            contentHeaders.ContentType = MediaTypeHeaderValue.Parse(mediaType);
            contentHeaders.ContentLength = expectedData.Length;

            IFormatterLogger mockFormatterLogger = new Mock<IFormatterLogger>().Object;

            // Act
            await formatter.WriteToStreamAsync(
                typeof(string),
                content,
                memStream,
                httpContent,
                null
            );

            // Assert
            byte[] actualData = memStream.ToArray();
            Assert.Equal(expectedData, actualData);
        }
コード例 #9
0
        public static Task WriteContentUsingCorrectCharacterEncodingHelper(MediaTypeFormatter formatter, string content, string formattedContent, string mediaType, string encoding, bool isDefaultEncoding)
        {
            // Arrange
            Encoding enc = null;

            if (isDefaultEncoding)
            {
                enc = formatter.SupportedEncodings.First((e) => e.WebName.Equals(encoding, StringComparison.OrdinalIgnoreCase));
            }
            else
            {
                enc = Encoding.GetEncoding(encoding);
                formatter.SupportedEncodings.Add(enc);
            }

            byte[] preamble     = enc.GetPreamble();
            byte[] data         = enc.GetBytes(formattedContent);
            byte[] expectedData = new byte[preamble.Length + data.Length];
            Buffer.BlockCopy(preamble, 0, expectedData, 0, preamble.Length);
            Buffer.BlockCopy(data, 0, expectedData, preamble.Length, data.Length);

            MemoryStream memStream = new MemoryStream();

            StringContent      dummyContent = new StringContent(string.Empty);
            HttpContentHeaders headers      = dummyContent.Headers;

            headers.Clear();
            headers.ContentType   = MediaTypeHeaderValue.Parse(mediaType);
            headers.ContentLength = expectedData.Length;

            IFormatterLogger mockFormatterLogger = new Mock <IFormatterLogger>().Object;

            // Act
            return(formatter.WriteToStreamAsync(typeof(string), content, memStream, dummyContent, null).ContinueWith(
                       (writeTask) =>
            {
                // Assert
                Assert.Equal(TaskStatus.RanToCompletion, writeTask.Status);
                byte[] actualData = memStream.ToArray();

                Assert.Equal(expectedData, actualData);
            }));
        }
コード例 #10
0
        /// <summary>
        /// Creates an empty <see cref="HttpContentHeaders"/> instance. The only way is to get it from a dummy
        /// <see cref="HttpContent"/> instance.
        /// </summary>
        /// <returns>The created instance.</returns>
        public static HttpContentHeaders CreateEmptyContentHeaders()
        {
            HttpContent        tempContent    = null;
            HttpContentHeaders contentHeaders = null;

            try
            {
                tempContent    = new StringContent(string.Empty);
                contentHeaders = tempContent.Headers;
                contentHeaders.Clear();
            }
            finally
            {
                // We can dispose the content without touching the headers
                if (tempContent != null)
                {
                    tempContent.Dispose();
                }
            }

            return(contentHeaders);
        }
コード例 #11
0
        public static Task ReadContentUsingCorrectCharacterEncodingHelper(MediaTypeFormatter formatter, string content, string formattedContent, string mediaType, string encoding, bool isDefaultEncoding)
        {
            // Arrange
            Encoding enc = null;

            if (isDefaultEncoding)
            {
                enc = formatter.SupportedEncodings.First((e) => e.WebName.Equals(encoding, StringComparison.OrdinalIgnoreCase));
            }
            else
            {
                enc = Encoding.GetEncoding(encoding);
                formatter.SupportedEncodings.Add(enc);
            }

            byte[]       data      = enc.GetBytes(formattedContent);
            MemoryStream memStream = new MemoryStream(data);

            StringContent      dummyContent = new StringContent(string.Empty);
            HttpContentHeaders headers      = dummyContent.Headers;

            headers.Clear();
            headers.ContentType   = MediaTypeHeaderValue.Parse(mediaType);
            headers.ContentLength = data.Length;

            IFormatterLogger mockFormatterLogger = new Mock <IFormatterLogger>().Object;

            // Act
            return(formatter.ReadFromStreamAsync(typeof(string), memStream, headers, mockFormatterLogger).ContinueWith(
                       (readTask) =>
            {
                string result = readTask.Result as string;

                // Assert
                Assert.Equal(TaskStatus.RanToCompletion, readTask.Status);
                Assert.Equal(content, result);
            }));
        }