Esempio n. 1
0
        public void RequestDeltaLink_Projection()
        {
            var customersSet = Model.FindDeclaredEntitySet("Customers");
            var cutomerType  = customersSet.EntityType();

            ODataMessageReaderSettings readerSettings = new ODataMessageReaderSettings()
            {
                BaseUri = ServiceBaseUri
            };

            foreach (var mimeType in deltaMimeTypes)
            {
                var requestMessage = new HttpWebRequestMessage(new Uri(ServiceBaseUri.AbsoluteUri + "$delta?$token=projection", UriKind.Absolute));
                requestMessage.SetHeader("Accept", mimeType);
                var responseMessage = requestMessage.GetResponse();
                Assert.Equal(200, responseMessage.StatusCode);

                if (!mimeType.Contains(MimeTypes.ODataParameterNoMetadata))
                {
                    using (var messageReader = new ODataMessageReader(responseMessage, readerSettings, Model))
                    {
                        var deltaReader = messageReader.CreateODataDeltaReader(customersSet, cutomerType);

                        while (deltaReader.Read())
                        {
                            if (deltaReader.State == ODataDeltaReaderState.DeltaResourceEnd)
                            {
                                ODataResource entry = deltaReader.Item as ODataResource;
                            }
                        }
                        Assert.Equal(ODataDeltaReaderState.Completed, deltaReader.State);
                    }
                }
            }
        }
Esempio n. 2
0
        public void RequestDeltaLink_Expanded()
        {
            var customersSet = Model.FindDeclaredEntitySet("Customers");
            var customerType = customersSet.EntityType();

            ODataMessageReaderSettings readerSettings = new ODataMessageReaderSettings()
            {
                BaseUri = ServiceBaseUri
            };

            foreach (var mimeType in deltaMimeTypes)
            {
                var requestMessage = new HttpWebRequestMessage(new Uri(ServiceBaseUri.AbsoluteUri + "$delta?$token=expanded", UriKind.Absolute));
                requestMessage.SetHeader("Accept", mimeType);
                var responseMessage = requestMessage.GetResponse();
                Assert.AreEqual(200, responseMessage.StatusCode);

                // Currently don't test full metadata because the delta reader doesn't support reading
                // annotations on expanded navigation properties, metadata reference properties and paging.
                if (mimeType.Contains(MimeTypes.ODataParameterMinimalMetadata))
                {
                    using (var messageReader = new ODataMessageReader(responseMessage, readerSettings, Model))
                    {
                        var deltaReader = messageReader.CreateODataDeltaReader(customersSet, customerType);

                        while (deltaReader.Read())
                        {
                            if (deltaReader.State == ODataDeltaReaderState.FeedEnd)
                            {
                                Assert.IsNotNull(deltaReader.Item as ODataDeltaFeed);
                            }
                            else if (deltaReader.State == ODataDeltaReaderState.DeltaEntryEnd)
                            {
                                Assert.IsNotNull(deltaReader.Item as ODataEntry);
                            }
                            else if (deltaReader.State == ODataDeltaReaderState.ExpandedNavigationProperty)
                            {
                                switch (deltaReader.SubState)
                                {
                                case ODataReaderState.FeedEnd:
                                    Assert.IsNotNull(deltaReader.Item as ODataFeed);
                                    break;

                                case ODataReaderState.EntryEnd:
                                    Assert.IsNotNull(deltaReader.Item as ODataEntry);
                                    break;

                                case ODataReaderState.NavigationLinkEnd:
                                    Assert.IsNotNull(deltaReader.Item as ODataNavigationLink);
                                    break;
                                }
                            }
                        }

                        Assert.AreEqual(ODataDeltaReaderState.Completed, deltaReader.State);
                    }
                }
            }
        }
Esempio n. 3
0
        public void RequestDeltaLink_Containment()
        {
            var accountsSet = this.Model.FindDeclaredEntitySet("Accounts");
            var accountType = accountsSet.EntityType();
            var myPisNav    = accountType.FindProperty("MyPaymentInstruments") as IEdmNavigationProperty;
            var piSet       = accountsSet.FindNavigationTarget(myPisNav) as IEdmEntitySetBase;
            var piType      = piSet.EntityType();

            ODataMessageReaderSettings readerSettings = new ODataMessageReaderSettings()
            {
                BaseUri = ServiceBaseUri
            };

            foreach (var mimeType in deltaMimeTypes)
            {
                var requestMessage = new HttpWebRequestMessage(new Uri(ServiceBaseUri.AbsoluteUri + "$delta?$token=containment", UriKind.Absolute));
                requestMessage.SetHeader("Accept", mimeType);
                var responseMessage = requestMessage.GetResponse();
                Assert.Equal(200, responseMessage.StatusCode);

                if (!mimeType.Contains(MimeTypes.ODataParameterNoMetadata))
                {
                    using (var messageReader = new ODataMessageReader(responseMessage, readerSettings, Model))
                    {
                        var deltaReader = messageReader.CreateODataDeltaReader(piSet, piType);

                        while (deltaReader.Read())
                        {
                            if (deltaReader.State == ODataDeltaReaderState.DeltaResourceEnd)
                            {
                                ODataResource entry = deltaReader.Item as ODataResource;
                            }
                        }
                        Assert.Equal(ODataDeltaReaderState.Completed, deltaReader.State);
                    }
                }
            }
        }