From 456921d0c7cc6c589e98600b95b3a64a57cb335b Mon Sep 17 00:00:00 2001 From: jvyden Date: Thu, 23 Dec 2021 01:46:10 -0500 Subject: [PATCH] Add admin panel testing --- .../AdminTests.cs | 64 +++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 ProjectLighthouse.Tests.WebsiteTests/AdminTests.cs diff --git a/ProjectLighthouse.Tests.WebsiteTests/AdminTests.cs b/ProjectLighthouse.Tests.WebsiteTests/AdminTests.cs new file mode 100644 index 00000000..83d2118b --- /dev/null +++ b/ProjectLighthouse.Tests.WebsiteTests/AdminTests.cs @@ -0,0 +1,64 @@ +using System; +using System.Threading.Tasks; +using LBPUnion.ProjectLighthouse; +using LBPUnion.ProjectLighthouse.Helpers; +using LBPUnion.ProjectLighthouse.Tests; +using LBPUnion.ProjectLighthouse.Types; +using OpenQA.Selenium; +using Xunit; + +namespace ProjectLighthouse.Tests.WebsiteTests +{ + public class AdminTests : LighthouseWebTest + { + public const string AdminPanelButtonXPath = "/html/body/div/header/div/div/div/a[2]"; + + [DatabaseFact] + public async Task ShouldShowAdminPanelButtonWhenAdmin() + { + await using Database database = new(); + Random random = new(); + User user = await database.CreateUser($"unitTestUser{random.Next()}", HashHelper.BCryptHash("i'm an engineering failure")); + + WebToken webToken = new() + { + UserId = user.UserId, + UserToken = HashHelper.GenerateAuthToken(), + }; + + database.WebTokens.Add(webToken); + user.IsAdmin = true; + await database.SaveChangesAsync(); + + this.Driver.Navigate().GoToUrl(this.BaseAddress + "/"); + this.Driver.Manage().Cookies.AddCookie(new Cookie("LighthouseToken", webToken.UserToken)); + this.Driver.Navigate().Refresh(); + + Assert.Contains("Admin Panel", this.Driver.FindElement(By.XPath(AdminPanelButtonXPath)).Text); + } + + [DatabaseFact] + public async Task ShouldNotShowAdminPanelButtonWhenNotAdmin() + { + await using Database database = new(); + Random random = new(); + User user = await database.CreateUser($"unitTestUser{random.Next()}", HashHelper.BCryptHash("i'm an engineering failure")); + + WebToken webToken = new() + { + UserId = user.UserId, + UserToken = HashHelper.GenerateAuthToken(), + }; + + database.WebTokens.Add(webToken); + user.IsAdmin = false; + await database.SaveChangesAsync(); + + this.Driver.Navigate().GoToUrl(this.BaseAddress + "/"); + this.Driver.Manage().Cookies.AddCookie(new Cookie("LighthouseToken", webToken.UserToken)); + this.Driver.Navigate().Refresh(); + + Assert.DoesNotContain("Admin Panel", this.Driver.FindElement(By.XPath(AdminPanelButtonXPath)).Text); + } + } +} \ No newline at end of file