public void ConstructsUriWithPreservedDuplicateGivenParams() { var requestInfo = new RequestInfo(HttpMethod.Get, null); requestInfo.AddQueryParameter(QuerySerializationMethod.ToString, "bar", "baz"); requestInfo.AddQueryParameter(QuerySerializationMethod.ToString, "bar", "baz2"); var uri = this.requester.ConstructUri(null, "/foo", requestInfo); Assert.Equal(new Uri("http://api.example.com/base/foo?bar=baz&bar=baz2"), uri); }
public void EncodesNullQueryKeys() { var requestInfo = new RequestInfo(HttpMethod.Get, null); requestInfo.AddQueryParameter(QuerySerializationMethod.ToString, null, "&ba r="); requestInfo.AddQueryParameter(QuerySerializationMethod.ToString, null, "?yay?"); requestInfo.AddQueryParameter(QuerySerializationMethod.ToString, string.Empty, "?baz"); var uri = this.requester.ConstructUri(null, "foo", requestInfo); Assert.Equal("http://api.example.com/base/foo?%26ba+r%3d&%3fyay%3f&=%3fbaz", uri.ToString(), ignoreCase: true); }
public void IgnoresNullQueryParamsWhenUsingToString() { var requestInfo = new RequestInfo(HttpMethod.Get, null); requestInfo.AddQueryParameter<object>(QuerySerializationMethod.ToString, "bar", null); var uri = this.requester.ConstructUri("/foo", requestInfo); Assert.Equal(new Uri("http://api.example.com/base/foo"), uri); }
public void ConstructsUriCombiningExistingAndGivenParams() { var requestInfo = new RequestInfo(HttpMethod.Get, null); requestInfo.AddQueryParameter(QuerySerializationMethod.ToString, "bar", "baz"); var uri = this.requester.ConstructUri("/foo?a=yay", requestInfo); Assert.Equal(new Uri("http://api.example.com/base/foo?a=yay&bar=baz"), uri); }
public void ThrowsIfSerializedSerializationMethodUsedButNoRequestQueryParamSerializerSet() { var requestInfo = new RequestInfo(HttpMethod.Get, null); requestInfo.AddQueryParameter(QuerySerializationMethod.Serialized, "bar", "boom"); this.requester.RequestQueryParamSerializer = null; Assert.Throws <InvalidOperationException>(() => this.requester.ConstructUri(null, "/foo", requestInfo)); }
public void EncodesUsingQueryEncoding() { var requestInfo = new RequestInfo(HttpMethod.Get, null); requestInfo.AddQueryParameter(QuerySerializationMethod.ToString, "fo o", "a ?b/c"); var uri = this.requester.ConstructUri(null, "foo", requestInfo); Assert.Equal("http://api.example.com/base/foo?fo+o=a+%3fb%2fc", uri.ToString(), ignoreCase: true); }
public void IgnoresNullQueryParamsWhenUsingToString() { var requestInfo = new RequestInfo(HttpMethod.Get, null); requestInfo.AddQueryParameter <object>(QuerySerializationMethod.ToString, "bar", null); var uri = this.requester.ConstructUri(null, "/foo", requestInfo); Assert.Equal(new Uri("http://api.example.com/base/foo"), uri); }
public void ConstructsUriCombiningExistingAndGivenParams() { var requestInfo = new RequestInfo(HttpMethod.Get, null); requestInfo.AddQueryParameter(QuerySerializationMethod.ToString, "bar", "baz"); var uri = this.requester.ConstructUri(null, "/foo?a=yay", requestInfo); Assert.Equal(new Uri("http://api.example.com/base/foo?a=yay&bar=baz"), uri); }
public void DoesNotIncludeQueryPropertyIfNull() { var requestInfo = new RequestInfo(HttpMethod.Get, null); requestInfo.AddQueryProperty <string>(QuerySerializationMethod.ToString, "foo", null); requestInfo.AddQueryParameter(QuerySerializationMethod.ToString, "foo", "baz"); var uri = this.requester.ConstructUri(null, "foo", requestInfo); Assert.Equal("http://api.example.com/base/foo?foo=baz", uri.ToString(), ignoreCase: true); }
public void UsesQueryPropertiesAsWellAsQueryParameters() { var requestInfo = new RequestInfo(HttpMethod.Get, null); requestInfo.AddQueryProperty(QuerySerializationMethod.ToString, "foo", "bar"); requestInfo.AddQueryParameter(QuerySerializationMethod.ToString, "foo", "baz"); var uri = this.requester.ConstructUri(null, "foo", requestInfo); Assert.Equal("http://api.example.com/base/foo?foo=baz&foo=bar", uri.ToString(), ignoreCase: true); }
public void HandlesUnicodeCharacters() { var requestInfo = new RequestInfo(HttpMethod.Get, null); requestInfo.AddQueryParameter(QuerySerializationMethod.ToString, "key", "héllo"); var uri = this.requester.ConstructUri(null, "foo", requestInfo); Assert.Equal("http://api.example.com/base/foo?key=héllo", uri.ToString(), ignoreCase: true); Assert.Equal("http://api.example.com/base/foo?key=h%C3%A9llo", uri.AbsoluteUri.ToString(), ignoreCase: true); }
public void PrependsRawQueryStringWithQueryParams() { var requestInfo = new RequestInfo(HttpMethod.Get, null); requestInfo.AddRawQueryParameter("foo=bar&baz=woo"); requestInfo.AddQueryParameter(QuerySerializationMethod.ToString, "a", "&b"); var uri = this.requester.ConstructUri(null, "a", requestInfo); Assert.Equal("http://api.example.com/base/a?foo=bar&baz=woo&a=%26b", uri.ToString(), ignoreCase: true); }
public void CallsToStringWithFormatParameterIfGivenForToStringSerializationMethod() { var requestInfo = new RequestInfo(HttpMethod.Get, null); var objectMock = new Mock <IFormattable>(); objectMock.Setup(x => x.ToString("D3", null)).Returns("BOOM").Verifiable(); requestInfo.AddQueryParameter(QuerySerializationMethod.ToString, "bar", objectMock.Object, "D3"); var uri = this.requester.ConstructUri(null, "/foo", requestInfo); objectMock.VerifyAll(); Assert.Equal(new Uri("http://api.example.com/base/foo?bar=BOOM"), uri); }
public void DoesNotThrowIfRequestQueryParamSerializerReturnsNull() { var serializer = new Mock <RequestQueryParamSerializer>(); serializer.Setup(x => x.SerializeQueryParam("name", "value", new RequestQueryParamSerializerInfo())).Returns((IEnumerable <KeyValuePair <string, string> >)null); var requestInfo = new RequestInfo(HttpMethod.Get, null); requestInfo.AddQueryParameter(QuerySerializationMethod.Serialized, "name", "value"); this.requester.RequestQueryParamSerializer = serializer.Object; var uri = this.requester.ConstructUri(null, "foo", requestInfo); Assert.Equal(new Uri("http://api.example.com/base/foo"), uri); }
public void DoesNotIgnoreNullQueryParamsWhenUsingSerializer() { var requestInfo = new RequestInfo(HttpMethod.Get, null); requestInfo.AddQueryParameter<object>(QuerySerializationMethod.Serialized, "bar", null); var queryParameterSerializer = new Mock<IRequestQueryParamSerializer>(); queryParameterSerializer.Setup(x => x.SerializeQueryParam<object>("bar", null)) .Returns(new[] { new KeyValuePair<string, string>("bar", "foo") }) .Verifiable(); this.requester.RequestQueryParamSerializer = queryParameterSerializer.Object; var uri = this.requester.ConstructUri("/foo", requestInfo); Assert.Equal(new Uri("http://api.example.com/base/foo?bar=foo"), uri); queryParameterSerializer.VerifyAll(); }
public void PassesFormatWhenSerializing() { var obj = new HasToString(); var requestInfo = new RequestInfo(HttpMethod.Get, null); requestInfo.AddQueryParameter(QuerySerializationMethod.Serialized, "bar", obj, "D3"); var serializer = new Mock <RequestQueryParamSerializer>(); serializer.Setup(x => x.SerializeQueryParam <HasToString>("bar", obj, new RequestQueryParamSerializerInfo(requestInfo, "D3"))).Returns(new[] { new KeyValuePair <string, string>("bar", "BOOMYAY") }).Verifiable(); this.requester.RequestQueryParamSerializer = serializer.Object; var uri = this.requester.ConstructUri("/foo", requestInfo); serializer.VerifyAll(); }
public void SerializesUsingSerializerForSerializedSerializationMethod() { var obj = new HasToString(); var requestInfo = new RequestInfo(HttpMethod.Get, null); requestInfo.AddQueryParameter(QuerySerializationMethod.Serialized, "bar", obj); var serializer = new Mock <IRequestQueryParamSerializer>(); serializer.Setup(x => x.SerializeQueryParam <HasToString>("bar", obj)).Returns(new[] { new KeyValuePair <string, string>("bar", "BOOMYAY") }).Verifiable(); this.requester.RequestQueryParamSerializer = serializer.Object; var uri = this.requester.ConstructUri("/foo", requestInfo); serializer.VerifyAll(); Assert.Equal(new Uri("http://api.example.com/base/foo?bar=BOOMYAY"), uri); }
public void DoesNotIgnoreNullQueryParamsWhenUsingSerializer() { var requestInfo = new RequestInfo(HttpMethod.Get, null); requestInfo.AddQueryParameter <object>(QuerySerializationMethod.Serialized, "bar", null); var queryParameterSerializer = new Mock <RequestQueryParamSerializer>(); queryParameterSerializer.Setup(x => x.SerializeQueryParam <object>("bar", null, It.IsAny <RequestQueryParamSerializerInfo>())) .Returns(new[] { new KeyValuePair <string, string>("bar", "foo") }) .Verifiable(); this.requester.RequestQueryParamSerializer = queryParameterSerializer.Object; var uri = this.requester.ConstructUri(null, "/foo", requestInfo); Assert.Equal(new Uri("http://api.example.com/base/foo?bar=foo"), uri); queryParameterSerializer.VerifyAll(); }
public void CallsToStringForToStringSerializationMethod() { var requestInfo = new RequestInfo(HttpMethod.Get, null); var objectMock = new Mock<HasToString>(); objectMock.Setup(x => x.ToString()).Returns("BOOM").Verifiable(); requestInfo.AddQueryParameter(QuerySerializationMethod.ToString, "bar", objectMock.Object); var uri = this.requester.ConstructUri("/foo", requestInfo); objectMock.VerifyAll(); Assert.Equal(new Uri("http://api.example.com/base/foo?bar=BOOM"), uri); }
public void SerializesUsingSerializerForSerializedSerializationMethod() { var obj = new HasToString(); var requestInfo = new RequestInfo(HttpMethod.Get, null); requestInfo.AddQueryParameter(QuerySerializationMethod.Serialized, "bar", obj); var serializer = new Mock<IRequestQueryParamSerializer>(); serializer.Setup(x => x.SerializeQueryParam<HasToString>("bar", obj)).Returns(new[] { new KeyValuePair<string, string>("bar", "BOOMYAY") }).Verifiable(); this.requester.RequestQueryParamSerializer = serializer.Object; var uri = this.requester.ConstructUri("/foo", requestInfo); serializer.VerifyAll(); Assert.Equal(new Uri("http://api.example.com/base/foo?bar=BOOMYAY"), uri); }
public void ConstructsUriWithPreservedDuplicateGivenParams() { var requestInfo = new RequestInfo(HttpMethod.Get, null); requestInfo.AddQueryParameter(QuerySerializationMethod.ToString, "bar", "baz"); requestInfo.AddQueryParameter(QuerySerializationMethod.ToString, "bar", "baz2"); var uri = this.requester.ConstructUri("/foo", requestInfo); Assert.Equal(new Uri("http://api.example.com/base/foo?bar=baz&bar=baz2"), uri); }
public void ThrowsIfSerializedSerializationMethodUsedButNoRequestQueryParamSerializerSet() { var requestInfo = new RequestInfo(HttpMethod.Get, null); requestInfo.AddQueryParameter(QuerySerializationMethod.Serialized, "bar", "boom"); this.requester.RequestQueryParamSerializer = null; Assert.Throws<InvalidOperationException>(() => this.requester.ConstructUri("/foo", requestInfo)); }