Пример #1
0
        private async Task ItemDeltaRequest_GetAsync(bool includeNextLink)
        {
            using (var httpResponseMessage = new HttpResponseMessage())
                using (var responseStream = new MemoryStream())
                    using (var streamContent = new StreamContent(responseStream))
                    {
                        httpResponseMessage.Content = streamContent;

                        var requestUrl = "https://api.onedrive.com/v1.0/drive/items/id/oneDrive.delta";
                        this.httpProvider.Setup(
                            provider => provider.SendAsync(
                                It.Is <HttpRequestMessage>(
                                    request => request.RequestUri.ToString().StartsWith(requestUrl)),
                                HttpCompletionOption.ResponseContentRead,
                                CancellationToken.None))
                        .Returns(Task.FromResult(httpResponseMessage));

                        var expectedDeltaCollectionPage = new ItemDeltaCollectionPage
                        {
                            new Item {
                                Id = "id"
                            }
                        };

                        var expectedDeltaResponse = new ItemDeltaCollectionResponse
                        {
                            DeltaLink = "deltaLink",
                            Token     = "nextToken",
                            Value     = expectedDeltaCollectionPage
                        };

                        if (includeNextLink)
                        {
                            expectedDeltaResponse.AdditionalData = new Dictionary <string, object>
                            {
                                { "@odata.nextLink", requestUrl + "/next" }
                            };
                        }

                        this.serializer.Setup(
                            serializer => serializer.DeserializeObject <ItemDeltaCollectionResponse>(It.IsAny <string>()))
                        .Returns(expectedDeltaResponse);

                        var deltaCollectionPage = await this.oneDriveClient.Drive.Items["id"].Delta("token").Request().GetAsync();

                        Assert.IsNotNull(deltaCollectionPage, "Collection page not returned.");
                        Assert.AreEqual(1, deltaCollectionPage.CurrentPage.Count, "Unexpected number of items in page.");
                        Assert.AreEqual("id", deltaCollectionPage.CurrentPage[0].Id, "Unexpected item ID in page.");
                        Assert.AreEqual(expectedDeltaResponse.DeltaLink, deltaCollectionPage.DeltaLink, "Unexpected delta link in page.");
                        Assert.AreEqual(expectedDeltaResponse.Token, deltaCollectionPage.Token, "Unexpected token in page.");

                        if (includeNextLink)
                        {
                            var nextPageRequest = deltaCollectionPage.NextPageRequest as ItemDeltaRequest;
                            Assert.IsNotNull(nextPageRequest, "Next page request not initialized correctly.");
                            Assert.AreEqual(new Uri(requestUrl + "/next"), new Uri(nextPageRequest.RequestUrl), "Unexpected request URL for next page request.");
                            Assert.AreEqual(expectedDeltaResponse.AdditionalData, deltaCollectionPage.AdditionalData, "Additional data not initialized correctly.");
                        }
                    }
        }
        private async Task ItemDeltaRequest_GetAsync(bool includeNextLink)
        {
            using (var httpResponseMessage = new HttpResponseMessage())
            using (var responseStream = new MemoryStream())
            using (var streamContent = new StreamContent(responseStream))
            {
                httpResponseMessage.Content = streamContent;
                
                var requestUrl = Constants.Authentication.OneDriveConsumerBaseUrl + "/drive/items/id/view.delta";
                this.httpProvider.Setup(
                    provider => provider.SendAsync(
                        It.Is<HttpRequestMessage>(
                            request => request.RequestUri.ToString().StartsWith(requestUrl))))
                    .Returns(Task.FromResult(httpResponseMessage));

                var expectedDeltaCollectionPage = new ItemDeltaCollectionPage
                {
                    new Item { Id = "id" }
                };

                var expectedDeltaResponse = new ItemDeltaCollectionResponse
                {
                    DeltaLink = "deltaLink",
                    Token = "nextToken",
                    Value = expectedDeltaCollectionPage
                };

                if (includeNextLink)
                {
                    expectedDeltaResponse.AdditionalData = new Dictionary<string, object>
                    {
                        { "@odata.nextLink", requestUrl + "/next" }
                    };
                }

                this.serializer.Setup(
                    serializer => serializer.DeserializeObject<ItemDeltaCollectionResponse>(It.IsAny<string>()))
                    .Returns(expectedDeltaResponse);

                var deltaCollectionPage = await this.oneDriveClient.Drive.Items["id"].Delta("token").Request().GetAsync();

                Assert.IsNotNull(deltaCollectionPage, "Collection page not returned.");
                Assert.AreEqual(1, deltaCollectionPage.CurrentPage.Count, "Unexpected number of items in page.");
                Assert.AreEqual("id", deltaCollectionPage.CurrentPage[0].Id, "Unexpected item ID in page.");
                Assert.AreEqual(expectedDeltaResponse.DeltaLink, deltaCollectionPage.DeltaLink, "Unexpected delta link in page.");
                Assert.AreEqual(expectedDeltaResponse.Token, deltaCollectionPage.Token, "Unexpected token in page.");

                if (includeNextLink)
                {
                    var nextPageRequest = deltaCollectionPage.NextPageRequest as ItemDeltaRequest;
                    Assert.IsNotNull(nextPageRequest, "Next page request not initialized correctly.");
                    Assert.AreEqual(new Uri(requestUrl + "/next"), new Uri(nextPageRequest.RequestUrl), "Unexpected request URL for next page request.");
                    Assert.AreEqual(expectedDeltaResponse.AdditionalData, deltaCollectionPage.AdditionalData, "Additional data not initialized correctly.");
                }
            }
        }