// 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.Net.Http; using System.Threading.Tasks; using AngleSharp.Dom.Html; using Microsoft.AspNetCore.Identity.FunctionalTests.Account; using Xunit; namespace Microsoft.AspNetCore.Identity.FunctionalTests { public class Index : DefaultUIPage { private readonly IHtmlAnchorElement _registerLink; private readonly IHtmlAnchorElement _loginLink; private readonly IHtmlAnchorElement _manageLink; public static readonly string Path = "/"; public Index( HttpClient client, IHtmlDocument index, DefaultUIContext context) : base(client, index, context) { if (!Context.UserAuthenticated) { _registerLink = HtmlAssert.HasLink("#register", Document); _loginLink = HtmlAssert.HasLink("#login", Document); } else { _manageLink = HtmlAssert.HasLink("#manage", Document); } } public static async Task CreateAsync(HttpClient client, DefaultUIContext context = null) { var goToIndex = await client.GetAsync("/"); var index = await ResponseAssert.IsHtmlDocumentAsync(goToIndex); return new Index(client, index, context ?? new DefaultUIContext()); } public async Task ClickRegisterLinkAsync() { Assert.False(Context.UserAuthenticated); var goToRegister = await Client.GetAsync(_registerLink.Href); var register = await ResponseAssert.IsHtmlDocumentAsync(goToRegister); return new Register(Client, register, Context); } public async Task ClickLoginLinkAsync() { Assert.False(Context.UserAuthenticated); var goToLogin = await Client.GetAsync(_loginLink.Href); var login = await ResponseAssert.IsHtmlDocumentAsync(goToLogin); return new Login(Client, login, Context); } internal async Task ClickManageLinkAsync() { Assert.True(Context.UserAuthenticated); var goToManage = await Client.GetAsync(_manageLink.Href); var manage = await ResponseAssert.IsHtmlDocumentAsync(goToManage); return new Account.Manage.Index(Client, manage, Context); } } }