public void Should_read_serialized_object_from_stream()
        {
            var formatter = new PlainTextFormatter();
            var value     = "Hello World";

            var memoryStream = new MemoryStream();
            var sr           = new StreamWriter(memoryStream);

            sr.Write(value);
            sr.Flush();
            memoryStream.Position = 0;
            var contentHeader = new StringContent(string.Empty).Headers;

            contentHeader.Clear();

            var resultTask = formatter.ReadFromStreamAsync(typeof(string), memoryStream, contentHeader, null);

            resultTask.Wait();

            resultTask.Result.ShouldBeType <String>();

            var result = (String)resultTask.Result;

            result.ShouldEqual(value);
        }
示例#2
0
        public void Should_read_serialized_object_from_stream()
        {
            var formatter    = new ServiceStackTextFormatter();
            var value        = GetTestObject();
            var utf8Encoding = new UTF8Encoding(encoderShouldEmitUTF8Identifier: false, throwOnInvalidBytes: true);

            //Media Type Formatter uses ISO8601 date formatting by default;
            JsConfig.DateHandler = JsonDateHandler.ISO8601;
            byte[] data = utf8Encoding.GetBytes(value.ToJson());
            JsConfig.Reset();
            var memoryStream = new MemoryStream(data);

            var contentHeader = new StringContent(string.Empty).Headers;

            contentHeader.Clear();

            var resultTask = formatter.ReadFromStreamAsync(typeof(RootClass), memoryStream, contentHeader, null);

            resultTask.Wait();

            resultTask.Result.ShouldBeType <RootClass>();

            var result = (RootClass)resultTask.Result;

            result.StringProperty.ShouldEqual(value.StringProperty);
            result.DateProperty.ShouldEqual(value.DateProperty);
            result.Child.BooleanProperty.ShouldEqual(value.Child.BooleanProperty);
            result.Child.DecimalProperty.ShouldEqual(value.Child.DecimalProperty);
            result.Child.DoubleProperty.ShouldEqual(value.Child.DoubleProperty);
            result.Child.IntegerProperty.ShouldEqual(value.Child.IntegerProperty);
            result.Child.StringProperty.ShouldEqual(value.Child.StringProperty);
        }
        public void Should_write_string_to_stream()
        {
            var formatter = new PlainTextFormatter();


            var contentHeader = new StringContent(string.Empty).Headers;

            contentHeader.Clear();
            var memoryStream = new MemoryStream();
            var value        = "Hello World";
            var resultTask   = formatter.WriteToStreamAsync(typeof(string), value, memoryStream, contentHeader, transportContext: null);

            resultTask.Wait();

            memoryStream.Position = 0;
            string serializedString = new StreamReader(memoryStream).ReadToEnd();


            serializedString.ShouldEqual(value);
        }
示例#4
0
        public void SetDefaultContentHeaders_SetsRightContentType(string acceptHeader, string acceptCharset, string contentType)
        {
            // Arrange
            MediaTypeHeaderValue expectedResult = MediaTypeHeaderValue.Parse(contentType);

            // If no accept header is present the content negotiator will pick application/json; odata.metadata=minimal
            // based on CanWriteType
            MediaTypeHeaderValue mediaType = acceptHeader == null?
                                             MediaTypeHeaderValue.Parse("application/json; odata.metadata=minimal") :
                                                 MediaTypeHeaderValue.Parse(acceptHeader);

            HttpRequestMessage request = new HttpRequestMessage();

            request.EnableODataDependencyInjectionSupport();
            if (acceptHeader != null)
            {
                request.Headers.TryAddWithoutValidation("Accept", acceptHeader);
            }
            if (acceptCharset != null)
            {
                request.Headers.TryAddWithoutValidation("Accept-Charset", acceptCharset);
                mediaType.CharSet = acceptCharset;
            }

            HttpContentHeaders contentHeaders = new StringContent(String.Empty).Headers;

            contentHeaders.Clear();

            MediaTypeFormatter formatter = ODataMediaTypeFormatters
                                           .Create()
                                           .First(f => f.SupportedMediaTypes.Contains(MediaTypeHeaderValue.Parse("application/json")));

            formatter = formatter.GetPerRequestFormatterInstance(typeof(int), request, mediaType);

            // Act
            formatter.SetDefaultContentHeaders(typeof(int), contentHeaders, mediaType);

            // Assert
            Assert.Equal(expectedResult, contentHeaders.ContentType);
        }
示例#5
0
        public void Should_write_serialized_object_to_stream_using_date_handler()
        {
            var formatter = new ServiceStackTextFormatter(JsonDateHandler.TimestampOffset);
            var value     = GetTestObject();

            var contentHeader = new StringContent(string.Empty).Headers;

            contentHeader.Clear();
            var memoryStream = new MemoryStream();

            var resultTask = formatter.WriteToStreamAsync(typeof(RootClass), value, memoryStream, contentHeader, transportContext: null);

            resultTask.Wait();

            memoryStream.Position = 0;
            string serializedString = new StreamReader(memoryStream).ReadToEnd();

            JsConfig.DateHandler = JsonDateHandler.TimestampOffset;
            var expected = value.ToJson();

            JsConfig.Reset();
            serializedString.ShouldEqual(expected);
        }