diff --git a/test/Identity.FunctionalTests/ManagementTests.cs b/test/Identity.FunctionalTests/ManagementTests.cs index 9b888f3925..92b3e4758a 100644 --- a/test/Identity.FunctionalTests/ManagementTests.cs +++ b/test/Identity.FunctionalTests/ManagementTests.cs @@ -7,6 +7,7 @@ using System.Linq; using System.Net; using System.Security.Claims; using System.Threading.Tasks; +using AngleSharp.Dom.Html; using Identity.DefaultUI.WebSite; using Microsoft.AspNetCore.Identity.EntityFrameworkCore; using Microsoft.AspNetCore.TestHost; @@ -193,6 +194,31 @@ namespace Microsoft.AspNetCore.Identity.FunctionalTests AssertClaimsNotEqual(principals[0], principals[1], "AspNet.Identity.SecurityStamp"); } + [Fact] + public async Task CanSeeExternalLoginProviderDisplayName() + { + // Arrange + void ConfigureTestServices(IServiceCollection services) => services.SetupTestThirdPartyLogin(); + + var server = ServerFactory + .WithWebHostBuilder(whb => whb.ConfigureTestServices(ConfigureTestServices)); + + var client = server.CreateClient(); + + // Act + var userName = Guid.NewGuid().ToString(); + var email = $"{userName}@example.com"; + var index = await UserStories.RegisterNewUserWithSocialLoginAsync(client, userName, email); + var manage = await index.ClickManageLinkWithExternalLoginAsync(); + var externalLogins = await manage.ClickExternalLoginsAsync(); + + // Assert + var title = externalLogins.Document.GetElementsByTagName("h4").FirstOrDefault(e => e.TextContent == "Registered Logins"); + var table = title?.NextElementSibling as IHtmlTableElement; + var firstCell = table?.Bodies?.FirstOrDefault()?.Rows.FirstOrDefault()?.Cells?.FirstOrDefault(); + Assert.Equal("Contoso auth", firstCell?.TextContent); + } + [Fact] public async Task CanResetAuthenticator() { diff --git a/test/Identity.FunctionalTests/Pages/Account/ExternalLogin.cs b/test/Identity.FunctionalTests/Pages/Account/ExternalLogin.cs index d61120c9f8..db857070ac 100644 --- a/test/Identity.FunctionalTests/Pages/Account/ExternalLogin.cs +++ b/test/Identity.FunctionalTests/Pages/Account/ExternalLogin.cs @@ -2,9 +2,12 @@ // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System.Collections.Generic; +using System.Linq; using System.Net.Http; using System.Threading.Tasks; using AngleSharp.Dom.Html; +using AngleSharp.Extensions; +using Xunit; namespace Microsoft.AspNetCore.Identity.FunctionalTests.Account { @@ -19,6 +22,10 @@ namespace Microsoft.AspNetCore.Identity.FunctionalTests.Account : base(client, externalLogin, context) { _emailForm = HtmlAssert.HasForm(Document); + var title = externalLogin.GetElementsByTagName("h4").FirstOrDefault(e => e.TextContent.StartsWith("Associate your")); + Assert.Equal("Associate your Contoso auth account.", title?.TextContent); + var info = externalLogin.QuerySelectorAll(".text-info").FirstOrDefault(e => e.TextContent.Trim().StartsWith("You've successfully authenticated")); + Assert.StartsWith("You've successfully authenticated with Contoso auth.", info?.TextContent.Trim()); } public async Task SendEmailAsync(string email) diff --git a/test/Identity.FunctionalTests/Pages/Account/Manage/ExternalLogins.cs b/test/Identity.FunctionalTests/Pages/Account/Manage/ExternalLogins.cs new file mode 100644 index 0000000000..d1acd455bf --- /dev/null +++ b/test/Identity.FunctionalTests/Pages/Account/Manage/ExternalLogins.cs @@ -0,0 +1,13 @@ +using System.Net.Http; +using AngleSharp.Dom.Html; + +namespace Microsoft.AspNetCore.Identity.FunctionalTests.Account.Manage +{ + public class ExternalLogins : DefaultUIPage + { + public ExternalLogins(HttpClient client, IHtmlDocument externalLoginDocument, DefaultUIContext context) + : base(client, externalLoginDocument, context) + { + } + } +} \ No newline at end of file diff --git a/test/Identity.FunctionalTests/Pages/Account/Manage/Index.cs b/test/Identity.FunctionalTests/Pages/Account/Manage/Index.cs index 55ee865ba3..cde616600e 100644 --- a/test/Identity.FunctionalTests/Pages/Account/Manage/Index.cs +++ b/test/Identity.FunctionalTests/Pages/Account/Manage/Index.cs @@ -122,5 +122,13 @@ namespace Microsoft.AspNetCore.Identity.FunctionalTests.Account.Manage return new LinkExternalLogin(Client, externalLoginDocument, Context); } + + public async Task ClickExternalLoginsAsync() + { + var goToExternalLogin = await Client.GetAsync(_externalLoginLink.Href); + var externalLoginDocument = await ResponseAssert.IsHtmlDocumentAsync(goToExternalLogin); + + return new ExternalLogins(Client, externalLoginDocument, Context); + } } } diff --git a/test/WebSites/Identity.DefaultUI.WebSite/Services/ContosoAuthenticationConstants.cs b/test/WebSites/Identity.DefaultUI.WebSite/Services/ContosoAuthenticationConstants.cs index 229e80c592..27955eef3c 100644 --- a/test/WebSites/Identity.DefaultUI.WebSite/Services/ContosoAuthenticationConstants.cs +++ b/test/WebSites/Identity.DefaultUI.WebSite/Services/ContosoAuthenticationConstants.cs @@ -6,6 +6,6 @@ namespace Identity.DefaultUI.WebSite public static class ContosoAuthenticationConstants { public const string Scheme = "Contoso"; - public const string DisplayName = "Contoso"; + public const string DisplayName = "Contoso auth"; } } \ No newline at end of file