public void PicksUpOrdersLinkFromCustomers()
        {
            var content = new Content(new Uri("http://test.com/customer/42"), new CustomerHandler(),
                                      new[] { new Customer {
                                                  Id = 42
                                              } });
            var    target = new ExplicitXmlMediaTypeHandler();
            string actual;

            using (var stream = new StringBuilderStream())
            {
                target.Write <IEnumerable <Customer> >(content, stream).Wait();
                actual = stream.StringValue;
            }
            Assert.NotNull(actual);

            const string expected = "<Customers>" +
                                    "  <Customer Id='42'>" +
                                    "    <link href='/customer/42/contacts' rel='customer.contacts' type='application/vnd.contact+xml' />" +
                                    "    <link href='/customer/42/orders' rel='customer.orders' type='application/vnd.list.order+xml' xmlns='' />" +
                                    "    <link href='/customer/42' rel='self' type='application/vnd.customer+xml' xmlns='' />" +
                                    "  </Customer>" +
                                    "</Customers>";

            XElement.Parse(actual).ShouldEqual(expected);
        }
Пример #2
0
 /// <summary>
 /// Creates the Blob from a <see cref="StringBuilder"/>.
 /// </summary>
 /// <param name="repository">The repository.</param>
 /// <param name="content">The content.</param>
 /// <returns>New newly created Blob.</returns>
 internal static Blob CreateBlob(this IRepository repository, StringBuilder content)
 {
     using (var stream = new StringBuilderStream(content))
     {
         return(repository.ObjectDatabase.CreateBlob(stream));
     }
 }
        public void PicksUpOrdersLinkFromCustomers()
        {
            var content = new Content(new Uri("http://test.com/customer/42"), new CustomerHandler(),
                                      new[] { new Customer {
                                                  Id = 42
                                              } });
            var    target = new DataContractXmlMediaTypeHandler();
            string actual;

            using (var stream = new StringBuilderStream())
            {
                target.Write <IEnumerable <Customer> >(content, stream).Wait();
                actual = stream.StringValue;
            }
            Assert.NotNull(actual);

            const string expected = "<?xml version='1.0' encoding='utf-8'?>" +
                                    "<Customers>" +
                                    "  <Customer xmlns='http://schemas.datacontract.org/2004/07/Simple.Web.TestHelpers.Sample'" +
                                    "            xmlns:i='http://www.w3.org/2001/XMLSchema-instance'>" +
                                    "    <Id>42</Id>" +
                                    "    <Orders i:nil='true' />" +
                                    "    <link href='/customer/42/contacts' rel='customer.contacts' type='application/vnd.contact+xml' xmlns='' />" +
                                    "    <link href='/customer/42/orders' rel='customer.orders' type='application/vnd.list.order+xml' xmlns='' />" +
                                    "    <link href='/customer/42' rel='self' type='application/vnd.customer+xml' xmlns='' />" +
                                    "  </Customer>" +
                                    "</Customers>";

            XElement.Parse(actual).ShouldEqual(expected);
        }
        public void PicksUpOrdersLinkFromCustomers()
        {
            const string idProperty = @"""Id"":42";
            const string ordersLink =
                @"{""Title"":null,""Href"":""/customer/42/orders"",""Rel"":""customer.orders"",""Type"":""application/vnd.list.order+json""}";
            const string selfLink =
                @"{""Title"":null,""Href"":""/customer/42"",""Rel"":""self"",""Type"":""application/vnd.customer+json""}";

            var content = new Content(new Uri("http://test.com/customer/42"), new CustomerHandler(),
                                      new[] { new Customer {
                                                  Id = 42
                                              } });
            var    target = new JsonMediaTypeHandler();
            string actual;

            using (var stream = new StringBuilderStream())
            {
                target.Write <IEnumerable <Customer> >(content, stream).Wait();
                actual = stream.StringValue;
            }
            Assert.NotNull(actual);
            Assert.Contains(idProperty, actual);
            Assert.Contains(ordersLink, actual);
            Assert.Contains(selfLink, actual);
        }
        public void SerializesOrder()
        {
            var content = new Content(new Uri("http://test.com/order/42"), new OrderHandler(),
                                      new Order {
                Id = 54, CustomerId = 42
            });
            var    target = new DataContractXmlMediaTypeHandler();
            string actual;

            using (var stream = new StringBuilderStream())
            {
                target.Write <Order>(content, stream).Wait();
                actual = stream.StringValue;
            }
            Assert.NotNull(actual);

            const string expected =
                "<Order xmlns='http://schemas.datacontract.org/2004/07/Simple.Web.TestHelpers.Sample'" +
                "       xmlns:i='http://www.w3.org/2001/XMLSchema-instance'>" +
                "  <CustomerId>42</CustomerId>" +
                "  <Id>54</Id>" +
                "  <link href='/order/54' rel='self' type='application/vnd.order+xml' xmlns='' />" +
                "</Order>";

            XElement.Parse(actual).ShouldEqual(expected);
        }
        public void PicksUpOrdersLinkFromCustomer()
        {
            const string idProperty = @"""id"":42";
            const string ordersLink =
                @"{""title"":null,""href"":""/customer/42/orders"",""rel"":""customer.orders"",""type"":""application/vnd.list.order+json""}";
            const string selfLink =
                @"{""title"":null,""href"":""/customer/42"",""rel"":""self"",""type"":""application/vnd.customer+json""}";

            var content = new Content(new Uri("http://test.com/customer/42"), new CustomerHandler(),
                                      new Customer {
                Id = 42
            });
            var target = new JsonMediaTypeHandler
            {
                JsonLinksFormatter = new SimpleJsonLinksFormatter()
            };
            string json;

            using (var stream = new StringBuilderStream())
            {
                target.Write <Customer>(content, stream).Wait();
                json = stream.StringValue;
            }
            var jobj  = JObject.Parse(json);
            var links = jobj["_links"] as JObject;

            Assert.NotNull(links);
            Assert.Equal(links["customer.orders"].ToString(), "/customer/42/orders");
            Assert.Equal(links["self"].ToString(), "/customer/42");
        }
        public void PicksUpPathFromThing()
        {
            const string thingLink =
                @"{""title"":null,""href"":""/things?path=%2Ffoo%2Fbar"",""rel"":""self"",""type"":""application/json""}";

            var content = new Content(new Uri("http://test.com/foo/bar"), new ThingHandler(),
                                      new Thing {
                Path = "/foo/bar"
            });
            var target = new JsonMediaTypeHandler
            {
                JsonLinksFormatter = new SimpleJsonLinksFormatter()
            };
            string json;

            using (var stream = new StringBuilderStream())
            {
                target.Write <Thing>(content, stream).Wait();
                json = stream.StringValue;
            }
            var jobj  = JObject.Parse(json);
            var links = jobj["_links"] as JObject;

            Assert.NotNull(links);
            Assert.Equal(links["self"].ToString(), "/things?path=%2Ffoo%2Fbar");
        }
        public void PicksUpOrdersLinkFromCustomer()
        {
            const string idProperty = @"""id"":42";
            const string ordersLink =
                @"{""title"":null,""href"":""/customer/42/orders"",""rel"":""customer.orders"",""type"":""application/vnd.list.order+json""}";
            const string selfLink =
                @"{""title"":null,""href"":""/customer/42"",""rel"":""self"",""type"":""application/vnd.customer+json""}";

            var content = new Content(new Uri("http://test.com/customer/42"), new CustomerHandler(),
                new Customer {Id = 42});
            var target = new JsonMediaTypeHandler
            {
                JsonLinksFormatter = new SimpleJsonLinksFormatter()
            };
            string json;
            using (var stream = new StringBuilderStream())
            {
                target.Write<Customer>(content, stream).Wait();
                json = stream.StringValue;
            }
            var jobj = JObject.Parse(json);
            var links = jobj["_links"] as JObject;
            Assert.NotNull(links);
            Assert.Equal(links["customer.orders"].ToString(), "/customer/42/orders");
            Assert.Equal(links["self"].ToString(), "/customer/42");
        }
Пример #9
0
        private static void TestWriteMultiple(IMediaTypeHandler handler)
        {
            string actual;

            using (var stream = new StringBuilderStream())
            {
                handler.Write <IEnumerable <Customer> >(TestData.MultipleContent, stream).Wait();
                actual = stream.StringValue;
            }
            if (actual == null)
            {
                throw new Exception("No Output!");
            }
        }
        public void SerializesCyrillicText()
        {
            const string russian = "Мыа алиё лаборамюз ед, ведят промпта элыктрам квюо ты.";
            var content = new Content(new Uri("http://test.com/customer/42"), new ThingHandler(),
                                      new Thing {Path = russian});
            var target = new JsonMediaTypeHandler();
            string actual;
            using (var stream = new StringBuilderStream())
            {
                target.Write<Thing>(content, stream).Wait();
                actual = stream.StringValue;
            }

            Assert.Contains(russian, actual);
        }
        public void SerializingListToJsonHasExpectedData()
        {
            const string expectedString = "{\"Customers\":[{\"Id\":42,\"Orders\":null}]}";

            var content = new Content(new Uri("http://test.com/customer/42"), new CustomersListHandler(), new CustomerList() { Customers = new List<Customer>() { new Customer { Id = 42 } } });
            var target = new JsonMediaTypeHandler();
            string actual;
            using (var stream = new StringBuilderStream())
            {
                target.Write<CustomerList>(content, stream).Wait();
                actual = stream.StringValue;
            }
            Assert.NotNull(actual);      
            Assert.Equal(expectedString, actual);
        }
        public void WritesJsonWithEnum()
        {
            var content = new Content(new Uri("http://test.com/EnumCustomer/42"), new EnumCustomerHandler(),
                                      new[] {new EnumCustomer() {AnEnum = MyEnum.Ian}});
            var target = new JsonMediaTypeHandler();

            string actual;

            using (var stream = new StringBuilderStream())
            {
                target.Write<EnumCustomer>(content, stream).Wait();
                actual = stream.StringValue;
            }

            Assert.NotNull(actual);
        }
        public void PicksUpContactsLinkFromCustomer()
        {
            const string contactsLink =
                @"{""title"":null,""href"":""/customer/42/contacts"",""rel"":""customer.contacts"",""type"":""application/vnd.contact+json""}";

            var content = new Content(new Uri("http://test.com/customer/42"), new CustomerHandler(),
                                      new Customer {Id = 42});
            var target = new JsonMediaTypeHandler();
            string actual;
            using (var stream = new StringBuilderStream())
            {
                target.Write<Customer>(content, stream).Wait();
                actual = stream.StringValue;
            }
            Assert.NotNull(actual);
            Assert.Contains(contactsLink, actual);
        }
Пример #14
0
        public void SerializesCyrillicText()
        {
            const string russian = "Мыа алиё лаборамюз ед, ведят промпта элыктрам квюо ты.";
            var          content = new Content(new Uri("http://test.com/customer/42"), new ThingHandler(),
                                               new Thing {
                Path = russian
            });
            var    target = new JsonMediaTypeHandler();
            string actual;

            using (var stream = new StringBuilderStream())
            {
                target.Write <Thing>(content, stream).Wait();
                actual = stream.StringValue;
            }

            Assert.Contains(russian, actual);
        }
        public void WritesJsonWithEnum()
        {
            var content = new Content(new Uri("http://test.com/EnumCustomer/42"), new EnumCustomerHandler(),
                                      new[] { new EnumCustomer()
                                              {
                                                  AnEnum = MyEnum.Ian
                                              } });
            var target = new JsonMediaTypeHandler();

            string actual;

            using (var stream = new StringBuilderStream())
            {
                target.Write <EnumCustomer>(content, stream).Wait();
                actual = stream.StringValue;
            }

            Assert.NotNull(actual);
        }
Пример #16
0
        public void PicksUpPathFromThing()
        {
            const string thingLink =
                @"{""title"":null,""href"":""/things?path=%2Ffoo%2Fbar"",""rel"":""self"",""type"":""application/json""}";

            var content = new Content(new Uri("http://test.com/foo/bar"), new ThingHandler(),
                                      new Thing {
                Path = "/foo/bar"
            });
            var    target = new JsonMediaTypeHandler();
            string actual;

            using (var stream = new StringBuilderStream())
            {
                target.Write <Thing>(content, stream).Wait();
                actual = stream.StringValue;
            }
            Assert.NotNull(actual);
            Assert.Contains(thingLink, actual);
        }
Пример #17
0
        public void PicksUpContactsLinkFromCustomer()
        {
            const string contactsLink =
                @"{""title"":null,""href"":""/customer/42/contacts"",""rel"":""customer.contacts"",""type"":""application/vnd.contact+json""}";

            var content = new Content(new Uri("http://test.com/customer/42"), new CustomerHandler(),
                                      new Customer {
                Id = 42
            });
            var    target = new JsonMediaTypeHandler();
            string actual;

            using (var stream = new StringBuilderStream())
            {
                target.Write <Customer>(content, stream).Wait();
                actual = stream.StringValue;
            }
            Assert.NotNull(actual);
            Assert.Contains(contactsLink, actual);
        }
        public void PicksUpPathFromThing()
        {
            const string thingLink =
                @"{""title"":null,""href"":""/things?path=%2Ffoo%2Fbar"",""rel"":""self"",""type"":""application/json""}";

            var content = new Content(new Uri("http://test.com/foo/bar"), new ThingHandler(),
                new Thing {Path = "/foo/bar"});
            var target = new JsonMediaTypeHandler
            {
                JsonLinksFormatter = new SimpleJsonLinksFormatter()
            };
            string json;
            using (var stream = new StringBuilderStream())
            {
                target.Write<Thing>(content, stream).Wait();
                json = stream.StringValue;
            }
            var jobj = JObject.Parse(json);
            var links = jobj["_links"] as JObject;
            Assert.NotNull(links);
            Assert.Equal(links["self"].ToString(), "/things?path=%2Ffoo%2Fbar");
        }
        public void PicksUpOrdersLinkFromCustomers()
        {
            const string idProperty = @"""Id"":42";
            const string ordersLink =
                @"{""Title"":null,""Href"":""/customer/42/orders"",""Rel"":""customer.orders"",""Type"":""application/vnd.list.order+json""}";
            const string selfLink =
                @"{""Title"":null,""Href"":""/customer/42"",""Rel"":""self"",""Type"":""application/vnd.customer+json""}";

            var content = new Content(new Uri("http://test.com/customer/42"), new CustomerHandler(),
                                      new[] {new Customer {Id = 42}});
            var target = new JsonMediaTypeHandler();
            string actual;
            using (var stream = new StringBuilderStream())
            {
                target.Write<IEnumerable<Customer>>(content, stream).Wait();
                actual = stream.StringValue;
            }
            Assert.NotNull(actual);
            Assert.Contains(idProperty, actual);
            Assert.Contains(ordersLink, actual);
            Assert.Contains(selfLink, actual);
        }
        public void SerializesOrder()
        {
            var content = new Content(new Uri("http://test.com/order/42"), new OrderHandler(),
                                      new Order {
                Id = 54, CustomerId = 42
            });
            var    target = new ExplicitXmlMediaTypeHandler();
            string actual;

            using (var stream = new StringBuilderStream())
            {
                target.Write <Order>(content, stream).Wait();
                actual = stream.StringValue;
            }
            Assert.NotNull(actual);

            const string expected = "<Order Id='54' CustomerId='42'>" +
                                    "  <link href='/order/54' rel='self' type='application/vnd.order+xml' />" +
                                    "</Order>";

            XElement.Parse(actual).ShouldEqual(expected);
        }
        public void ReadToEnd(StringBuilder stringBuilder)
        {
            // Act
            string result;
            StringBuilderStream sut = null;

            try
            {
                sut = new StringBuilderStream(stringBuilder);
                using (var reader = new StreamReader(sut, Encoding.Default, true, 1024, true))
                {
                    result = reader.ReadToEnd();
                }
            }
            finally
            {
                sut?.Dispose();
            }

            // Assert
            Assert.That(result, Is.EqualTo(stringBuilder.ToString()));
        }
        public void AddsSelfLinkToChildCollectionItems()
        {
            var customer = new Customer
            {
                Id     = 42,
                Orders = new List <Order> {
                    new Order {
                        CustomerId = 42, Id = 54
                    }
                }
            };
            var content = new Content(new Uri("http://test.com/customer/42"), new CustomerHandler(), customer);
            var target  = new JsonMediaTypeHandlerWithDeepLinks();

            string actual;

            using (var stream = new StringBuilderStream())
            {
                target.Write <Customer>(content, stream).Wait();
                actual = stream.StringValue;
            }
            Assert.NotNull(actual);
            var jobj   = JObject.Parse(actual);
            var orders = jobj["orders"] as JArray;

            Assert.NotNull(orders);
            var order = orders[0] as JObject;

            Assert.NotNull(order);
            var links = order["links"] as JArray;

            Assert.NotNull(links);
            var self = links.FirstOrDefault(jt => jt["rel"].Value <string>() == "self");

            Assert.NotNull(self);
            Assert.Equal("/order/54", self["href"].Value <string>());
            Assert.Equal("application/vnd.order+json", self["type"].Value <string>());
        }
        public void SerializingListToJsonHasExpectedData()
        {
            const string expectedString = "{\"Customers\":[{\"Id\":42,\"Orders\":null}]}";

            var content = new Content(new Uri("http://test.com/customer/42"), new CustomersListHandler(), new CustomerList()
            {
                Customers = new List <Customer>()
                {
                    new Customer {
                        Id = 42
                    }
                }
            });
            var    target = new JsonMediaTypeHandler();
            string actual;

            using (var stream = new StringBuilderStream())
            {
                target.Write <CustomerList>(content, stream).Wait();
                actual = stream.StringValue;
            }
            Assert.NotNull(actual);
            Assert.Equal(expectedString, actual);
        }
        public void AddsSelfLinkToChildCollectionItems()
        {
            var customer = new Customer
                {
                    Id = 42,
                    Orders = new List<Order> {new Order {CustomerId = 42, Id = 54}}
                };
            var content = new Content(new Uri("http://test.com/customer/42"), new CustomerHandler(), customer);
            var target = new JsonMediaTypeHandlerWithDeepLinks();

            string actual;
            using (var stream = new StringBuilderStream())
            {
                target.Write<Customer>(content, stream).Wait();
                actual = stream.StringValue;
            }
            Assert.NotNull(actual);
            var jobj = JObject.Parse(actual);
            var orders = jobj["orders"] as JArray;
            Assert.NotNull(orders);
            var order = orders[0] as JObject;
            Assert.NotNull(order);
            var links = order["links"] as JArray;
            Assert.NotNull(links);
            var self = links.FirstOrDefault(jt => jt["rel"].Value<string>() == "self");
            Assert.NotNull(self);
            Assert.Equal("/order/54", self["href"].Value<string>());
            Assert.Equal("application/vnd.order+json", self["type"].Value<string>());
        }
        public void PicksUpPathFromThing()
        {
            const string thingLink =
                @"{""title"":null,""href"":""/things?path=%2Ffoo%2Fbar"",""rel"":""self"",""type"":""application/json""}";

            var content = new Content(new Uri("http://test.com/foo/bar"), new ThingHandler(),
                                      new Thing {Path = "/foo/bar"});
            var target = new JsonMediaTypeHandler();
            string actual;
            using (var stream = new StringBuilderStream())
            {
                target.Write<Thing>(content, stream).Wait();
                actual = stream.StringValue;
            }
            Assert.NotNull(actual);
            Assert.Contains(thingLink, actual);
        }
 public void UnsupportedMembers(StringBuilder stringBuilder)
 {
     using (var sut = new StringBuilderStream(stringBuilder))
     {
         Assert.Throws <NotSupportedException>(() => sut.Seek(default, default));