86 lines
2.9 KiB
C#
86 lines
2.9 KiB
C#
// 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<Index> 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<Register> 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<Login> 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<Account.Manage.Index> 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);
|
|
}
|
|
|
|
internal async Task<Account.Manage.Index> ClickManageLinkWithExternalLoginAsync()
|
|
{
|
|
Assert.True(Context.UserAuthenticated);
|
|
|
|
var goToManage = await Client.GetAsync(_manageLink.Href);
|
|
var manage = await ResponseAssert.IsHtmlDocumentAsync(goToManage);
|
|
Context.ContosoLoginEnabled = true;
|
|
|
|
return new Account.Manage.Index(Client, manage, Context);
|
|
}
|
|
}
|
|
}
|