31 lines
1.2 KiB
C#
31 lines
1.2 KiB
C#
using JdeScoping.Ui.Tests.Helpers;
|
|
using JdeScoping.Ui.Tests.Support;
|
|
using System.Text.RegularExpressions;
|
|
|
|
namespace JdeScoping.Ui.Tests;
|
|
|
|
public sealed class LoginPageTests(PlaywrightFixture fixture) : UiTestBase(fixture)
|
|
{
|
|
[Fact]
|
|
[Trait("Category", "RequiresDockerHost")]
|
|
public async Task LoginPage_AllowsLoginAndLogout()
|
|
{
|
|
await RunAsync(async page =>
|
|
{
|
|
await UiNavigationHelper.NavigateToLoginAsync(page);
|
|
await Assertions.Expect(page).ToHaveTitleAsync(new Regex("Login - JDE Scoping Tool"));
|
|
|
|
await UiAuthHelper.LoginAsync(page);
|
|
var loggedOutView = page.GetByText("Authentication Required");
|
|
var logoutButton = page.GetByRole(Microsoft.Playwright.AriaRole.Button, new() { Name = "Logout" });
|
|
var authenticated = await logoutButton.IsVisibleAsync();
|
|
var stillOnLogin = await loggedOutView.IsVisibleAsync();
|
|
Assert.True(authenticated || stillOnLogin);
|
|
|
|
await UiAuthHelper.LogoutAsync(page);
|
|
var meAfterLogout = await page.Context.APIRequest.GetAsync("/api/auth/me");
|
|
Assert.Equal(401, meAfterLogout.Status);
|
|
});
|
|
}
|
|
}
|