// Copyright (c) .NET Foundation. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System.Collections.Generic; using System.IO; using System.Text.Encodings.Web; using System.Threading.Tasks; using Microsoft.AspNetCore.Http; using Xunit; namespace Microsoft.AspNetCore.Identity.Service { public class FormPostResponseGeneratorTest { [Fact] public async Task GenerateResponse_EncodesParameters_OnAnAutoPostedForm() { // Arrange var expectedBody = @" Please wait while you're being redirected to the identity provider
"; var httpContext = new DefaultHttpContext(); httpContext.Response.Body = new MemoryStream(); var generator = new FormPostResponseGenerator(HtmlEncoder.Default); var redirectUri = "http://www.example.com/callback"; var response = new Dictionary { ["state"] = "<>&", ["code"] = "serializedcode" }; // Act await generator.GenerateResponseAsync(httpContext, redirectUri, response); // Assert Assert.Equal(StatusCodes.Status200OK, httpContext.Response.StatusCode); Assert.Equal("text/html; charset=utf-8", httpContext.Response.ContentType); var body = httpContext.Response.Body; body.Seek(0, SeekOrigin.Begin); var bodyText = await new StreamReader(body).ReadToEndAsync(); Assert.Equal(expectedBody, bodyText); } } }