public async Task ExecuteResult_UsesEncoderIfSpecified() { // Arrange var expected = Enumerable.Concat(Encoding.UTF8.GetPreamble(), _abcdUTF8Bytes); var memoryStream = new MemoryStream(); var response = new Mock<HttpResponse>(); response.SetupGet(r => r.Body) .Returns(memoryStream); var context = new Mock<HttpContext>(); context.SetupGet(c => c.Response) .Returns(response.Object); var actionContext = new ActionContext(context.Object, new RouteData(), new ActionDescriptor()); var result = new JsonResult(new { foo = "abcd" }) { Encoding = Encoding.UTF8 }; // Act await result.ExecuteResultAsync(actionContext); // Assert Assert.Equal(expected, memoryStream.ToArray()); }
public async Task ExecuteResultAsync_UsesPassedInFormatter() { // Arrange var expected = Enumerable.Concat(Encoding.UTF8.GetPreamble(), _abcdUTF8Bytes); var context = GetHttpContext(); var actionContext = new ActionContext(context, new RouteData(), new ActionDescriptor()); var formatter = new JsonOutputFormatter(); formatter.SupportedEncodings.Clear(); // This is UTF-8 WITH BOM formatter.SupportedEncodings.Add(Encoding.UTF8); var result = new JsonResult(new { foo = "abcd" }, formatter); // Act await result.ExecuteResultAsync(actionContext); var written = GetWrittenBytes(context); // Assert Assert.Equal(expected, written); Assert.Equal("application/json; charset=utf-8", context.Response.ContentType); }
public async Task ExecuteResultAsync_Null() { // Arrange var expected = _abcdUTF8Bytes; var optionsFormatters = new List <IOutputFormatter>() { Mock.Of <IOutputFormatter>(), // This won't be used new JsonOutputFormatter(), }; var context = GetHttpContext(optionsFormatters); var actionContext = new ActionContext(context, new RouteData(), new ActionDescriptor()); var result = new JsonResult(new { foo = "abcd" }); // Act await result.ExecuteResultAsync(actionContext); var written = GetWrittenBytes(context); // Assert Assert.Equal(expected, written); Assert.Equal("application/json; charset=utf-8", context.Response.ContentType); }
public async Task ExecuteResult_UsesEncoderIfSpecified() { // Arrange var expected = Enumerable.Concat(Encoding.UTF8.GetPreamble(), _abcdUTF8Bytes); var memoryStream = new MemoryStream(); var response = new Mock <HttpResponse>(); response.SetupGet(r => r.Body) .Returns(memoryStream); var context = new Mock <HttpContext>(); context.SetupGet(c => c.Response) .Returns(response.Object); var actionContext = new ActionContext(context.Object, new RouteData(), new ActionDescriptor()); var result = new JsonResult(new { foo = "abcd" }) { Encoding = Encoding.UTF8 }; // Act await result.ExecuteResultAsync(actionContext); // Assert Assert.Equal(expected, memoryStream.ToArray()); }
public async Task ExecuteResult_IfNoMatchFoundUsesPassedInFormatter() { // Arrange var expected = Enumerable.Concat(Encoding.UTF8.GetPreamble(), _abcdUTF8Bytes); var memoryStream = new MemoryStream(); var response = new Mock <HttpResponse>(); response.SetupGet(r => r.Body) .Returns(memoryStream); var context = GetHttpContext(response.Object, registerDefaultFormatter: false); var actionContext = new ActionContext(context, new RouteData(), new ActionDescriptor()); var testFormatter = new TestJsonFormatter() { Encoding = Encoding.UTF8 }; var result = new JsonResult(new { foo = "abcd" }, testFormatter); // Act await result.ExecuteResultAsync(actionContext); // Assert Assert.Equal(expected, memoryStream.ToArray()); }
public async Task ExecuteResultAsync_UsesPassedInFormatter_ContentTypeSpecified() { // Arrange var expected = _abcdUTF8Bytes; var context = GetHttpContext(); var actionContext = new ActionContext(context, new RouteData(), new ActionDescriptor()); var formatter = new JsonOutputFormatter(); formatter.SupportedMediaTypes.Add(MediaTypeHeaderValue.Parse("application/hal+json")); var result = new JsonResult(new { foo = "abcd" }, formatter); result.ContentTypes.Add(MediaTypeHeaderValue.Parse("application/hal+json")); // Act await result.ExecuteResultAsync(actionContext); var written = GetWrittenBytes(context); // Assert Assert.Equal(expected, written); Assert.Equal("application/hal+json; charset=utf-8", context.Response.ContentType); }
public async Task ExecuteResultAsync_OptionsFormatter_Conneg() { // Arrange var expected = _abcdUTF8Bytes; var optionsFormatters = new List<IOutputFormatter>() { new XmlDataContractSerializerOutputFormatter(), // This won't be used new JsonOutputFormatter(), }; var context = GetHttpContext(optionsFormatters); context.Request.Headers["Accept"] = "text/json"; var actionContext = new ActionContext(context, new RouteData(), new ActionDescriptor()); var result = new JsonResult(new { foo = "abcd" }); // Act await result.ExecuteResultAsync(actionContext); var written = GetWrittenBytes(context); // Assert Assert.Equal(expected, written); Assert.Equal("text/json; charset=utf-8", context.Response.ContentType); }
public override Task ExecuteResultAsync(ActionContext context) { if (StatusCode.HasValue) { context.HttpContext.Response.StatusCode = StatusCode.Value; } var json = new JsonResult(this); return json.ExecuteResultAsync(context); }
public override Task ExecuteResultAsync(ActionContext context) { if (StatusCode.HasValue) { context.HttpContext.Response.StatusCode = StatusCode.Value; } var json = new JsonResult(this); return(json.ExecuteResultAsync(context)); }
public async Task ExecuteAsync_WritesJsonContent() { // Arrange var value = new { foo = "abcd" }; var expected = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(value)); var context = GetActionContext(); var result = new JsonResult(value); // Act await result.ExecuteResultAsync(context); // Assert var written = GetWrittenBytes(context.HttpContext); Assert.Equal(expected, written); Assert.Equal("application/json; charset=utf-8", context.HttpContext.Response.ContentType); }
public async Task ExecuteResultAsync_UsesDefaultContentType_IfNoContentTypeSpecified() { // Arrange var expected = _abcdUTF8Bytes; var context = GetHttpContext(); var actionContext = new ActionContext(context, new RouteData(), new ActionDescriptor()); var result = new JsonResult(new { foo = "abcd" }); // Act await result.ExecuteResultAsync(actionContext); var written = GetWrittenBytes(context); // Assert Assert.Equal(expected, written); Assert.Equal("application/json; charset=utf-8", context.Response.ContentType); }
public async Task ExecuteResultAsync_UsesGlobalFormatter_IfNoFormatterIsConfigured() { // Arrange var expected = _abcdUTF8Bytes; var context = GetHttpContext(enableFallback: true); var actionContext = new ActionContext(context, new RouteData(), new ActionDescriptor()); var result = new JsonResult(new { foo = "abcd" }); // Act await result.ExecuteResultAsync(actionContext); var written = GetWrittenBytes(context); // Assert Assert.Equal(expected, written); Assert.Equal("application/json; charset=utf-8", context.Response.ContentType); }
public async Task ExecuteAsync_WritesJsonContent() { // Arrange var value = new { foo = "abcd" }; var expected = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(value)); var context = GetActionContext(); var result = new JsonResult(value); // Act await result.ExecuteResultAsync(context); // Assert var written = GetWrittenBytes(context.HttpContext); Assert.Equal(expected, written); Assert.Equal("application/json; charset=utf-8", context.HttpContext.Response.ContentType); }
public async Task ExecuteResultAsync_UsesDefaultContentType_IfNoContentTypeSpecified() { // Arrange var expected = _abcdUTF8Bytes; var context = GetHttpContext(); var actionContext = new ActionContext(context, new RouteData(), new ActionDescriptor()); var result = new JsonResult(new { foo = "abcd" }); // Act await result.ExecuteResultAsync(actionContext); var written = GetWrittenBytes(context); // Assert Assert.Equal(expected, written); Assert.Equal("application/json; charset=utf-8", context.Response.ContentType); }
public async Task ExecuteResultAsync_NullEncoding_SetsContentTypeAndDefaultEncoding() { // Arrange var expected = _abcdUTF8Bytes; var context = GetHttpContext(); var actionContext = new ActionContext(context, new RouteData(), new ActionDescriptor()); var result = new JsonResult(new { foo = "abcd" }); result.ContentType = new MediaTypeHeaderValue("text/json"); // Act await result.ExecuteResultAsync(actionContext); var written = GetWrittenBytes(context); // Assert Assert.Equal(expected, written); Assert.Equal("text/json; charset=utf-8", context.Response.ContentType); }
public async Task ExecuteResult_UsesDefaultFormatter_IfNoneIsRegistered_AndNoneIsPassed() { // Arrange var expected = _abcdUTF8Bytes; var memoryStream = new MemoryStream(); var response = new Mock <HttpResponse>(); response.SetupGet(r => r.Body) .Returns(memoryStream); var context = GetHttpContext(response.Object, registerDefaultFormatter: false); var actionContext = new ActionContext(context, new RouteData(), new ActionDescriptor()); var result = new JsonResult(new { foo = "abcd" }); // Act await result.ExecuteResultAsync(actionContext); // Assert Assert.Equal(expected, memoryStream.ToArray()); }
public async Task ExecuteResult_GeneratesResultsWithoutBOMByDefault() { // Arrange var expected = _abcdUTF8Bytes; var memoryStream = new MemoryStream(); var response = new Mock <HttpResponse>(); response.SetupGet(r => r.Body) .Returns(memoryStream); var context = GetHttpContext(response.Object); var actionContext = new ActionContext(context, new RouteData(), new ActionDescriptor()); var result = new JsonResult(new { foo = "abcd" }); // Act await result.ExecuteResultAsync(actionContext); // Assert Assert.Equal(expected, memoryStream.ToArray()); }
public async Task ExecuteResultAsync_NullEncoding_SetsContentTypeAndDefaultEncoding() { // Arrange var expected = _abcdUTF8Bytes; var context = GetHttpContext(); var actionContext = new ActionContext(context, new RouteData(), new ActionDescriptor()); var result = new JsonResult(new { foo = "abcd" }); result.ContentType = new MediaTypeHeaderValue("text/json"); // Act await result.ExecuteResultAsync(actionContext); var written = GetWrittenBytes(context); // Assert Assert.Equal(expected, written); Assert.Equal("text/json; charset=utf-8", context.Response.ContentType); }
public async Task ExecuteResult_GeneratesResultsWithoutBOMByDefault() { // Arrange var expected = _abcdUTF8Bytes; var memoryStream = new MemoryStream(); var response = new Mock<HttpResponse>(); response.SetupGet(r => r.Body) .Returns(memoryStream); var context = new Mock<HttpContext>(); context.SetupGet(c => c.Response) .Returns(response.Object); var actionContext = new ActionContext(context.Object, new RouteData(), new ActionDescriptor()); var result = new JsonResult(new { foo = "abcd" }); // Act await result.ExecuteResultAsync(actionContext); // Assert Assert.Equal(expected, memoryStream.ToArray()); }
public async Task ExecuteResultAsync_UsesPassedInSerializerSettings() { // Arrange var expected = AbcdIndentedUTF8Bytes; var context = GetHttpContext(); var actionContext = new ActionContext(context, new RouteData(), new ActionDescriptor()); var serializerSettings = new JsonSerializerSettings(); serializerSettings.Formatting = Formatting.Indented; var result = new JsonResult(new { foo = "abcd" }, serializerSettings); // Act await result.ExecuteResultAsync(actionContext); var written = GetWrittenBytes(context); // Assert Assert.Equal(expected, written); Assert.Equal("application/json; charset=utf-8", context.Response.ContentType); }
public async Task ExecuteResultAsync_Null() { // Arrange var expected = _abcdUTF8Bytes; var optionsFormatters = new List<IOutputFormatter>() { new XmlDataContractSerializerOutputFormatter(), // This won't be used new JsonOutputFormatter(), }; var context = GetHttpContext(optionsFormatters); var actionContext = new ActionContext(context, new RouteData(), new ActionDescriptor()); var result = new JsonResult(new { foo = "abcd" }); // Act await result.ExecuteResultAsync(actionContext); var written = GetWrittenBytes(context); // Assert Assert.Equal(expected, written); Assert.Equal("application/json; charset=utf-8", context.Response.ContentType); }
public async Task ExecuteResultAsync_UsesGlobalFormatter_IfNoFormatterIsConfigured() { // Arrange var expected = _abcdUTF8Bytes; var context = GetHttpContext(enableFallback: true); var actionContext = new ActionContext(context, new RouteData(), new ActionDescriptor()); var result = new JsonResult(new { foo = "abcd" }); // Act await result.ExecuteResultAsync(actionContext); var written = GetWrittenBytes(context); // Assert Assert.Equal(expected, written); Assert.Equal("application/json; charset=utf-8", context.Response.ContentType); }
public async Task ExecuteResultAsync_UsesPassedInSerializerSettings() { // Arrange var expected = AbcdIndentedUTF8Bytes; var context = GetHttpContext(); var actionContext = new ActionContext(context, new RouteData(), new ActionDescriptor()); var serializerSettings = new JsonSerializerSettings(); serializerSettings.Formatting = Formatting.Indented; var result = new JsonResult(new { foo = "abcd" }, serializerSettings); // Act await result.ExecuteResultAsync(actionContext); var written = GetWrittenBytes(context); // Assert Assert.Equal(expected, written); Assert.Equal("application/json; charset=utf-8", context.Response.ContentType); }
public async Task ExecuteResultAsync_UsesPassedInFormatter_ContentTypeSpecified() { // Arrange var expected = _abcdUTF8Bytes; var context = GetHttpContext(); var actionContext = new ActionContext(context, new RouteData(), new ActionDescriptor()); var formatter = new JsonOutputFormatter(); formatter.SupportedMediaTypes.Add(MediaTypeHeaderValue.Parse("application/hal+json")); var result = new JsonResult(new { foo = "abcd" }, formatter); result.ContentTypes.Add(MediaTypeHeaderValue.Parse("application/hal+json")); // Act await result.ExecuteResultAsync(actionContext); var written = GetWrittenBytes(context); // Assert Assert.Equal(expected, written); Assert.Equal("application/hal+json; charset=utf-8", context.Response.ContentType); }
public async Task ExecuteResultAsync_UsesPassedInFormatter() { // Arrange var expected = _abcdUTF8Bytes; var context = GetHttpContext(); var actionContext = new ActionContext(context, new RouteData(), new ActionDescriptor()); var formatter = new JsonOutputFormatter(); formatter.SupportedEncodings.Clear(); // This is UTF-8 WITH BOM formatter.SupportedEncodings.Add(Encoding.UTF8); var result = new JsonResult(new { foo = "abcd" }, formatter); // Act await result.ExecuteResultAsync(actionContext); var written = GetWrittenBytes(context); // Assert Assert.Equal(expected, written); Assert.Equal("application/json; charset=utf-8", context.Response.ContentType); }
public async Task ExecuteResultAsync_OptionsFormatter_Conneg() { // Arrange var expected = _abcdUTF8Bytes; var optionsFormatters = new List<IOutputFormatter>() { Mock.Of<IOutputFormatter>(), // This won't be used new JsonOutputFormatter(), }; var context = GetHttpContext(optionsFormatters); context.Request.Headers["Accept"] = "text/json"; var actionContext = new ActionContext(context, new RouteData(), new ActionDescriptor()); var result = new JsonResult(new { foo = "abcd" }); // Act await result.ExecuteResultAsync(actionContext); var written = GetWrittenBytes(context); // Assert Assert.Equal(expected, written); Assert.Equal("text/json; charset=utf-8", context.Response.ContentType); }