public async Task SendAsync_ResponseHeaders() { var requestUrl = string.Concat(this.baseUrl, "/me/drive/items/id"); var baseRequest = new BaseRequest(requestUrl, this.baseClient) { ContentType = "application/json" }; var data = "{\"data\"}"; using (var httpResponseMessage = new HttpResponseMessage()) using (var responseStream = new MemoryStream(Encoding.ASCII.GetBytes(data))) using (var streamContent = new StreamContent(responseStream)) { httpResponseMessage.Content = streamContent; httpResponseMessage.StatusCode = System.Net.HttpStatusCode.OK; this.httpProvider.Setup( provider => provider.SendAsync( It.Is <HttpRequestMessage>( request => string.Equals(request.Content.Headers.ContentType.ToString(), "application/json") && request.RequestUri.ToString().Equals(requestUrl)), HttpCompletionOption.ResponseContentRead, CancellationToken.None)) .Returns(Task.FromResult(httpResponseMessage)); Dictionary <string, object> additionalData = new Dictionary <string, object>(); additionalData["responseHeaders"] = new Dictionary <string, List <string> >() { { "key", new List <string>() { "value" } } }; var expectedResponseItem = new DerivedTypeClass { Id = "id", AdditionalData = additionalData }; this.serializer.Setup( serializer => serializer.DeserializeObject <DerivedTypeClass>(It.IsAny <string>())) .Returns(expectedResponseItem); this.serializer.Setup( serializer => serializer.DeserializeObject <DerivedTypeClass>(It.IsAny <string>())) .Returns(expectedResponseItem); var responseItem = await baseRequest.SendAsync <DerivedTypeClass>("string", CancellationToken.None); Assert.NotNull(responseItem.AdditionalData["responseHeaders"]); Assert.NotNull(baseRequest.Client.AuthenticationProvider); Assert.NotNull(baseRequest.GetHttpRequestMessage().GetRequestContext().ClientRequestId); Assert.Equal(expectedResponseItem.AdditionalData["responseHeaders"], responseItem.AdditionalData["responseHeaders"]); } }
public async Task SendAsyncSupportsContentTypeWithParameters() { // Arrange var requestUrl = string.Concat(this.baseUrl, "/me/drive/items/id"); // Create a request that has content type with parameters var baseRequest = new BaseRequest(requestUrl, this.baseClient) { ContentType = "application/json; odata=verbose" }; using (var httpResponseMessage = new HttpResponseMessage()) using (var responseStream = new MemoryStream()) using (var streamContent = new StreamContent(responseStream)) { httpResponseMessage.Content = streamContent; this.httpProvider.Setup( provider => provider.SendAsync( It.Is <HttpRequestMessage>( request => string.Equals(request.Content.Headers.ContentType.ToString(), "application/json; odata=verbose") && request.RequestUri.ToString().Equals(requestUrl)), HttpCompletionOption.ResponseContentRead, CancellationToken.None)) .Returns(Task.FromResult(httpResponseMessage)); var expectedResponseItem = new DerivedTypeClass { Id = "id" }; this.serializer.Setup( serializer => serializer.SerializeObject(It.IsAny <string>())) .Returns(string.Empty); this.serializer.Setup( serializer => serializer.DeserializeObject <DerivedTypeClass>(It.IsAny <string>())) .Returns(expectedResponseItem); // Act var responseItem = await baseRequest.SendAsync <DerivedTypeClass>("string", CancellationToken.None); // Assert Assert.NotNull(responseItem); Assert.Equal(expectedResponseItem.Id, responseItem.Id); Assert.NotNull(baseRequest.Client.AuthenticationProvider); Assert.NotNull(baseRequest.GetHttpRequestMessage().GetRequestContext().ClientRequestId); Assert.Equal(baseRequest.GetHttpRequestMessage().GetMiddlewareOption <AuthenticationHandlerOption>().AuthenticationProvider, baseRequest.Client.AuthenticationProvider); Assert.Equal("application/json; odata=verbose", baseRequest.ContentType); } }
public async Task SendAsync() { var requestUrl = string.Concat(this.baseUrl, "/me/drive/items/id"); var baseRequest = new BaseRequest(requestUrl, this.baseClient) { ContentType = "application/json" }; using (var httpResponseMessage = new HttpResponseMessage()) using (var responseStream = new MemoryStream()) using (var streamContent = new StreamContent(responseStream)) { httpResponseMessage.Content = streamContent; this.httpProvider.Setup( provider => provider.SendAsync( It.Is <HttpRequestMessage>( request => string.Equals(request.Content.Headers.ContentType.ToString(), "application/json") && request.RequestUri.ToString().Equals(requestUrl)), HttpCompletionOption.ResponseContentRead, CancellationToken.None)) .Returns(Task.FromResult(httpResponseMessage)); var expectedResponseItem = new DerivedTypeClass { Id = "id" }; this.serializer.Setup( serializer => serializer.SerializeObject(It.IsAny <string>())) .Returns(string.Empty); this.serializer.Setup( serializer => serializer.DeserializeObject <DerivedTypeClass>(It.IsAny <string>())) .Returns(expectedResponseItem); var responseItem = await baseRequest.SendAsync <DerivedTypeClass>("string", CancellationToken.None); Assert.IsNotNull(responseItem, "DerivedTypeClass not returned."); Assert.AreEqual(expectedResponseItem.Id, responseItem.Id, "Unexpected ID."); this.authenticationProvider.Verify(provider => provider.AuthenticateRequestAsync(It.IsAny <HttpRequestMessage>()), Times.Once); } }
public void SerializeAndDeserializeKnownEnumValue() { var instance = new DerivedTypeClass { Id = "id", EnumType = EnumType.Value, }; var expectedSerializedStream = string.Format( "{{\"enumType\":\"{0}\",\"id\":\"{1}\"}}", "value", instance.Id); var serializedValue = this.serializer.SerializeObject(instance); Assert.Equal(expectedSerializedStream, serializedValue); var newInstance = this.serializer.DeserializeObject <DerivedTypeClass>(serializedValue); Assert.NotNull(newInstance); Assert.Equal(instance.Id, instance.Id); Assert.Equal(EnumType.Value, instance.EnumType); Assert.Null(instance.AdditionalData); }
public void SerializeAndDeserializeKnownEnumValue() { var instance = new DerivedTypeClass { Id = "id", EnumType = EnumType.Value, }; var expectedSerializedStream = string.Format( "{{\"enumType\":\"{0}\",\"id\":\"{1}\"}}", "value", instance.Id); var serializedValue = this.serializer.SerializeObject(instance); Assert.AreEqual(expectedSerializedStream, serializedValue, "Unexpected value serialized."); var newInstance = this.serializer.DeserializeObject <DerivedTypeClass>(serializedValue); Assert.IsNotNull(newInstance, "Object not correctly deserialized."); Assert.AreEqual(instance.Id, instance.Id, "Unexpected ID initialized."); Assert.AreEqual(EnumType.Value, instance.EnumType, "Unexpected EnumType initialized."); Assert.IsNull(instance.AdditionalData, "Additional data initialized."); }