Example #1
0
        public async Task peopledetail_post_json_links_test()
        {
            // arrange
            var mediaFormatter = new JsonHalMediaTypeInputFormatter(
                NullLogger.Instance,
                new JsonSerializerSettings {
                Formatting = Formatting.Indented
            },
                ArrayPool <char> .Shared,
                new DefaultObjectPoolProvider());

            var          type = typeof(OrganisationWithPeopleRepresentation);
            const string json = @"
        {
        ""Id"":""3"",
        ""Name"": ""Dept. of Redundancy Dept."",
        ""_links"": {
         ""self"": {""href"": ""/api/organisations/3""},
         ""people"": {""href"": ""/api/organisations/3/people""},
         ""brownnoser"": [
           {""href"": ""/api/organisations/3/brown/1""},
           {""href"": ""/api/organisations/3/brown/2""}
                ]
            }
        }
        ";

            // act
            using (
                var stream = new MemoryStream(Encoding.UTF8.GetBytes(json))
                )
            {
                var context = new DefaultHttpContext();
                context.Request.Body = stream;
                var obj = await mediaFormatter.ReadAsync(new Microsoft.AspNetCore.Mvc.Formatters.InputFormatterContext(
                                                             context,
                                                             type.ToString(),
                                                             new Microsoft.AspNetCore.Mvc.ModelBinding.ModelStateDictionary(),
                                                             CreateDefaultProvider().GetMetadataForType(type),
                                                             (s, encoding) => new StreamReader(s, encoding)
                                                             ));

                // assert
                Assert.NotNull(obj.Model);
                var org = obj.Model as OrganisationWithPeopleRepresentation;
                Assert.NotNull(org);
                Assert.Equal(4, org.Links.Count);
                var self = org.Links.Where(l => l.Rel == "self").ToList();
                Assert.Single(self);
                Assert.Equal("/api/organisations/3", self[0].Href);
                Assert.Equal(self[0].Href, org.Href);
                var people = org.Links.Where(l => l.Rel == "people").ToList();
                Assert.Single(people);
                Assert.Equal("/api/organisations/3/people", people[0].Href);
                var brownnosers = org.Links.Where(l => l.Rel == "brownnoser").ToList();
                Assert.Equal(2, brownnosers.Count);
                Assert.Equal("/api/organisations/3/brown/1", brownnosers[0].Href);
                Assert.Equal("/api/organisations/3/brown/2", brownnosers[1].Href);
            }
        }
Example #2
0
        public async Task simplelist_post_json_test()
        {
            // arrange
            var mediaFormatter = new JsonHalMediaTypeInputFormatter(
                NullLogger.Instance,
                new JsonSerializerSettings {
                Formatting = Formatting.Indented
            },
                ArrayPool <char> .Shared,
                new DefaultObjectPoolProvider(),
                new MvcOptions(),
                new MvcJsonOptions());

            var          type = typeof(MySimpleList);
            const string json = @"
{
""_embedded"": {
 ""organisation"": [
   {""Id"": ""7"",""Name"": ""Org Seven"",
    ""_links"": {""self"": {""href"": ""/api/organisations/7""}}},
   {""Id"": ""8"",""Name"": ""Org Eight"",
    ""_links"": {""self"": {""href"": ""/api/organisations/8""}}}
   ]},
""SimpleData"": ""simple string""
}
";

            // act
            using (
                var stream = new MemoryStream(Encoding.UTF8.GetBytes(json))
                )
            {
                var context = new DefaultHttpContext();
                context.Request.Body = stream;
                var obj = await mediaFormatter.ReadAsync(new Microsoft.AspNetCore.Mvc.Formatters.InputFormatterContext(
                                                             context,
                                                             type.ToString(),
                                                             new Microsoft.AspNetCore.Mvc.ModelBinding.ModelStateDictionary(),
                                                             CreateDefaultProvider().GetMetadataForType(type),
                                                             (s, encoding) => new StreamReader(s, encoding)
                                                             ));

                // assert
                Assert.NotNull(obj.Model);
                var orgList = obj.Model as MySimpleList;
                Assert.NotNull(orgList);
                Assert.Equal(2, orgList.ResourceList.Count);
                Assert.Equal(7, orgList.ResourceList[0].Id);
                Assert.Equal("Org Seven", orgList.ResourceList[0].Name);
                Assert.Equal("/api/organisations/7", orgList.ResourceList[0].Href);
                Assert.Equal(8, orgList.ResourceList[1].Id);
                Assert.Equal("Org Eight", orgList.ResourceList[1].Name);
                Assert.Equal("/api/organisations/8", orgList.ResourceList[1].Href);
                Assert.Equal("simple string", orgList.SimpleData);
            }
        }
