Ejemplo n.º 1
0
        public async Task WithNonSeekableStream_UsingSystemTextJsonContentSerializer()
        {
            var model = new TestAliasObject
            {
                ShortNameForAlias        = nameof(WithNonSeekableStream_UsingSystemTextJsonContentSerializer),
                ShortNameForJsonProperty = nameof(TestAliasObject)
            };

            var localHandler = new MockHttpMessageHandler();

            var settings = new RefitSettings(new SystemTextJsonContentSerializer())
            {
                HttpMessageHandlerFactory = () => localHandler
            };

            using var utf8BufferWriter = new PooledBufferWriter();

            var utf8JsonWriter = new Utf8JsonWriter(utf8BufferWriter);

            System.Text.Json.JsonSerializer.Serialize(utf8JsonWriter, model);

            using var sourceStream = utf8BufferWriter.DetachStream();

            using var contentStream = new ThrowOnGetLengthMemoryStream { CanGetLength = true };

            sourceStream.CopyTo(contentStream);

            contentStream.Position = 0;

            contentStream.CanGetLength = false;

            var httpContent = new StreamContent(contentStream)
            {
                Headers =
                {
                    ContentType = new MediaTypeHeaderValue("application/json")
                    {
                        CharSet = Encoding.UTF8.WebName
                    }
                }
            };

            var expectedResponse = new HttpResponseMessage(HttpStatusCode.OK)
            {
                Content = httpContent
            };

            expectedResponse.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
            expectedResponse.StatusCode = HttpStatusCode.OK;

            localHandler.Expect(HttpMethod.Get, "http://api/aliasTest").Respond(req => expectedResponse);

            var localFixture = RestService.For <IMyAliasService>("http://api", settings);

            var result = await localFixture.GetTestObject();

            Assert.NotNull(result);
            Assert.Equal(nameof(WithNonSeekableStream_UsingSystemTextJsonContentSerializer), result.ShortNameForAlias);
            Assert.Equal(nameof(TestAliasObject), result.ShortNameForJsonProperty);
        }
Ejemplo n.º 2
0
        public void StreamDeserialization_UsingSystemTextJsonContentSerializer_SetsCorrectHeaders()
        {
            var model = new TestAliasObject
            {
                ShortNameForAlias        = nameof(StreamDeserialization_UsingSystemTextJsonContentSerializer),
                ShortNameForJsonProperty = nameof(TestAliasObject)
            };

            var serializer = new SystemTextJsonContentSerializer();

            var json = serializer.ToHttpContent(model);

            Assert.NotNull(json.Headers.ContentType);
            Assert.Equal("utf-8", json.Headers.ContentType.CharSet);
            Assert.Equal("application/json", json.Headers.ContentType.MediaType);
        }
Ejemplo n.º 3
0
        public async Task StreamDeserialization_UsingSystemTextJsonContentSerializer_SetsCorrectHeaders()
        {
            var model = new TestAliasObject
            {
                ShortNameForAlias        = nameof(StreamDeserialization_UsingSystemTextJsonContentSerializer),
                ShortNameForJsonProperty = nameof(TestAliasObject)
            };

            var serializer = new SystemTextJsonContentSerializer();

            var json = await serializer.SerializeAsync(model);

            Assert.NotNull(json.Headers.ContentLength);
            Assert.True(json.Headers.ContentLength.Value > 0);
            Assert.NotNull(json.Headers.ContentType);
            Assert.Equal("utf-8", json.Headers.ContentType.CharSet);
            Assert.Equal("application/json", json.Headers.ContentType.MediaType);
        }
Ejemplo n.º 4
0
        public async Task StreamDeserialization_UsingSystemTextJsonContentSerializer()
        {
            var model = new TestAliasObject
            {
                ShortNameForAlias        = nameof(StreamDeserialization_UsingSystemTextJsonContentSerializer),
                ShortNameForJsonProperty = nameof(TestAliasObject)
            };

            var serializer = new SystemTextJsonContentSerializer();

            var json = serializer.ToHttpContent(model);

            var result = await serializer.FromHttpContentAsync <TestAliasObject>(json);

            Assert.NotNull(result);
            Assert.Equal(model.ShortNameForAlias, result.ShortNameForAlias);
            Assert.Equal(model.ShortNameForJsonProperty, result.ShortNameForJsonProperty);
        }
Ejemplo n.º 5
0
        public async Task StreamDeserialization_UsingSystemTextJsonContentSerializer()
        {
            var model = new TestAliasObject
            {
                ShortNameForAlias        = nameof(StreamDeserialization_UsingSystemTextJsonContentSerializer),
                ShortNameForJsonProperty = nameof(TestAliasObject)
            };

            var serializer = new SystemTextJsonContentSerializer();

            var json = await serializer.SerializeAsync(model);

            var stream = await json.ReadAsStreamAsync();

            var result = await System.Text.Json.JsonSerializer.DeserializeAsync <TestAliasObject>(stream);

            Assert.NotNull(result);
            Assert.Equal(model.ShortNameForAlias, result.ShortNameForAlias);
            Assert.Equal(model.ShortNameForJsonProperty, result.ShortNameForJsonProperty);
        }