diff --git a/test/Microsoft.AspNetCore.Authentication.Test/OpenIdConnect/OpenIdConnectChallengeTests.cs b/test/Microsoft.AspNetCore.Authentication.Test/OpenIdConnect/OpenIdConnectChallengeTests.cs index bf0d9ff0e3..78f84c04f5 100644 --- a/test/Microsoft.AspNetCore.Authentication.Test/OpenIdConnect/OpenIdConnectChallengeTests.cs +++ b/test/Microsoft.AspNetCore.Authentication.Test/OpenIdConnect/OpenIdConnectChallengeTests.cs @@ -21,7 +21,7 @@ namespace Microsoft.AspNetCore.Authentication.Tests.OpenIdConnect opt => opt.AuthenticationMethod = OpenIdConnectRedirectBehavior.RedirectGet); var server = settings.CreateTestServer(); - var transaction = await TestTransaction.SendAsync(server, ChallengeEndpoint); + var transaction = await server.SendAsync(ChallengeEndpoint); var res = transaction.Response; Assert.Equal(HttpStatusCode.Redirect, res.StatusCode); @@ -62,7 +62,7 @@ namespace Microsoft.AspNetCore.Authentication.Tests.OpenIdConnect opt => opt.AuthenticationMethod = OpenIdConnectRedirectBehavior.FormPost); var server = settings.CreateTestServer(); - var transaction = await TestTransaction.SendAsync(server, ChallengeEndpoint); + var transaction = await server.SendAsync(ChallengeEndpoint); var res = transaction.Response; Assert.Equal(HttpStatusCode.OK, res.StatusCode); @@ -89,7 +89,7 @@ namespace Microsoft.AspNetCore.Authentication.Tests.OpenIdConnect properties.Items.Add(OpenIdConnectDefaults.UserstatePropertiesKey, userState); var server = TestServerBuilder.CreateServer(settings.Options, handler: null, properties: properties); - var transaction = await TestTransaction.SendAsync(server, TestServerBuilder.TestHost + TestServerBuilder.ChallengeWithProperties); + var transaction = await server.SendAsync(TestServerBuilder.TestHost + TestServerBuilder.ChallengeWithProperties); var res = transaction.Response; Assert.Equal(HttpStatusCode.Redirect, res.StatusCode); @@ -120,7 +120,7 @@ namespace Microsoft.AspNetCore.Authentication.Tests.OpenIdConnect }); var server = settings.CreateTestServer(); - var transaction = await TestTransaction.SendAsync(server, ChallengeEndpoint); + var transaction = await server.SendAsync(ChallengeEndpoint); var res = transaction.Response; Assert.Equal(HttpStatusCode.Redirect, res.StatusCode); @@ -159,7 +159,7 @@ namespace Microsoft.AspNetCore.Authentication.Tests.OpenIdConnect ); var server = settings.CreateTestServer(); - var transaction = await TestTransaction.SendAsync(server, ChallengeEndpoint); + var transaction = await server.SendAsync(ChallengeEndpoint); Assert.True(eventIsHit); @@ -198,7 +198,7 @@ namespace Microsoft.AspNetCore.Authentication.Tests.OpenIdConnect ); var server = settings.CreateTestServer(); - var transaction = await TestTransaction.SendAsync(server, ChallengeEndpoint); + var transaction = await server.SendAsync(ChallengeEndpoint); var res = transaction.Response; Assert.Equal(HttpStatusCode.Redirect, res.StatusCode); @@ -239,7 +239,7 @@ namespace Microsoft.AspNetCore.Authentication.Tests.OpenIdConnect ); var server = settings.CreateTestServer(); - var transaction = await TestTransaction.SendAsync(server, ChallengeEndpoint); + var transaction = await server.SendAsync(ChallengeEndpoint); var res = transaction.Response; Assert.Equal(HttpStatusCode.Redirect, res.StatusCode); @@ -267,7 +267,7 @@ namespace Microsoft.AspNetCore.Authentication.Tests.OpenIdConnect ); var server = settings.CreateTestServer(); - var transaction = await TestTransaction.SendAsync(server, ChallengeEndpoint); + var transaction = await server.SendAsync(ChallengeEndpoint); var res = transaction.Response; Assert.Equal(HttpStatusCode.OK, res.StatusCode); @@ -294,7 +294,7 @@ namespace Microsoft.AspNetCore.Authentication.Tests.OpenIdConnect ); var server = settings.CreateTestServer(); - var transaction = await TestTransaction.SendAsync(server, ChallengeEndpoint); + var transaction = await server.SendAsync(ChallengeEndpoint); var res = transaction.Response; Assert.Equal(HttpStatusCode.OK, res.StatusCode); @@ -306,7 +306,7 @@ namespace Microsoft.AspNetCore.Authentication.Tests.OpenIdConnect { var settings = new TestSettings(); var server = settings.CreateTestServer(); - var transaction = await TestTransaction.SendAsync(server, ChallengeEndpoint); + var transaction = await server.SendAsync(ChallengeEndpoint); var firstCookie = transaction.SetCookie.First(); Assert.Contains(OpenIdConnectDefaults.CookieNoncePrefix, firstCookie); diff --git a/test/Microsoft.AspNetCore.Authentication.Test/OpenIdConnect/OpenIdConnectMiddlewareTests.cs b/test/Microsoft.AspNetCore.Authentication.Test/OpenIdConnect/OpenIdConnectMiddlewareTests.cs index f2ea922926..959d64acea 100644 --- a/test/Microsoft.AspNetCore.Authentication.Test/OpenIdConnect/OpenIdConnectMiddlewareTests.cs +++ b/test/Microsoft.AspNetCore.Authentication.Test/OpenIdConnect/OpenIdConnectMiddlewareTests.cs @@ -36,7 +36,7 @@ namespace Microsoft.AspNetCore.Authentication.Tests.OpenIdConnect var server = setting.CreateTestServer(); - var transaction = await TestTransaction.SendAsync(server, DefaultHost + TestServerBuilder.Signout); + var transaction = await server.SendAsync(DefaultHost + TestServerBuilder.Signout); var res = transaction.Response; Assert.Equal(HttpStatusCode.Redirect, res.StatusCode); @@ -56,7 +56,7 @@ namespace Microsoft.AspNetCore.Authentication.Tests.OpenIdConnect Configuration = configuration }); - var transaction = await TestTransaction.SendAsync(server, DefaultHost + TestServerBuilder.Signout); + var transaction = await server.SendAsync(DefaultHost + TestServerBuilder.Signout); Assert.Equal(HttpStatusCode.Redirect, transaction.Response.StatusCode); Assert.Equal(configuration.EndSessionEndpoint, transaction.Response.Headers.Location.AbsoluteUri); } @@ -73,7 +73,7 @@ namespace Microsoft.AspNetCore.Authentication.Tests.OpenIdConnect PostLogoutRedirectUri = "https://example.com/logout" }); - var transaction = await TestTransaction.SendAsync(server, DefaultHost + TestServerBuilder.Signout); + var transaction = await server.SendAsync(DefaultHost + TestServerBuilder.Signout); Assert.Equal(HttpStatusCode.Redirect, transaction.Response.StatusCode); Assert.Contains(UrlEncoder.Default.Encode("https://example.com/logout"), transaction.Response.Headers.Location.AbsoluteUri); } @@ -90,7 +90,7 @@ namespace Microsoft.AspNetCore.Authentication.Tests.OpenIdConnect PostLogoutRedirectUri = "https://example.com/logout" }); - var transaction = await TestTransaction.SendAsync(server, "https://example.com/signout_with_specific_redirect_uri"); + var transaction = await server.SendAsync("https://example.com/signout_with_specific_redirect_uri"); Assert.Equal(HttpStatusCode.Redirect, transaction.Response.StatusCode); Assert.Contains(UrlEncoder.Default.Encode("http://www.example.com/specific_redirect_uri"), transaction.Response.Headers.Location.AbsoluteUri); } diff --git a/test/Microsoft.AspNetCore.Authentication.Test/OpenIdConnect/TestServerExtensions.cs b/test/Microsoft.AspNetCore.Authentication.Test/OpenIdConnect/TestServerExtensions.cs new file mode 100644 index 0000000000..a7085966a4 --- /dev/null +++ b/test/Microsoft.AspNetCore.Authentication.Test/OpenIdConnect/TestServerExtensions.cs @@ -0,0 +1,50 @@ +// 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.Linq; +using System.Net.Http; +using System.Threading.Tasks; +using System.Xml.Linq; +using Microsoft.AspNetCore.Authentication.Tests.OpenIdConnect; +using Microsoft.AspNetCore.TestHost; + +namespace Microsoft.AspNetCore.Authentication.Test.OpenIdConnect +{ + internal static class TestServerExtensions + { + public static Task SendAsync(this TestServer server, string url) + { + return SendAsync(server, url, cookieHeader: null); + } + + public static async Task SendAsync(this TestServer server, string uri, string cookieHeader) + { + var request = new HttpRequestMessage(HttpMethod.Get, uri); + if (!string.IsNullOrEmpty(cookieHeader)) + { + request.Headers.Add("Cookie", cookieHeader); + } + + var transaction = new TestTransaction + { + Request = request, + Response = await server.CreateClient().SendAsync(request), + }; + + if (transaction.Response.Headers.Contains("Set-Cookie")) + { + transaction.SetCookie = transaction.Response.Headers.GetValues("Set-Cookie").ToList(); + } + + transaction.ResponseText = await transaction.Response.Content.ReadAsStringAsync(); + if (transaction.Response.Content != null && + transaction.Response.Content.Headers.ContentType != null && + transaction.Response.Content.Headers.ContentType.MediaType == "text/xml") + { + transaction.ResponseElement = XElement.Parse(transaction.ResponseText); + } + + return transaction; + } + } +} diff --git a/test/Microsoft.AspNetCore.Authentication.Test/OpenIdConnect/TestTransaction.cs b/test/Microsoft.AspNetCore.Authentication.Test/OpenIdConnect/TestTransaction.cs index 3bbd3152b3..745c41350a 100644 --- a/test/Microsoft.AspNetCore.Authentication.Test/OpenIdConnect/TestTransaction.cs +++ b/test/Microsoft.AspNetCore.Authentication.Test/OpenIdConnect/TestTransaction.cs @@ -4,49 +4,12 @@ using System.Collections.Generic; using System.Linq; using System.Net.Http; -using System.Threading.Tasks; using System.Xml.Linq; -using Microsoft.AspNetCore.TestHost; namespace Microsoft.AspNetCore.Authentication.Tests.OpenIdConnect { internal class TestTransaction { - public static Task SendAsync(TestServer server, string url) - { - return SendAsync(server, url, cookieHeader: null); - } - - public static async Task SendAsync(TestServer server, string uri, string cookieHeader) - { - var request = new HttpRequestMessage(HttpMethod.Get, uri); - if (!string.IsNullOrEmpty(cookieHeader)) - { - request.Headers.Add("Cookie", cookieHeader); - } - - var transaction = new TestTransaction - { - Request = request, - Response = await server.CreateClient().SendAsync(request), - }; - - if (transaction.Response.Headers.Contains("Set-Cookie")) - { - transaction.SetCookie = transaction.Response.Headers.GetValues("Set-Cookie").ToList(); - } - - transaction.ResponseText = await transaction.Response.Content.ReadAsStringAsync(); - if (transaction.Response.Content != null && - transaction.Response.Content.Headers.ContentType != null && - transaction.Response.Content.Headers.ContentType.MediaType == "text/xml") - { - transaction.ResponseElement = XElement.Parse(transaction.ResponseText); - } - - return transaction; - } - public HttpRequestMessage Request { get; set; } public HttpResponseMessage Response { get; set; }