Example #3
0
        public async Task peopledetail_post_json_embedded_arrays_test()
        {
            // arrange
            var mediaFormatter = new JsonHalMediaTypeInputFormatter(
                NullLogger.Instance,
                new JsonSerializerSettings {
                Formatting = Formatting.Indented
            },
                ArrayPool <char> .Shared,
                new DefaultObjectPoolProvider(),
                new MvcOptions(),
                new MvcJsonOptions());

            var          type = typeof(OrganisationWithPeopleDetailRepresentation);
            const string json = @"
        {
        ""Id"":""3"",
        ""Name"": ""Array Dept."",
        ""_embedded"": {
         ""person"": [
           {""Id"": ""7"",""Name"": ""Person Seven"",""OrganisationId"": ""3"",
            ""_links"": {""self"": {""href"": ""/api/organisations/3/people/7""}}},
           {""Id"": ""9"",""Name"": ""Person Nine"",""OrganisationId"": ""3"",
            ""_links"": {""self"": {""href"": ""/api/organisations/3/people/9""}}}
           ],
         ""boss"": [{""Id"": ""8"",""Name"": ""Person Eight"",""OrganisationId"": ""3"",""HasPointyHair"":""true"",
            ""_links"": {""self"": {""href"": ""/api/organisations/3/boss""}}}]
          }
        }
        ";

            // act
            using (
                var stream = new MemoryStream(Encoding.UTF8.GetBytes(json))
                )
            {
                var context = new DefaultHttpContext();
                context.Request.Body = stream;
                var obj = await mediaFormatter.ReadAsync(new Microsoft.AspNetCore.Mvc.Formatters.InputFormatterContext(
                                                             context,
                                                             type.ToString(),
                                                             new Microsoft.AspNetCore.Mvc.ModelBinding.ModelStateDictionary(),
                                                             CreateDefaultProvider().GetMetadataForType(type),
                                                             (s, encoding) => new StreamReader(s, encoding)
                                                             ));

                // assert
                Assert.NotNull(obj.Model);
                var org = obj.Model as OrganisationWithPeopleDetailRepresentation;
                Assert.NotNull(org);
                Assert.NotNull(org.Boss);
                Assert.Equal(2, org.People.Count);
                Assert.Equal(1, org.Boss.Links.Count);
            }
        }
Example #4
0
        public async Task peopledetail_post_json_embedded_null_test()
        {
            // arrange
            var mediaFormatter = new JsonHalMediaTypeInputFormatter(
                NullLogger.Instance,
                new JsonSerializerSettings {
                Formatting = Formatting.Indented
            },
                ArrayPool <char> .Shared,
                new DefaultObjectPoolProvider(),
                new MvcOptions(),
                new MvcJsonOptions());

            var          type = typeof(OrganisationWithPeopleDetailRepresentation);
            const string json = @"
        {
        ""Id"":""3"",
        ""Name"": ""Singles Dept.""
        }
        ";

            // act
            using (
                var stream = new MemoryStream(Encoding.UTF8.GetBytes(json))
                )
            {
                var context = new DefaultHttpContext();
                context.Request.Body = stream;
                var obj = await mediaFormatter.ReadAsync(new Microsoft.AspNetCore.Mvc.Formatters.InputFormatterContext(
                                                             context,
                                                             type.ToString(),
                                                             new Microsoft.AspNetCore.Mvc.ModelBinding.ModelStateDictionary(),
                                                             CreateDefaultProvider().GetMetadataForType(type),
                                                             (s, encoding) => new StreamReader(s, encoding)
                                                             ));

                // assert
                Assert.NotNull(obj.Model);
                var org = obj.Model as OrganisationWithPeopleDetailRepresentation;
                Assert.NotNull(org);
                Assert.Null(org.Boss);
                Assert.Null(org.People);
            }
        }