/// <summary> /// Initializes a new instance of the <see cref="FormUrlEncodedMediaTypeFormatter"/> class. /// </summary> /// <param name="formatter">The <see cref="FormUrlEncodedMediaTypeFormatter"/> instance to copy settings from.</param> protected FormUrlEncodedMediaTypeFormatter(FormUrlEncodedMediaTypeFormatter formatter) : base(formatter) { MaxDepth = formatter.MaxDepth; ReadBufferSize = formatter.ReadBufferSize; _isDerived = GetType() != typeof(FormUrlEncodedMediaTypeFormatter); }
/// <summary> /// Initializes a new instance of the <see cref="FormUrlEncodedMediaTypeFormatter"/> class. /// </summary> /// <param name="formatter">The <see cref="FormUrlEncodedMediaTypeFormatter"/> instance to copy settings from.</param> protected FormUrlEncodedMediaTypeFormatter(FormUrlEncodedMediaTypeFormatter formatter) : base(formatter) { MaxDepth = formatter.MaxDepth; ReadBufferSize = formatter.ReadBufferSize; _isDerived = GetType() != typeof(FormUrlEncodedMediaTypeFormatter); }
public void FormUrlEncodedFormatter_SetByCtor() { FormUrlEncodedMediaTypeFormatter formatter = new FormUrlEncodedMediaTypeFormatter(); MediaTypeFormatterCollection collection = new MediaTypeFormatterCollection(new MediaTypeFormatter[] { formatter }); Assert.Same(formatter, collection.FormUrlEncodedFormatter); }
public void WriteToStreamAsyncThrowsNotImplemented() { FormUrlEncodedMediaTypeFormatter formatter = new FormUrlEncodedMediaTypeFormatter(); Assert.Throws <NotSupportedException>( () => formatter.WriteToStreamAsync(typeof(object), new object(), Stream.Null, null, null), "The media type formatter of type 'FormUrlEncodedMediaTypeFormatter' does not support writing because it does not implement the WriteToStreamAsync method."); }
private async Task<object> ParseToObject(Type type, IEnumerable<KeyValuePair<string, string>> pairs) { var content = new FormUrlEncodedContent(pairs); var formatter = new FormUrlEncodedMediaTypeFormatter(); var stream = await content.ReadAsStreamAsync(); var jtoken = await formatter.ReadFromStreamAsync(typeof(JToken), stream, content, this._logger) as JToken; return jtoken.ToObject(type); }
public FormUrlEncodedMediaTypeFormatterTracer(FormUrlEncodedMediaTypeFormatter innerFormatter, ITraceWriter traceWriter, HttpRequestMessage request) { _innerTracer = new MediaTypeFormatterTracer(innerFormatter, traceWriter, request); // copy non-overridable members from inner formatter _innerTracer.CopyNonOverriableMembersFromInner(this); MaxDepth = innerFormatter.MaxDepth; ReadBufferSize = innerFormatter.ReadBufferSize; }
public void Constructor(MediaTypeHeaderValue mediaType) { FormUrlEncodedMediaTypeFormatter formatter = new FormUrlEncodedMediaTypeFormatter(); Assert.True( formatter.SupportedMediaTypes.Contains(mediaType), String.Format("SupportedMediaTypes should have included {0}.", mediaType.ToString()) ); }
public void ReadBufferSize_Uses_Inners() { // Arrange HttpRequestMessage request = new HttpRequestMessage(); FormUrlEncodedMediaTypeFormatter innerFormatter = new FormUrlEncodedMediaTypeFormatter(); innerFormatter.ReadBufferSize = innerFormatter.ReadBufferSize + 1; FormUrlEncodedMediaTypeFormatterTracer tracer = new FormUrlEncodedMediaTypeFormatterTracer(innerFormatter, new TestTraceWriter(), request); // Act & Assert Assert.Equal(innerFormatter.ReadBufferSize, tracer.ReadBufferSize); }
public void MaxDepth_Uses_Inners() { // Arrange HttpRequestMessage request = new HttpRequestMessage(); FormUrlEncodedMediaTypeFormatter innerFormatter = new FormUrlEncodedMediaTypeFormatter(); innerFormatter.MaxDepth = innerFormatter.MaxDepth + 1; FormUrlEncodedMediaTypeFormatterTracer tracer = new FormUrlEncodedMediaTypeFormatterTracer(innerFormatter, new TestTraceWriter(), request); // Act & Assert Assert.Equal(innerFormatter.MaxDepth, tracer.MaxDepth); }
public void SupportEncodings_ValuesAreNotSharedBetweenInstances() { var formatter1 = new FormUrlEncodedMediaTypeFormatter(); var formatter2 = new FormUrlEncodedMediaTypeFormatter(); foreach (Encoding encoding1 in formatter1.SupportedEncodings) { Encoding encoding2 = formatter2.SupportedEncodings.Single(e => e.Equals(encoding1)); Assert.NotSame(encoding1, encoding2); } }
public void SupportEncodings_ValuesAreNotSharedBetweenInstances() { var formatter1 = new FormUrlEncodedMediaTypeFormatter(); var formatter2 = new FormUrlEncodedMediaTypeFormatter(); foreach (Encoding encoding1 in formatter1.SupportedEncodings) { Encoding encoding2 = formatter2.SupportedEncodings.Single(e => e.Equals(encoding1)); Assert.NotSame(encoding1, encoding2); } }
public void SupportedMediaTypes_HeaderValuesAreNotSharedBetweenInstances() { var formatter1 = new FormUrlEncodedMediaTypeFormatter(); var formatter2 = new FormUrlEncodedMediaTypeFormatter(); foreach (MediaTypeHeaderValue mediaType1 in formatter1.SupportedMediaTypes) { MediaTypeHeaderValue mediaType2 = formatter2.SupportedMediaTypes.Single(m => m.Equals(mediaType1)); Assert.NotSame(mediaType1, mediaType2); } }
public void SupportedMediaTypes_HeaderValuesAreNotSharedBetweenInstances() { var formatter1 = new FormUrlEncodedMediaTypeFormatter(); var formatter2 = new FormUrlEncodedMediaTypeFormatter(); foreach (MediaTypeHeaderValue mediaType1 in formatter1.SupportedMediaTypes) { MediaTypeHeaderValue mediaType2 = formatter2.SupportedMediaTypes.Single(m => m.Equals(mediaType1)); Assert.NotSame(mediaType1, mediaType2); } }
public void ReadDeeplyNestedObjectThrows() { FormUrlEncodedMediaTypeFormatter formatter = new FormUrlEncodedMediaTypeFormatter() { MaxDepth = 100 }; StringContent content = new StringContent(GetDeeplyNestedObject(125)); content.Headers.ContentType = new MediaTypeHeaderValue("application/x-www-form-urlencoded"); Assert.ThrowsArgument( () => formatter.ReadFromStreamAsync(typeof(JToken), content.ReadAsStreamAsync().Result, content.Headers, null).Result, null); }
public void Decorator_GetInner_On_FormUrlEncodedMediaTypeFormatterTracer_Returns_FormUrlEncodedMediaTypeFormatter() { // Arrange FormUrlEncodedMediaTypeFormatter expectedInner = new FormUrlEncodedMediaTypeFormatter(); FormUrlEncodedMediaTypeFormatterTracer productUnderTest = new FormUrlEncodedMediaTypeFormatterTracer(expectedInner, new TestTraceWriter(), new HttpRequestMessage()); // Act FormUrlEncodedMediaTypeFormatter actualInner = Decorator.GetInner(productUnderTest as FormUrlEncodedMediaTypeFormatter); // Assert Assert.Same(expectedInner, actualInner); }
public void ReadDeeplyNestedObjectThrows() { FormUrlEncodedMediaTypeFormatter formatter = new FormUrlEncodedMediaTypeFormatter() { MaxDepth = 100 }; StringContent content = new StringContent(GetDeeplyNestedObject(125)); content.Headers.ContentType = new MediaTypeHeaderValue("application/x-www-form-urlencoded"); Assert.ThrowsArgument( () => formatter.ReadFromStreamAsync(typeof(JToken), content.ReadAsStreamAsync().Result, content.Headers, null).Result, null); }
public void ReadDeeplyNestedObjectWithBigDepthQuotaWorks() { FormUrlEncodedMediaTypeFormatter formatter = new FormUrlEncodedMediaTypeFormatter() { MaxDepth = 150 }; StringContent content = new StringContent(GetDeeplyNestedObject(125)); content.Headers.ContentType = new MediaTypeHeaderValue("application/x-www-form-urlencoded"); JToken result = (JToken)formatter.ReadFromStreamAsync(typeof(JToken), content.ReadAsStreamAsync().Result, content.Headers, null).Result; Assert.NotNull(result); }
public async Task ReadDeeplyNestedObjectThrows() { FormUrlEncodedMediaTypeFormatter formatter = new FormUrlEncodedMediaTypeFormatter() { MaxDepth = 100 }; StringContent content = new StringContent(GetDeeplyNestedObject(125)); content.Headers.ContentType = new MediaTypeHeaderValue("application/x-www-form-urlencoded"); var contentStream = await content.ReadAsStreamAsync(); await Assert.ThrowsAsync <ArgumentException>( () => formatter.ReadFromStreamAsync(typeof(JToken), contentStream, content, null)); }
/// <summary> /// 创建MediaTypeFormatter /// </summary> /// <param name="mediaType"></param> /// <returns></returns> private MediaTypeFormatter CreateMediaTypeFormatter(string mediaType = MediaType.json) { MediaTypeFormatter mediaTypeFormatter = null; switch (mediaType) { case MediaType.form: mediaTypeFormatter = new FormUrlEncodedMediaTypeFormatter(); break; case MediaType.xml: mediaTypeFormatter = new XmlMediaTypeFormatter(); break; case MediaType.json: default: mediaTypeFormatter = new JsonMediaTypeFormatter(); break; } return mediaTypeFormatter; }
public void Constructor(MediaTypeHeaderValue mediaType) { FormUrlEncodedMediaTypeFormatter formatter = new FormUrlEncodedMediaTypeFormatter(); Assert.True(formatter.SupportedMediaTypes.Contains(mediaType), String.Format("SupportedMediaTypes should have included {0}.", mediaType.ToString())); }
public void WriteToStreamAsyncThrowsNotImplemented() { FormUrlEncodedMediaTypeFormatter formatter = new FormUrlEncodedMediaTypeFormatter(); Assert.Throws<NotSupportedException>( () => formatter.WriteToStreamAsync(typeof(object), new object(), Stream.Null, null, null), "The media type formatter of type 'FormUrlEncodedMediaTypeFormatter' does not support writing because it does not implement the WriteToStreamAsync method."); }
public void ReadDeeplyNestedObjectWithBigDepthQuotaWorks() { FormUrlEncodedMediaTypeFormatter formatter = new FormUrlEncodedMediaTypeFormatter() { MaxDepth = 150 }; StringContent content = new StringContent(GetDeeplyNestedObject(125)); content.Headers.ContentType = new MediaTypeHeaderValue("application/x-www-form-urlencoded"); JToken result = (JToken)formatter.ReadFromStreamAsync(typeof(JToken), content.ReadAsStreamAsync().Result, content, null).Result; Assert.NotNull(result); }
public void Negotiate_Returns_Wrapped_Inner_FormUrlEncodedFormatter() { // Arrange MediaTypeFormatter expectedFormatter = new FormUrlEncodedMediaTypeFormatter(); _mockNegotiator.Setup( n => n.Negotiate(It.IsAny<Type>(), It.IsAny<HttpRequestMessage>(), It.IsAny<IEnumerable<MediaTypeFormatter>>())).Returns( new ContentNegotiationResult(expectedFormatter, null)); // Act var result = ((IContentNegotiator)_tracer).Negotiate(typeof(int), _request, new MediaTypeFormatter[0]); // Assert Assert.IsType<FormUrlEncodedMediaTypeFormatterTracer>(result.Formatter); }
public void FormUrlEncodedFormatter_SetByCtor() { FormUrlEncodedMediaTypeFormatter formatter = new FormUrlEncodedMediaTypeFormatter(); MediaTypeFormatterCollection collection = new MediaTypeFormatterCollection(new MediaTypeFormatter[] { formatter }); Assert.Same(formatter, collection.FormUrlEncodedFormatter); }