// ------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All Rights Reserved. Licensed under the MIT License. See License in the project root for license information. // ------------------------------------------------------------------------------ namespace Test.OneDrive.Sdk.Requests { using System; using System.Collections.Generic; using System.IO; using System.Net.Http; using System.Threading; using System.Threading.Tasks; using Microsoft.OneDrive.Sdk; using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; [TestClass] public class ThumbnailRequestTests : RequestTestBase { [TestMethod] public void ThumbnailContentRequest_BuildRequest() { var expectedRequestUri = new Uri("https://api.onedrive.com/v1.0/drive/items/id/thumbnails/0/id/content"); var thumbnailContentRequestBuilder = this.oneDriveClient.Drive.Items["id"].Thumbnails["0"]["id"].Content as ThumbnailContentRequestBuilder; Assert.IsNotNull(thumbnailContentRequestBuilder, "Unexpected request builder."); Assert.AreEqual(expectedRequestUri, new Uri(thumbnailContentRequestBuilder.RequestUrl), "Unexpected request URL."); var thumbnailContentRequest = thumbnailContentRequestBuilder.Request() as ThumbnailContentRequest; Assert.IsNotNull(thumbnailContentRequest, "Unexpected request."); Assert.AreEqual(expectedRequestUri, new Uri(thumbnailContentRequest.RequestUrl), "Unexpected request URL."); } [TestMethod] public async Task ThumbnailContentRequest_GetAsync() { using (var httpResponseMessage = new HttpResponseMessage()) using (var stringContent = new StringContent("body")) { httpResponseMessage.Content = stringContent; var requestUrl = "https://api.onedrive.com/v1.0/drive/items/id/thumbnails/0/id/content"; this.httpProvider.Setup( provider => provider.SendAsync( It.Is( request => request.RequestUri.ToString().StartsWith(requestUrl)), HttpCompletionOption.ResponseContentRead, CancellationToken.None)) .Returns(Task.FromResult(httpResponseMessage)); using (var response = await this.oneDriveClient.Drive.Items["id"].Thumbnails["0"]["id"].Content.Request().GetAsync()) { Assert.IsNotNull(response, "Response stream not returned."); using (var streamReader = new StreamReader(response)) { var responseString = await streamReader.ReadToEndAsync(); Assert.AreEqual("body", responseString, "Unexpected response returned."); } } } } [TestMethod] public async Task ThumbnailContentRequest_PutAsync() { using (var requestStream = new MemoryStream()) 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/thumbnails/0/id/content"; this.httpProvider.Setup( provider => provider.SendAsync( It.Is( request => request.RequestUri.ToString().StartsWith(requestUrl)), HttpCompletionOption.ResponseContentRead, CancellationToken.None)) .Returns(Task.FromResult(httpResponseMessage)); var expectedThumbnail = new Thumbnail { Url = "https://localhost" }; this.serializer.Setup( serializer => serializer.DeserializeObject(It.IsAny())) .Returns(expectedThumbnail); var responseThumbnail = await this.oneDriveClient.Drive.Items["id"].Thumbnails["0"]["id"].Content.Request().PutAsync(requestStream); Assert.IsNotNull(responseThumbnail, "Thumbnail not returned."); Assert.AreEqual(expectedThumbnail, responseThumbnail, "Unexpected thumbnail returned."); } } [TestMethod] public void ThumbnailSetExtensions_AdditionalDataNull() { var thumbnailSet = new ThumbnailSet(); var thumbnail = thumbnailSet["custom"]; Assert.IsNull(thumbnail, "Unexpected thumbnail returned."); } [TestMethod] public void ThumbnailSetExtensions_CustomThumbnail() { var expectedThumbnail = new Thumbnail { Url = "https://localhost" }; var thumbnailSet = new ThumbnailSet { AdditionalData = new Dictionary { { "custom", expectedThumbnail } } }; var thumbnail = thumbnailSet["custom"]; Assert.IsNotNull(thumbnail, "Custom thumbnail not returned."); Assert.AreEqual(expectedThumbnail.Url, thumbnail.Url, "Unexpected thumbnail returned."); } [TestMethod] public void ThumbnailSetExtensions_CustomThumbnailNotFound() { var expectedThumbnail = new Thumbnail { Url = "https://localhost" }; var thumbnailSet = new ThumbnailSet { AdditionalData = new Dictionary { { "custom", expectedThumbnail } } }; var thumbnail = thumbnailSet["custom2"]; Assert.IsNull(thumbnail, "Unexpected thumbnail returned."); } } }